Ricardo Wurmus <[email protected]> skribis: > attached is a patch that gives us the liberated OpenJDK in the form of > IcedTea (version 6). IcedTea 6 is built with GCJ. Unfortunately, it > needs Ant, which cannot be built with GCJ, so it depends on a binary > bootstrap Ant.
OK. > There are a couple of issues with this patch set that I'm aware of: > > * IcedTea 6 is built without JavaScript support as this would require > Rhino. > > * I'm not happy with replacing the unpack phase and I don't like to > refer to the OpenJDK source tarball by its full name > "openjdk-6-src-b34-20_jan_2015.tar.xz". Is there a way around this? You can just call it whatever you want in the 2nd argument to ‘copy-file’, no? > * The test suite has been disabled. I have been able to fix most issues > relating to the build environment (mostly hardcoded paths and > corrupted PATH variable), but even then many tests fail. One group of > tests depends on a shell wrapper around Xvfb, which is currently not > part of the xorg-server package. A considerable number of tests fails > upstream (see http://builder.classpath.org/icedtea/icedtea6/test/ for > logs). OK. I guess you did your best, we’re no substitute for upstream hackers anyway. ;-) > * All this patching of tests is really not pretty. I'm not sure if > there's a better or more concise way to achieve this. I also don't > know which of these steps should better be implemented as snippets. > > * The patch to > openjdk/jdk/src/share/classes/java/util/CurrencyData.properties > really should be implemented upstream. > > * the make check-* targets do not return a non-zero status code upon > failure. This doesn't affect us now because tests are disabled > anyway, but using (and (zero? ...)) is just wishful thinking. > > * the synopsis tells us about IcedTea (the build harness), but actually > what we get after the build is a liberated OpenJDK. The same problem > affects the description, which probably should describe the purpose of > OpenJDK instead. Yeah, probably. > From 13490591fe7ad774e8ec95626113138d828366fb Mon Sep 17 00:00:00 2001 > From: Ricardo Wurmus <[email protected]> > Date: Tue, 23 Dec 2014 12:32:25 +0100 > Subject: [PATCH] gnu: Add IcedTea 6 > > * gnu/packages/java.scm: New file. > * gnu-system.am (GNU_SYSTEM_MODULES): Add it. [...] > + `(;; There are many failing tests. You can add that many are known to fail upstream. [...] > + 'unpack > + (lambda* (#:key source inputs #:allow-other-keys) > + (let ((target (string-append ,name "-" ,version))) > + (and (zero? (system* "tar" "xvf" source)) > + (zero? (system* "tar" "xvjf" (assoc-ref inputs > "ant-bootstrap"))) > + (chdir target)) > + (mkdir "openjdk") > + (with-directory-excursion "openjdk" > + (copy-file (assoc-ref inputs "openjdk6-src") > + "openjdk-6-src-b34-20_jan_2015.tar.xz") > + (system* "tar" "xvf" "openjdk-6-src-b34-20_jan_2015.tar.xz")))) (zero? (system* ...)) > + (substitute* "Makefile.in" > + ;; link against libgcj to avoid linker error > + (("-o native-ecj") > + "-lgcj -o native-ecj") > + ;; do not leak information about the build host > + (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") > + "DISTRIBUTION_ID=\"\\\"guix\\\"\"")) This could go to ‘snippet’ because it’s independent of the inputs used for the build, but do whatever seems most appropriate to you in terms of structure. [...] > + ;; JDK tests > + (with-directory-excursion "openjdk/jdk/test/" > + (substitute* "com/sun/jdi/JdbReadTwiceTest.sh" > + (("/bin/pwd") (which "pwd"))) > + (substitute* "com/sun/jdi/ShellScaffold.sh" > + (("/bin/kill") (which "kill"))) > + (substitute* "start-Xvfb.sh" > + (("/usr/bin/X11/Xvfb") (which "Xvfb")) > + (("/usr/bin/nohup") (which "nohup"))) > + (substitute* "javax/security/auth/Subject/doAs/Test.sh" > + (("/bin/rm") (which "rm"))) Maybe something coarser would work as well: (substitute* (find-files "openjdk/jdk/test" ".") (("/usr/bin/([[:graphic:]]+)" _ command) (or (which command) command)) (("/bin/([[:graphic:]]+)" _ command) (or (which command) command))) WDYT? > + (alist-replace > + 'check > + (lambda _ > + (and (zero? (system* "make" "check-hotspot")) > + (zero? (system* "make" "check-langtools")) > + (zero? (system* "make" "check-jdk")))) Maybe add a comment that the check- targets always return zero? > + (synopsis "A harness to build OpenJDK using Free Software build tools") “Java development kit”? > + (description > + "The IcedTea project provides a harness to build the source code from > +http://openjdk.java.net using Free Software build tools along with additional > +features such as a Free Software plugin and web start implementation and an > +LLVM-based JIT.") No good idea here. :-) I remember spending hours on this in my Nix days, so a big thanks, and congratulations for getting this far! Ludo’.
