Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 116 lines 2.9 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 erlang, 6 cl, 7 libGL, 8 libGLU, 9 runtimeShell, 10 git, 11 eigen, 12 libigl, 13 nix-update-script, 14}: 15 16stdenv.mkDerivation rec { 17 pname = "wings"; 18 version = "2.4.1"; 19 20 src = fetchFromGitHub { 21 owner = "dgud"; 22 repo = "wings"; 23 tag = "v${version}"; 24 hash = "sha256-3ulWbAOtYujaymN50u7buvnBdtYMEAe8Ji3arvPUH/s="; 25 }; 26 27 nativeBuildInputs = [ git ]; 28 buildInputs = [ 29 erlang 30 cl 31 libGL 32 libGLU 33 eigen 34 libigl 35 cl 36 ]; 37 38 preBuildPhases = [ "setupDepsPhase" ]; 39 setupDepsPhase = '' 40 mkdir -p _deps/eigen _deps/libigl 41 ln -s ${eigen}/include/eigen3/* _deps/eigen/ 42 ln -s ${libigl}/include/* _deps/libigl/ 43 ln -s ${cl}/lib/erlang/lib/cl* _deps/cl 44 ''; 45 46 postPatch = '' 47 find . -type f -name "Makefile" -exec sed -i 's,-Werror ,,' {} \; 48 sed -i 's,../../wings/,../,' icons/Makefile 49 find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../../src/,' {} \; 50 find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../../e3d/,' {} \; 51 find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../../intl_tools/,' {} \; 52 find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../src/,' {} \; 53 find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../e3d/,' {} \; 54 find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../intl_tools/,' {} \; 55 echo "${version}" > version 56 ''; 57 58 makeFlags = [ 59 "TYPE=opt" 60 "WINGS_VSN=${version}" 61 ]; 62 63 preBuild = '' 64 mkdir -p priv 65 ''; 66 67 buildPhase = '' 68 runHook preBuild 69 70 make TYPE=opt WINGS_VSN=${version} 71 cd c_src 72 make 73 cd .. 74 75 runHook postBuild 76 ''; 77 78 postBuild = '' 79 test -d ebin || exit 1 80 test -d priv || exit 1 81 ''; 82 83 # I did not test the *cl* part. I added the -pa just by imitation. 84 installPhase = '' 85 runHook preInstall 86 87 mkdir -p $out/bin $out/lib/wings-${version}/ebin $out/lib/wings-${version}/priv 88 cp -R ebin/* $out/lib/wings-${version}/ebin/ 89 cp -R textures shaders plugins $out/lib/wings-${version}/ 90 cp -R priv/* $out/lib/wings-${version}/priv/ || true 91 if [ -d c_src ]; then 92 find c_src -name "*.so" -exec cp {} $out/lib/wings-${version}/priv/ \; 93 fi 94 cat << EOF > $out/bin/wings 95 #!${runtimeShell} 96 ${erlang}/bin/erl \ 97 -pa $out/lib/wings-${version}/ebin -run wings_start start_halt "$@" 98 EOF 99 chmod +x $out/bin/wings 100 101 runHook postInstall 102 ''; 103 104 passthru = { 105 updateScript = nix-update-script { }; 106 }; 107 108 meta = { 109 homepage = "https://www.wings3d.com/"; 110 description = "Subdivision modeler inspired by Nendo and Mirai from Izware"; 111 license = lib.licenses.tcltk; 112 maintainers = with lib.maintainers; [ ]; 113 platforms = lib.platforms.linux; 114 mainProgram = "wings"; 115 }; 116}