1{ stdenv, fetchFromGitHub, fetchurl, xmlstarlet, makeWrapper, ant, jdk, rsync, javaPackages, libXxf86vm, gsettings-desktop-schemas }:
2
3stdenv.mkDerivation rec {
4 version = "3.4";
5 name = "processing3-${version}";
6
7 src = fetchFromGitHub {
8 owner = "processing";
9 repo = "processing";
10 rev = "processing-0265-${version}";
11 sha256 = "12wpxgn2wd5vbasx9584w5yb1s319smq1zh8m7dvp7gkqw9plwp4";
12 };
13
14 nativeBuildInputs = [ ant rsync makeWrapper ];
15 buildInputs = [ jdk ];
16
17 buildPhase = ''
18 # use compiled jogl to avoid patchelf'ing .so files inside jars
19 rm core/library/*.jar
20 cp ${javaPackages.jogl_2_3_2}/share/java/*.jar core/library/
21
22 # do not download a file during build
23 ${xmlstarlet}/bin/xmlstarlet ed --inplace -P -d '//get[@src="http://download.processing.org/reference.zip"]' build/build.xml
24 install -D -m0444 ${fetchurl {
25 url = http://download.processing.org/reference.zip;
26 sha256 = "0dli1bdgw8hsx7g7b048ap81v2za9maa6pfcwdqm3qkfypr8q7pr";
27 }
28 } ./java/reference.zip
29
30 # suppress "Not fond of this Java VM" message box
31 substituteInPlace app/src/processing/app/platform/LinuxPlatform.java \
32 --replace 'Messages.showWarning' 'if (false) Messages.showWarning'
33
34 ( cd build
35 substituteInPlace build.xml --replace "jre-download," "" # do not download jre1.8.0_144
36 mkdir -p linux/jre1.8.0_144 # fake dir to avoid error
37 ant build )
38 '';
39
40 installPhase = ''
41 mkdir $out
42 cp -dpR build/linux/work $out/${name}
43
44 rmdir $out/${name}/java
45 ln -s ${jdk} $out/${name}/java
46
47 makeWrapper $out/${name}/processing $out/bin/processing \
48 --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} \
49 --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
50 --prefix LD_LIBRARY_PATH : ${libXxf86vm}/lib
51 makeWrapper $out/${name}/processing-java $out/bin/processing-java \
52 --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name} \
53 --prefix _JAVA_OPTIONS " " -Dawt.useSystemAAFontSettings=lcd \
54 --prefix LD_LIBRARY_PATH : ${libXxf86vm}/lib
55 '';
56
57 meta = with stdenv.lib; {
58 description = "A language and IDE for electronic arts";
59 homepage = https://processing.org;
60 license = licenses.gpl2Plus;
61 platforms = platforms.linux;
62 };
63}