Ricardo Wurmus <rek...@elephly.net> 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