about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/java/rhino
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:36 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:47 +0000
commit36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch)
treeb3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/development/libraries/java/rhino
parent4e31070265257dc67d120c27e0f75c2344fdfa9a (diff)
parentabf060725d7614bd3b9f96764262dfbc2f9c2199 (diff)
downloadnixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs
git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a
git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/java/rhino')
-rw-r--r--nixpkgs/pkgs/development/libraries/java/rhino/default.nix59
-rw-r--r--nixpkgs/pkgs/development/libraries/java/rhino/gcj-type-mismatch.patch103
2 files changed, 162 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/java/rhino/default.nix b/nixpkgs/pkgs/development/libraries/java/rhino/default.nix
new file mode 100644
index 000000000000..544f0f4c4e91
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/java/rhino/default.nix
@@ -0,0 +1,59 @@
+{ fetchurl, stdenv, unzip, ant, javac, jvm }:
+
+let
+  version = "1.7R2";
+
+  xbeans  = fetchurl {
+    url = "http://archive.apache.org/dist/xmlbeans/binaries/xmlbeans-2.2.0.zip";
+    sha256 = "1pb08d9j81d0wz5wj31idz198iwhqb7mch872n08jh1354rjlqwk";
+  };
+in
+
+stdenv.mkDerivation {
+  name = "rhino-${version}";
+
+  src = fetchurl {
+    url = "mirror://mozilla/js/rhino1_7R2.zip";
+    sha256 = "1p32hkghi6bkc3cf2dcqyaw5cjj7403mykcp0fy8f5bsnv0pszv7";
+  };
+
+  patches = [ ./gcj-type-mismatch.patch ];
+
+  hardeningDisable = [ "fortify" "format" ];
+
+  preConfigure =
+    ''
+      find -name \*.jar -or -name \*.class -exec rm -v {} \;
+
+      # The build process tries to download it by itself.
+      mkdir -p "build/tmp-xbean"
+      ln -sv "${xbeans}" "build/tmp-xbean/xbean.zip"
+    '';
+
+  buildInputs = [ unzip ant javac jvm ];
+
+  buildPhase = "ant jar";
+  doCheck    = false;
+
+  # FIXME: Install javadoc as well.
+  installPhase =
+    ''
+      mkdir -p "$out/share/java"
+      cp -v *.jar "$out/share/java"
+    '';
+
+  meta = with stdenv.lib; {
+    description = "An implementation of JavaScript written in Java";
+
+    longDescription =
+      '' Rhino is an open-source implementation of JavaScript written
+         entirely in Java.  It is typically embedded into Java applications
+         to provide scripting to end users.
+      '';
+
+    homepage = http://www.mozilla.org/rhino/;
+
+    license = with licenses; [ mpl11 /* or */ gpl2Plus ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/java/rhino/gcj-type-mismatch.patch b/nixpkgs/pkgs/development/libraries/java/rhino/gcj-type-mismatch.patch
new file mode 100644
index 000000000000..dac7b209069a
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/java/rhino/gcj-type-mismatch.patch
@@ -0,0 +1,103 @@
+Work around GCJ bug #35410:
+http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35410 .
+
+diff --git a/src/org/mozilla/javascript/Arguments.java b/src/org/mozilla/javascript/Arguments.java
+index d914294..d658f12 100644
+--- a/src/org/mozilla/javascript/Arguments.java
++++ b/src/org/mozilla/javascript/Arguments.java
+@@ -144,7 +144,7 @@ final class Arguments extends IdScriptableObject
+                 synchronized (this) {
+                     if (args[index] != NOT_FOUND) {
+                         if (args == activation.originalArgs) {
+-                            args = args.clone();
++                            args = (Object[]) args.clone();
+                         }
+                         args[index] = value;
+                         return;
+@@ -162,7 +162,7 @@ final class Arguments extends IdScriptableObject
+             synchronized (this) {
+                 if (args[index] != NOT_FOUND) {
+                     if (args == activation.originalArgs) {
+-                        args = args.clone();
++                        args = (Object[]) args.clone();
+                     }
+                     args[index] = NOT_FOUND;
+                     return;
+diff --git a/src/org/mozilla/javascript/FunctionObject.java b/src/org/mozilla/javascript/FunctionObject.java
+index 1d6c752..3adc100 100644
+--- a/src/org/mozilla/javascript/FunctionObject.java
++++ b/src/org/mozilla/javascript/FunctionObject.java
+@@ -455,7 +455,7 @@ public class FunctionObject extends BaseFunction
+                     Object converted = convertArg(cx, scope, arg, typeTags[i]);
+                     if (arg != converted) {
+                         if (invokeArgs == args) {
+-                            invokeArgs = args.clone();
++                            invokeArgs = (Object[]) args.clone();
+                         }
+                         invokeArgs[i] = converted;
+                     }
+diff --git a/src/org/mozilla/javascript/Interpreter.java b/src/org/mozilla/javascript/Interpreter.java
+index f7f544d..e125e2f 100644
+--- a/src/org/mozilla/javascript/Interpreter.java
++++ b/src/org/mozilla/javascript/Interpreter.java
+@@ -285,9 +285,9 @@ public class Interpreter implements Evaluator
+             // clone stack but keep varSource to point to values
+             // from this frame to share variables.
+ 
+-            copy.stack = stack.clone();
+-            copy.stackAttributes = stackAttributes.clone();
+-            copy.sDbl = sDbl.clone();
++            copy.stack = (Object[]) stack.clone();
++            copy.stackAttributes = (int[]) stackAttributes.clone();
++            copy.sDbl = (double[]) sDbl.clone();
+ 
+             copy.frozen = false;
+             return copy;
+diff --git a/src/org/mozilla/javascript/NativeJavaClass.java b/src/org/mozilla/javascript/NativeJavaClass.java
+index f72f9e7..25c6757 100644
+--- a/src/org/mozilla/javascript/NativeJavaClass.java
++++ b/src/org/mozilla/javascript/NativeJavaClass.java
+@@ -271,7 +271,7 @@ public class NativeJavaClass extends NativeJavaObject implements Function
+                 Object x = Context.jsToJava(arg, argTypes[i]);
+                 if (x != arg) {
+                     if (args == origArgs) {
+-                        args = origArgs.clone();
++                        args = (Object[]) origArgs.clone();
+                     }
+                     args[i] = x;
+                 }
+diff --git a/src/org/mozilla/javascript/NativeJavaMethod.java b/src/org/mozilla/javascript/NativeJavaMethod.java
+index b6eaf8b..dc699a0 100644
+--- a/src/org/mozilla/javascript/NativeJavaMethod.java
++++ b/src/org/mozilla/javascript/NativeJavaMethod.java
+@@ -213,7 +213,7 @@ public class NativeJavaMethod extends BaseFunction
+                 Object coerced = Context.jsToJava(arg, argTypes[i]);
+                 if (coerced != arg) {
+                     if (origArgs == args) {
+-                        args = args.clone();
++                        args = (Object[]) args.clone();
+                     }
+                     args[i] = coerced;
+                 }
+diff --git a/src/org/mozilla/javascript/regexp/NativeRegExp.java b/src/org/mozilla/javascript/regexp/NativeRegExp.java
+index 0bae489..f7124bf 100644
+--- a/src/org/mozilla/javascript/regexp/NativeRegExp.java
++++ b/src/org/mozilla/javascript/regexp/NativeRegExp.java
+@@ -2168,7 +2168,7 @@ System.out.println("Testing at " + gData.cp + ", op = " + op);
+                     // XXX: If backTrackData will no longer be used, then
+                     // there is no need to clone backTrackData.parens
+                     if (backTrackData.parens != null) {
+-                        gData.parens = backTrackData.parens.clone();
++                        gData.parens = (long[]) backTrackData.parens.clone();
+                     }
+ 
+                     gData.cp = backTrackData.cp;
+@@ -2708,7 +2708,7 @@ class REBackTrackData {
+         continuation_pc = pc;
+         lastParen = gData.lastParen;
+         if (gData.parens != null) {
+-            parens = gData.parens.clone();
++            parens = (long[]) gData.parens.clone();
+         }
+         cp = gData.cp;
+         stateStackTop = gData.stateStackTop;