From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52658) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCjsk-0007iX-Ij for guix-patches@gnu.org; Mon, 22 May 2017 05:44:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCjsg-0004T6-GZ for guix-patches@gnu.org; Mon, 22 May 2017 05:44:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:57343) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dCjsg-0004SQ-Cr for guix-patches@gnu.org; Mon, 22 May 2017 05:44:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dCjsg-0001vn-3u for guix-patches@gnu.org; Mon, 22 May 2017 05:44:02 -0400 Subject: bug#26966: [PATCH 14/22] gnu: Add icedtea-6. Resent-Message-ID: References: <20170517171905.7840-1-rekado@elephly.net> <20170517171905.7840-14-rekado@elephly.net> From: Roel Janssen In-reply-to: <20170517171905.7840-14-rekado@elephly.net> Date: Mon, 22 May 2017 11:43:07 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ricardo Wurmus Cc: 26966@debbugs.gnu.org Ricardo Wurmus writes: > * gnu/packages/java.scm (icedtea-6): New variable. > --- > gnu/packages/java.scm | 340 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 340 insertions(+) > > diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm > index 779c84729..6104777c4 100644 > --- a/gnu/packages/java.scm > +++ b/gnu/packages/java.scm > @@ -987,6 +987,346 @@ and is best suited to building Java projects. Ant uses XML to describe the > build process and its dependencies, whereas Make uses Makefile format.") > (license license:asl2.0))) > > +;; The bootstrap JDK consisting of jamvm, classpath-devel, > +;; ecj-javac-on-jamvm-wrapper-final cannot build Icedtea 2.x directly, because > +;; it's written in Java 7. It can, however, build the unmaintained Icedtea > +;; 1.x, which uses Java 6 only. > +(define-public icedtea-6 > + (package > + (name "icedtea") > + (version "1.13.13") > + (source (origin > + (method url-fetch) > + (uri (string-append > + "http://icedtea.wildebeest.org/download/source/icedtea6-" > + version ".tar.xz")) > + (sha256 > + (base32 > + "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg")) > + (modules '((guix build utils))) > + (snippet > + '(substitute* "Makefile.in" > + ;; do not leak information about the build host > + (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") > + "DISTRIBUTION_ID=\"\\\"guix\\\"\""))))) > + (build-system gnu-build-system) > + (outputs '("out" ; Java Runtime Environment > + "jdk" ; Java Development Kit > + "doc")) ; all documentation > + (arguments > + `(;; There are many failing tests and many are known to fail upstream. > + #:tests? #f > + > + ;; The DSOs use $ORIGIN to refer to each other, but (guix build > + ;; gremlin) doesn't support it yet, so skip this phase. > + #:validate-runpath? #f > + > + #:modules ((guix build utils) > + (guix build gnu-build-system) > + (srfi srfi-19)) > + > + #:configure-flags > + `("--enable-bootstrap" > + "--enable-nss" > + "--without-rhino" > + "--with-parallel-jobs" > + "--disable-downloading" > + "--disable-tests" > + ,(string-append "--with-ecj=" > + (assoc-ref %build-inputs "ecj") > + "/share/java/ecj-bootstrap.jar") > + ,(string-append "--with-jar=" > + (assoc-ref %build-inputs "fastjar") > + "/bin/fastjar") > + ,(string-append "--with-jdk-home=" > + (assoc-ref %build-inputs "classpath")) > + ,(string-append "--with-java=" > + (assoc-ref %build-inputs "jamvm") > + "/bin/jamvm")) > + #:phases > + (modify-phases %standard-phases > + (replace 'unpack > + (lambda* (#:key source inputs #:allow-other-keys) > + (and (zero? (system* "tar" "xvf" source)) > + (begin > + (chdir (string-append "icedtea6-" ,version)) > + (mkdir "openjdk") > + (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk") > + ;; The convenient OpenJDK source bundle is no longer > + ;; available for download, so we have to take the sources > + ;; from the Mercurial repositories and change the Makefile > + ;; to avoid tests for the OpenJDK zip archive. Haha, the plot thickens.. > + (with-directory-excursion "openjdk" > + (for-each (lambda (part) > + (mkdir part) > + (copy-recursively > + (assoc-ref inputs > + (string-append part "-src")) > + part)) > + '("jdk" "hotspot" "corba" > + "langtools" "jaxp" "jaxws"))) > + (substitute* "Makefile.in" > + (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;") > + "echo \"trust me\";") > + ;; The contents of the bootstrap directory must be > + ;; writeable but when copying from the store they are > + ;; not. > + (("mkdir -p lib/rt" line) > + (string-append line "; chmod -R u+w $(BOOT_DIR)"))) > + (zero? (system* "chmod" "-R" "u+w" "openjdk")) > + #t)))) > + (add-after 'unpack 'use-classpath > + (lambda* (#:key inputs #:allow-other-keys) > + (let ((jvmlib (assoc-ref inputs "classpath"))) > + ;; Classpath does not provide rt.jar. > + (substitute* "Makefile.in" > + (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar") > + (string-append jvmlib "/share/classpath/glibj.zip"))) > + ;; Make sure we can find all classes. > + (setenv "CLASSPATH" > + (string-append jvmlib "/share/classpath/glibj.zip:" > + jvmlib "/share/classpath/tools.zip")) > + (setenv "JAVACFLAGS" > + (string-append "-cp " > + jvmlib "/share/classpath/glibj.zip:" > + jvmlib "/share/classpath/tools.zip"))) > + #t)) > + (add-after 'unpack 'patch-patches > + (lambda _ > + ;; shebang in patches so that they apply cleanly > + (substitute* '("patches/jtreg-jrunscript.patch" > + "patches/hotspot/hs23/drop_unlicensed_test.patch") > + (("#!/bin/sh") (string-append "#!" (which "sh")))) > + #t)) > + (add-after 'unpack 'patch-paths > + (lambda* (#:key inputs #:allow-other-keys) > + ;; buildtree.make generates shell scripts, so we need to replace > + ;; the generated shebang > + (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make") > + (("/bin/sh") (which "bash"))) > + > + (let ((corebin (string-append > + (assoc-ref inputs "coreutils") "/bin/")) > + (binbin (string-append > + (assoc-ref inputs "binutils") "/bin/")) > + (grepbin (string-append > + (assoc-ref inputs "grep") "/bin/"))) > + (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk" > + "openjdk/corba/make/common/shared/Defs-linux.gmk") > + (("UNIXCOMMAND_PATH = /bin/") > + (string-append "UNIXCOMMAND_PATH = " corebin)) > + (("USRBIN_PATH = /usr/bin/") > + (string-append "USRBIN_PATH = " corebin)) > + (("DEVTOOLS_PATH *= */usr/bin/") > + (string-append "DEVTOOLS_PATH = " corebin)) > + (("COMPILER_PATH *= */usr/bin/") > + (string-append "COMPILER_PATH = " > + (assoc-ref inputs "gcc") "/bin/")) > + (("DEF_OBJCOPY *=.*objcopy") > + (string-append "DEF_OBJCOPY = " (which "objcopy")))) > + > + ;; fix path to alsa header > + (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk" > + (("ALSA_INCLUDE=/usr/include/alsa/version.h") > + (string-append "ALSA_INCLUDE=" > + (assoc-ref inputs "alsa-lib") > + "/include/alsa/version.h"))) > + > + ;; fix hard-coded utility paths > + (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" > + "openjdk/corba/make/common/shared/Defs-utils.gmk") > + (("ECHO *=.*echo") > + (string-append "ECHO = " (which "echo"))) > + (("^GREP *=.*grep") > + (string-append "GREP = " (which "grep"))) > + (("EGREP *=.*egrep") > + (string-append "EGREP = " (which "egrep"))) > + (("CPIO *=.*cpio") > + (string-append "CPIO = " (which "cpio"))) > + (("READELF *=.*readelf") > + (string-append "READELF = " (which "readelf"))) > + (("^ *AR *=.*ar") > + (string-append "AR = " (which "ar"))) > + (("^ *TAR *=.*tar") > + (string-append "TAR = " (which "tar"))) > + (("AS *=.*as") > + (string-append "AS = " (which "as"))) > + (("LD *=.*ld") > + (string-append "LD = " (which "ld"))) > + (("STRIP *=.*strip") > + (string-append "STRIP = " (which "strip"))) > + (("NM *=.*nm") > + (string-append "NM = " (which "nm"))) > + (("^SH *=.*sh") > + (string-append "SH = " (which "bash"))) > + (("^FIND *=.*find") > + (string-append "FIND = " (which "find"))) > + (("LDD *=.*ldd") > + (string-append "LDD = " (which "ldd"))) > + (("NAWK *=.*(n|g)awk") > + (string-append "NAWK = " (which "gawk"))) > + (("XARGS *=.*xargs") > + (string-append "XARGS = " (which "xargs"))) > + (("UNZIP *=.*unzip") > + (string-append "UNZIP = " (which "unzip"))) > + (("ZIPEXE *=.*zip") > + (string-append "ZIPEXE = " (which "zip"))) > + (("SED *=.*sed") > + (string-append "SED = " (which "sed")))) > + > + ;; Some of these timestamps cause problems as they are more than > + ;; 10 years ago, failing the build process. > + (substitute* > + "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties" > + (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") > + (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") > + (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") > + (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")) > + #t))) > + (add-before 'configure 'set-additional-paths > + (lambda* (#:key inputs #:allow-other-keys) > + (setenv "CPATH" > + (string-append (assoc-ref inputs "libxrender") > + "/include/X11/extensions" ":" > + (assoc-ref inputs "libxtst") > + "/include/X11/extensions" ":" > + (assoc-ref inputs "libxinerama") > + "/include/X11/extensions" ":" > + (or (getenv "CPATH") ""))) > + (setenv "ALT_CUPS_HEADERS_PATH" > + (string-append (assoc-ref inputs "cups") > + "/include")) > + (setenv "ALT_FREETYPE_HEADERS_PATH" > + (string-append (assoc-ref inputs "freetype") > + "/include")) > + (setenv "ALT_FREETYPE_LIB_PATH" > + (string-append (assoc-ref inputs "freetype") > + "/lib")) > + #t)) > + (replace 'install > + (lambda* (#:key outputs #:allow-other-keys) > + (let ((doc (string-append (assoc-ref outputs "doc") > + "/share/doc/icedtea")) > + (jre (assoc-ref outputs "out")) > + (jdk (assoc-ref outputs "jdk"))) > + (copy-recursively "openjdk.build/docs" doc) > + (copy-recursively "openjdk.build/j2re-image" jre) > + (copy-recursively "openjdk.build/j2sdk-image" jdk)) > + #t))))) > + (native-inputs > + `(("ant" ,ant-bootstrap) > + ("alsa-lib" ,alsa-lib) > + ("attr" ,attr) > + ("classpath" ,classpath-devel) > + ("coreutils" ,coreutils) > + ("cpio" ,cpio) > + ("cups" ,cups) > + ("ecj" ,ecj-bootstrap) > + ("ecj-javac" ,ecj-javac-on-jamvm-wrapper-final) > + ("fastjar" ,fastjar) > + ("fontconfig" ,fontconfig) > + ("freetype" ,freetype) > + ("gtk" ,gtk+-2) > + ("gawk" ,gawk) > + ("giflib" ,giflib) > + ("grep" ,grep) > + ("jamvm" ,jamvm) > + ("lcms" ,lcms) > + ("libjpeg" ,libjpeg) > + ("libpng" ,libpng) > + ("libtool" ,libtool) > + ("libx11" ,libx11) > + ("libxcomposite" ,libxcomposite) > + ("libxi" ,libxi) > + ("libxinerama" ,libxinerama) > + ("libxrender" ,libxrender) > + ("libxslt" ,libxslt) ;for xsltproc > + ("libxt" ,libxt) > + ("libxtst" ,libxtst) > + ("mit-krb5" ,mit-krb5) > + ("nss" ,nss) > + ("nss-certs" ,nss-certs) > + ("perl" ,perl) > + ("pkg-config" ,pkg-config) > + ("procps" ,procps) ;for "free", even though I'm not sure we should use it > + ("unzip" ,unzip) > + ("wget" ,wget) > + ("which" ,which) > + ("zip" ,zip) > + ("zlib" ,zlib) > + ("openjdk-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "14q47yfg586fs64w30g8mk92m5dkxsvr36zzh0ra99xk5x0x96mv")))) > + ("jdk-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/jdk/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "165824nhg1k1dx6zs9dny0j49rmk35jw5b13dmz8c77jfajml4v9")))) > + ("hotspot-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/hotspot/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd")))) > + ("corba-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/corba/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "1p9g1r9dnax2iwp7yb59qx7m4nmshqhwmrb2b8jj8zgbd9dl2i3q")))) > + ("langtools-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/langtools/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d")))) > + ("jaxp-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxp/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "0shlqrvzpr4nrkmv215lbxnby63s3yvbdh1yxcayznsyqwa4nlxm")))) > + ("jaxws-src" > + ,(origin > + (method hg-fetch) > + (uri (hg-reference > + (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxws/") > + (changeset "jdk6-b41"))) > + (sha256 > + (base32 > + "0835lkw8vib1xhp8lxnybhlvzdh699hbi4mclxanydjk63zbpxk0")))))) > + (home-page "http://icedtea.classpath.org") > + (synopsis "Java development kit") > + (description > + "This package provides the OpenJDK built with the IcedTea build harness. > +This version of the OpenJDK is no longer maintained and is only used for > +bootstrapping purposes.") > + ;; IcedTea is released under the GPL2 + Classpath exception, which is the > + ;; same license as both GNU Classpath and OpenJDK. > + (license license:gpl2+))) > + > (define-public icedtea-7 > (let* ((version "2.6.9") > (drop (lambda (name hash) LGTM. Are we supposed to get rid of IcedTea completely in the long run? Kind regards, Roel Janssen