at 24.11-pre 115 lines 4.1 kB view raw
1{ lib, stdenv, fetchFromGitHub, fetchurl, ant, unzip, makeWrapper, jdk, jogl, rsync, ffmpeg, batik, stripJavaArchivesHook, wrapGAppsHook3, libGL }: 2let 3 buildNumber = "1293"; 4 vaqua = fetchurl { 5 name = "VAqua9.jar"; 6 url = "https://violetlib.org/release/vaqua/9/VAqua9.jar"; 7 sha256 = "cd0b82df8e7434c902ec873364bf3e9a3e6bef8b59cbf42433130d71bf1a779c"; 8 }; 9 10 jna = fetchurl { 11 name = "jna-5.10.0.zip"; 12 url = "https://github.com/java-native-access/jna/archive/5.10.0.zip"; 13 sha256 = "B5CakOQ8225xNsk2TMV8CbK3RcsLlb+pHzjaY5JNwg0="; 14 }; 15 16 flatlaf = fetchurl { 17 name = "flatlaf-2.4.jar"; 18 url = "https://repo1.maven.org/maven2/com/formdev/flatlaf/2.4/flatlaf-2.4.jar"; 19 sha256 = "NVMYiCd+koNCJ6X3EiRx1Aj+T5uAMSJ9juMmB5Os+zc="; 20 }; 21 22 lsp4j = fetchurl { 23 name = "org.eclipse.lsp4j-0.19.0.jar"; 24 url = "https://repo1.maven.org/maven2/org/eclipse/lsp4j/org.eclipse.lsp4j/0.19.0/org.eclipse.lsp4j-0.19.0.jar"; 25 sha256 = "sha256-1DI5D9KW+GL4gT1qjwVZveOl5KVOEjt6uXDwsFzi8Sg="; 26 }; 27 28 lsp4j-jsonrpc = fetchurl { 29 name = "org.eclipse.lsp4j.jsonrpc-0.19.0.jar"; 30 url = "https://repo1.maven.org/maven2/org/eclipse/lsp4j/org.eclipse.lsp4j.jsonrpc/0.19.0/org.eclipse.lsp4j.jsonrpc-0.19.0.jar"; 31 sha256 = "sha256-ozYTkvv7k0psCeX/PbSM3/Bl17qT3upX3trt65lmM9I="; 32 }; 33 34 gson = fetchurl { 35 name = "gson-2.9.1.jar"; 36 url = "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.9.1/gson-2.9.1.jar"; 37 sha256 = "sha256-N4U04znm5tULFzb7Ort28cFdG+P0wTzsbVNkEuI9pgM="; 38 }; 39 40 arch = { 41 x86_64 = "amd64"; 42 }.${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name; 43in 44stdenv.mkDerivation rec { 45 pname = "processing"; 46 version = "4.3"; 47 48 src = fetchFromGitHub { 49 owner = "processing"; 50 repo = "processing4"; 51 rev = "processing-${buildNumber}-${version}"; 52 sha256 = "sha256-SzQemZ6iZ9o89/doV8YMv7DmyPSDyckJl3oyxJyfrm0="; 53 }; 54 55 nativeBuildInputs = [ ant unzip makeWrapper stripJavaArchivesHook wrapGAppsHook3 ]; 56 buildInputs = [ jdk jogl ant rsync ffmpeg batik ]; 57 58 dontWrapGApps = true; 59 60 buildPhase = '' 61 runHook preBuild 62 63 echo "tarring jdk" 64 tar --checkpoint=10000 -czf build/linux/jdk-17.0.8-${arch}.tgz ${jdk} 65 cp ${ant}/lib/ant/lib/{ant.jar,ant-launcher.jar} app/lib/ 66 mkdir -p core/library 67 ln -s ${jogl}/share/java/* core/library/ 68 ln -s ${vaqua} app/lib/VAqua9.jar 69 ln -s ${flatlaf} app/lib/flatlaf.jar 70 ln -s ${lsp4j} java/mode/org.eclipse.lsp4j.jar 71 ln -s ${lsp4j-jsonrpc} java/mode/org.eclipse.lsp4j.jsonrpc.jar 72 ln -s ${gson} java/mode/gson.jar 73 unzip -qo ${jna} -d app/lib/ 74 mv app/lib/{jna-5.10.0/dist/jna.jar,} 75 mv app/lib/{jna-5.10.0/dist/jna-platform.jar,} 76 ln -sf ${batik}/* java/libraries/svg/library/ 77 cp java/libraries/svg/library/lib/batik-all-${batik.version}.jar java/libraries/svg/library/batik.jar 78 echo "tarring ffmpeg" 79 tar --checkpoint=10000 -czf build/shared/tools/MovieMaker/ffmpeg-5.0.1.gz ${ffmpeg} 80 cd build 81 ant build 82 cd .. 83 84 runHook postBuild 85 ''; 86 87 installPhase = '' 88 runHook preInstall 89 90 mkdir -p $out/share/ 91 mkdir -p $out/share/applications/ 92 cp -dp build/linux/${pname}.desktop $out/share/applications/ 93 cp -dpr build/linux/work $out/share/${pname} 94 rmdir $out/share/${pname}/java 95 ln -s ${jdk} $out/share/${pname}/java 96 makeWrapper $out/share/${pname}/processing $out/bin/processing \ 97 ''${gappsWrapperArgs[@]} \ 98 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \ 99 --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd 100 makeWrapper $out/share/${pname}/processing-java $out/bin/processing-java \ 101 ''${gappsWrapperArgs[@]} \ 102 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \ 103 --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd 104 105 runHook postInstall 106 ''; 107 108 meta = with lib; { 109 description = "A language and IDE for electronic arts"; 110 homepage = "https://processing.org"; 111 license = with licenses; [ gpl2Only lgpl21Only ]; 112 platforms = platforms.linux; 113 maintainers = with maintainers; [ evan-goode ]; 114 }; 115}