about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/language-support.xml2
-rw-r--r--pkgs/build-support/setup-hooks/set-java-classpath.sh13
-rw-r--r--pkgs/development/eclipse/ecj/default.nix16
-rw-r--r--pkgs/top-level/all-packages.nix2
4 files changed, 22 insertions, 11 deletions
diff --git a/doc/language-support.xml b/doc/language-support.xml
index cb40be4bf57f..277f3115f736 100644
--- a/doc/language-support.xml
+++ b/doc/language-support.xml
@@ -236,7 +236,7 @@ twisted = buildPythonPackage {
 <section><title>Java</title>
 
 <para>Java packages should install JAR files in
-<filename>$out/lib/java</filename>.</para>
+<filename>$out/share/java</filename>.</para>
 
 </section>
 
diff --git a/pkgs/build-support/setup-hooks/set-java-classpath.sh b/pkgs/build-support/setup-hooks/set-java-classpath.sh
new file mode 100644
index 000000000000..76e8e42ca268
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/set-java-classpath.sh
@@ -0,0 +1,13 @@
+# This setup hook adds every JAR in the share/java subdirectories of
+# the build inputs to $CLASSPATH.
+
+export CLASSPATH
+
+addPkgToClassPath () {
+    local jar
+    for jar in $1/share/java/*.jar; do
+        export CLASSPATH=''${CLASSPATH}''${CLASSPATH:+:}''${jar}
+    done
+}
+
+envHooks=(''${envHooks[@]} addPkgToClassPath)
diff --git a/pkgs/development/eclipse/ecj/default.nix b/pkgs/development/eclipse/ecj/default.nix
index 7b3940cc2e1e..432bdc72b3c8 100644
--- a/pkgs/development/eclipse/ecj/default.nix
+++ b/pkgs/development/eclipse/ecj/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, ant, jdk }:
+{ stdenv, fetchurl, unzip, ant, jdk, makeWrapper }:
 
 let
   version = "3.7.2";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "0swyysbyfmv068x8q1c5jqpwk5zb4xahg17aypx5rwb660f8fpbm";
   };
 
-  buildInputs = [ unzip ant jdk ];
+  buildInputs = [ unzip ant jdk makeWrapper ];
 
   unpackPhase = ''
     mkdir "${name}"
@@ -25,16 +25,12 @@ stdenv.mkDerivation rec {
   buildPhase = "ant build";
 
   installPhase = ''
-    mkdir -pv $out/lib/java
-    cp -v *.jar $out/lib/java
+    mkdir -pv $out/share/java
+    cp -v *.jar $out/share/java
 
     mkdir -pv $out/bin
-    cat > $out/bin/ecj <<EOF
-    #! /bin/sh
-    exec ${jdk.jre}/bin/java -cp $out/lib/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.Main "\$@"
-    EOF
-
-    chmod u+x $out/bin/ecj
+    makeWrapper ${jdk.jre}/bin/java $out/bin/ecj \
+      --add-flags "-cp $out/share/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.Main"
   '';
 
   meta = {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7d3eb8c2e5d6..c038b38acf7a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -385,6 +385,8 @@ let
 
   platforms = import ./platforms.nix;
 
+  setJavaClassPath = makeSetupHook { } ../build-support/setup-hooks/set-java-classpath.sh;
+
 
   ### TOOLS