Subject: Re: bug#36685: ant-bootstrap fails on core-updates (409 dependents)

From: Ricardo Wurmus <[email-masked]>
Date: Fri, 19 Jul 2019 18:30:04 +0200

Ricardo Wurmus <[email-masked]> writes:

>>> Illegal instruction?  This uses JamVM 2.0.0 as the JVM.  I’ll try to
>>> figure out what instruction this is and where it comes from.
>>
>> I hit the same bug now.
>
> Good.  We need to figure out why – is it miscompilation?  Tuning to a
> different CPU type…?

With this patch I can get past the configure phase in icedtea:

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 403c446a82..14179f85e9 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -116,6 +116,9 @@
                (base32
                 "1qqldrp74pzpy5ly421srqn30qppmm9cvjiqdngk8hf47dv2rc0c"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("libc" ,glibc-2.28)
+       ("gcc" ,gcc-5)))
     (home-page "http://jikes.sourceforge.net/")
     (synopsis "Compiler for the Java language")
     (description "Jikes is a compiler that translates Java source files as
@@ -152,12 +155,20 @@ and binary format defined in The Java Virtual Machine Specification.")
              "--disable-gjdoc")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'foo
+           (lambda _
+             (substitute* "native/jni/java-io/java_io_VMFile.c"
+               (("result = cpio_isFileExists.*" m)
+                (string-append m "\n//")))
+             #t))
          (add-after 'install 'install-data
            (lambda _ (invoke "make" "install-data"))))))
     (native-inputs
      `(("jikes" ,jikes)
        ("fastjar" ,fastjar)
        ("libltdl" ,libltdl)
+       ("gcc" ,gcc-5)
+       ("libc" ,glibc-2.28)
        ("pkg-config" ,pkg-config)))
     (home-page "https://www.gnu.org/software/classpath/")
     (synopsis "Essential libraries for Java")
@@ -191,6 +202,9 @@ language.")
      `(("classpath" ,classpath-bootstrap)
        ("jikes" ,jikes)
        ("zlib" ,zlib)))
+    (native-inputs
+     `(("libc" ,glibc-2.28)
+       ("gcc" ,gcc-5)))
     (home-page "http://jamvm.sourceforge.net/")
     (synopsis "Small Java Virtual Machine")
     (description "JamVM is a Java Virtual Machine conforming to the JVM
@@ -302,7 +316,9 @@ JNI.")
      `(("jikes" ,jikes)
        ("jamvm" ,jamvm-1-bootstrap)
        ("unzip" ,unzip)
-       ("zip" ,zip)))
+       ("zip" ,zip)
+       ("gcc" ,gcc-5)
+       ("libc" ,glibc-2.28)))
     (home-page "http://ant.apache.org")
     (synopsis "Build tool for Java")
     (description
@@ -627,7 +643,9 @@ machine.")))
          ("fastjar" ,fastjar)
          ("jamvm" ,jamvm-1-bootstrap)
          ("libltdl" ,libltdl)
-         ("pkg-config" ,pkg-config))))))
+         ("pkg-config" ,pkg-config)
+         ("gcc" ,gcc-5)
+         ("libc" ,glibc-2.28))))))

 (define jamvm
   (package (inherit jamvm-1-bootstrap)
@@ -656,7 +674,9 @@ machine.")))
      `(("guile" ,guile-2.2)
        ("ecj-bootstrap" ,ecj-bootstrap)
        ("jamvm" ,jamvm)
-       ("classpath" ,classpath-devel)))))
+       ("classpath" ,classpath-devel)
+       ("gcc" ,gcc-5)
+       ("libc" ,glibc-2.28)))))

 ;; The bootstrap JDK consisting of jamvm, classpath-devel,
 ;; ecj-javac-wrapper-final cannot build Icedtea 2.x directly, because it's
@@ -907,7 +927,10 @@ machine.")))
        ("fastjar" ,fastjar)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
-       ("gcc" ,gcc-4.9) ; there's a segmentation fault when compiling with gcc-5 or gcc-7
+       ;;("gcc" ,gcc-4.9) ; there's a segmentation fault when compiling with gcc-5 or gcc-7
+       ("gcc" ,gcc-5)
+       ("libc" ,glibc-2.28)
+
        ("gtk" ,gtk+-2)
        ("gawk" ,gawk)
        ("giflib" ,giflib)
--8<---------------cut here---------------end--------------->8---

The build aborts early with “ERROR: FreeType version 2.2.1 or higher is
required.”  So I added this:

  (substitute* "patches/freetypeversion.patch"
   (("REQUIRED_FREETYPE_VERSION = 2.2.1")
    "REQUIRED_FREETYPE_VERSION = 2.10.1"))

and icedtea is being built now.

We may want to check where the use of glibc-2.28 and gcc-5 is really
needed and where we can do without.

--
Ricardo