summary refs log tree commit diff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-05-14 00:30:18 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-05-22 18:56:33 +0200
commit04d7cae2c4bc425a8cafac6cae2456ca929cecab (patch)
treee093bcb27e496db4bc0c2ea403f6cf60a6ce60e6
parent5f4402c7a374956e6e8a1e2dee0228916ccd2d7b (diff)
downloadguix-04d7cae2c4bc425a8cafac6cae2456ca929cecab.tar.gz
gnu: Add classpath-jamvm-wrappers.
* gnu/packages/java.scm (classpath-jamvm-wrappers): New variable.
-rw-r--r--gnu/packages/java.scm45
1 files changed, 45 insertions, 0 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0faf2bd296..7d1c027394 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -491,6 +491,51 @@ other small VMs it supports the full spec, including object finalisation and
 JNI.")
     (license license:gpl2+)))
 
+;; We need this because the tools provided by the latest release of GNU
+;; Classpath don't actually work with sablevm.
+(define classpath-jamvm-wrappers
+  (package (inherit classpath-on-sablevm)
+    (name "classpath-jamvm-wrappers")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((bash      (assoc-ref %build-inputs "bash"))
+                (jamvm     (assoc-ref %build-inputs "jamvm"))
+                (classpath (assoc-ref %build-inputs "classpath"))
+                (bin       (string-append (assoc-ref %outputs "out")
+                                          "/bin/")))
+           (mkdir-p bin)
+           (for-each (lambda (tool)
+                       (with-output-to-file (string-append bin tool)
+                         (lambda _
+                           (format #t "#!~a/bin/sh
+~a/bin/jamvm -classpath ~a/share/classpath/tools.zip \
+gnu.classpath.tools.~a.~a $@"
+                                   bash jamvm classpath tool
+                                   (if (string=? "native2ascii" tool)
+                                       "Native2ASCII" "Main"))))
+                       (chmod (string-append bin tool) #o755))
+                     (list "javah"
+                           "rmic"
+                           "rmid"
+                           "orbd"
+                           "rmiregistry"
+                           "native2ascii"))
+           #t))))
+    (native-inputs
+     `(("bash" ,bash)
+       ("jamvm" ,jamvm-bootstrap)
+       ("classpath" ,classpath-on-sablevm)))
+    (inputs '())
+    (synopsis "Executables from GNU Classpath")
+    (description "This package provides wrappers around the tools provided by
+the GNU Classpath library.  They are executed by the JamVM virtual
+machine.")))
+
 (define-public java-swt
   (package
     (name "java-swt")