at master 4.4 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 fetchurl, 6 ant, 7 unzip, 8 makeWrapper, 9 jdk17, 10 jogl, 11 rsync, 12 ffmpeg, 13 batik, 14 stripJavaArchivesHook, 15 wrapGAppsHook3, 16 libGL, 17}: 18let 19 jdk = jdk17; 20 buildNumber = "1295"; 21 vaqua = fetchurl { 22 name = "VAqua9.jar"; 23 url = "https://violetlib.org/release/vaqua/9/VAqua9.jar"; 24 sha256 = "cd0b82df8e7434c902ec873364bf3e9a3e6bef8b59cbf42433130d71bf1a779c"; 25 }; 26 27 jna = fetchurl { 28 name = "jna-5.10.0.zip"; 29 url = "https://github.com/java-native-access/jna/archive/5.10.0.zip"; 30 sha256 = "B5CakOQ8225xNsk2TMV8CbK3RcsLlb+pHzjaY5JNwg0="; 31 }; 32 33 flatlaf = fetchurl { 34 name = "flatlaf-2.4.jar"; 35 url = "mirror://maven/com/formdev/flatlaf/2.4/flatlaf-2.4.jar"; 36 sha256 = "NVMYiCd+koNCJ6X3EiRx1Aj+T5uAMSJ9juMmB5Os+zc="; 37 }; 38 39 lsp4j = fetchurl { 40 name = "org.eclipse.lsp4j-0.19.0.jar"; 41 url = "mirror://maven/org/eclipse/lsp4j/org.eclipse.lsp4j/0.19.0/org.eclipse.lsp4j-0.19.0.jar"; 42 sha256 = "sha256-1DI5D9KW+GL4gT1qjwVZveOl5KVOEjt6uXDwsFzi8Sg="; 43 }; 44 45 lsp4j-jsonrpc = fetchurl { 46 name = "org.eclipse.lsp4j.jsonrpc-0.19.0.jar"; 47 url = "mirror://maven/org/eclipse/lsp4j/org.eclipse.lsp4j.jsonrpc/0.19.0/org.eclipse.lsp4j.jsonrpc-0.19.0.jar"; 48 sha256 = "sha256-ozYTkvv7k0psCeX/PbSM3/Bl17qT3upX3trt65lmM9I="; 49 }; 50 51 gson = fetchurl { 52 name = "gson-2.9.1.jar"; 53 url = "mirror://maven/com/google/code/gson/gson/2.9.1/gson-2.9.1.jar"; 54 sha256 = "sha256-N4U04znm5tULFzb7Ort28cFdG+P0wTzsbVNkEuI9pgM="; 55 }; 56 57 arch = 58 { 59 x86_64 = "amd64"; 60 } 61 .${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name; 62in 63stdenv.mkDerivation rec { 64 pname = "processing"; 65 version = "4.3.2"; 66 67 src = fetchFromGitHub { 68 owner = "processing"; 69 repo = "processing4"; 70 rev = "processing-${buildNumber}-${version}"; 71 sha256 = "sha256-jUkWnkP8up5vpaXfgFJ/jQjN1KfeX5EuYXSb+W6NEms="; 72 }; 73 74 # Processing did not update the todo.txt file before tagging this release, so 75 # the "revision-check" Ant target fails. 76 patches = [ ./disable-revision-check.patch ]; 77 78 nativeBuildInputs = [ 79 ant 80 unzip 81 makeWrapper 82 stripJavaArchivesHook 83 wrapGAppsHook3 84 ]; 85 buildInputs = [ 86 jdk 87 jogl 88 ant 89 rsync 90 ffmpeg 91 batik 92 ]; 93 94 dontWrapGApps = true; 95 96 buildPhase = '' 97 runHook preBuild 98 99 echo "tarring jdk" 100 tar --checkpoint=10000 -czf build/linux/jdk-17.0.8-${arch}.tgz ${jdk} 101 cp ${ant.home}/lib/{ant.jar,ant-launcher.jar} app/lib/ 102 mkdir -p core/library 103 ln -s ${jogl}/share/java/* core/library/ 104 ln -s ${vaqua} app/lib/VAqua9.jar 105 ln -s ${flatlaf} app/lib/flatlaf.jar 106 ln -s ${lsp4j} java/mode/org.eclipse.lsp4j.jar 107 ln -s ${lsp4j-jsonrpc} java/mode/org.eclipse.lsp4j.jsonrpc.jar 108 ln -s ${gson} java/mode/gson.jar 109 unzip -qo ${jna} -d app/lib/ 110 mv app/lib/{jna-5.10.0/dist/jna.jar,} 111 mv app/lib/{jna-5.10.0/dist/jna-platform.jar,} 112 ln -sf ${batik}/* java/libraries/svg/library/ 113 cp java/libraries/svg/library/share/java/batik-all-${batik.version}.jar java/libraries/svg/library/batik.jar 114 echo "tarring ffmpeg" 115 tar --checkpoint=10000 -czf build/shared/tools/MovieMaker/ffmpeg-5.0.1.gz ${ffmpeg} 116 cd build 117 ant build 118 cd .. 119 120 runHook postBuild 121 ''; 122 123 installPhase = '' 124 runHook preInstall 125 126 mkdir -p $out/share/ 127 mkdir -p $out/share/applications/ 128 cp -dp build/linux/${pname}.desktop $out/share/applications/ 129 cp -dpr build/linux/work $out/share/${pname} 130 rmdir $out/share/${pname}/java 131 ln -s ${jdk} $out/share/${pname}/java 132 makeWrapper $out/share/${pname}/processing $out/bin/processing \ 133 ''${gappsWrapperArgs[@]} \ 134 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \ 135 --prefix _JAVA_OPTIONS " " "-Dawt.useSystemAAFontSettings=gasp" 136 makeWrapper $out/share/${pname}/processing-java $out/bin/processing-java \ 137 ''${gappsWrapperArgs[@]} \ 138 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \ 139 --prefix _JAVA_OPTIONS " " "-Dawt.useSystemAAFontSettings=gasp" 140 141 runHook postInstall 142 ''; 143 144 meta = with lib; { 145 description = "Language and IDE for electronic arts"; 146 homepage = "https://processing.org"; 147 license = with licenses; [ 148 gpl2Only 149 lgpl21Only 150 ]; 151 platforms = platforms.linux; 152 maintainers = with maintainers; [ evan-goode ]; 153 }; 154}