[PATCH 0/7] IcedTea: Build (efficiently) on aarch64-linux

  • Done
  • quality assurance status badge
Details
3 participants
  • Efraim Flashner
  • Ricardo Wurmus
  • Simon South
Owner
unassigned
Submitted by
Simon South
Severity
normal
S
S
Simon South wrote on 15 Jun 2020 17:18
(address . guix-patches@gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615151856.12283-1-simon@simonsouth.net
This patch series applies a number of changes to the icedtea-6, -7 and -8
packages that allow them to build (efficiently) on aarch64-linux systems.

It assumes the patches in issues 41748 and 41648 have already been applied, in
that order.

With these three sets of patches I've been able to complete the entire Java
bootstrap process on both AArch64 and x86_64 and have successfully compiled
and run a Java application on AArch64 using OpenJDK 14.

The changes in this series

- Ensure the correct number of parallel build jobs is used. The
"--with-parallel-jobs" option to IcedTea's configure script enables a
parallel build but by default, the script uses its own heuristic to decide
how many jobs to run simultaneously. This can produce a poor result: On my
dual-core, hyperthreaded x86_64 machine, IcedTea 6 picks five jobs (anything
above two is inefficient); on my six-core AArch64 machine, IcedTea 7 picks
only two (on a machine where engaging every core is important!). In any
case, there is no guarantee the figure the script chooses will match the
number of jobs requested by the user.

These patches address this by ensuring the "--with-parallel-jobs" parameter
is passed to configure along with a parameter explicitly specifying the
correct number of jobs to use.

- Remove an obsolete and architecture-dependent patch. The "gcc-segfault"
patches yield a broken JIT on AArch64 because they embed a constant value,
11, that is architecture-dependent and apparently valid only for
x86_64. This number represents the length of an array whose size is
determined by the HotSpot build process and output in code it generates (at
src/share/vm/adlc/output_h.cpp:893).

Presumably the patches could be fixed, but I've been unable to reproduce the
problem they're meant to solve and I suspect it was only ever an issue with
gcc 5, meaning the patches are now obsolete. (The move to gcc 7 occurred
about three months after they were added.)

My changes remove these patches, including (for completeness and
consistency) the patch to IcedTea 6 which doesn't actually interfere with
the AArch64 build as it doesn't produce a JIT for that platform.

- Allow all three IcedTea packages to build on aarch64-linux. For IcedTea 6,
this means applying a backport of a patch to JDK 9 (see
http://openjdk.java.net/jeps/237)that extends the support for AArch64 in
HotSpot's shared code and allows the portable Zero VM to be built. For
IcedTea 7, it means removing an unneeded C++ template that causes the build
to fail when using gcc 7 and its default support for only the C++98
standard.

IcedTea 8 (and subsequent versions of OpenJDK) support AArch64 and gcc 7
out-of-the-box and require no specific changes.

--
Simon South
simon@simonsouth.net


Simon South (7):
gnu: icedtea-6: Build in parallel using correct number of jobs.
gnu: icedtea-6: Remove obsolete, architecture-dependent patch.
gnu: icedtea-6: Fix build on aarch64-linux.
gnu: icedtea-7: Build in parallel using correct number of jobs.
gnu: icedtea-7: Fix build on aarch64-linux.
gnu: icedtea-8: Build in parallel using correct number of jobs.
gnu: icedtea-8: Fix build on aarch64-linux.

gnu/local.mk | 4 +-
gnu/packages/java.scm | 32 +-
...tea-6-extend-hotspot-aarch64-support.patch | 1831 +++++++++++++++++
...ea-6-hotspot-gcc-segfault-workaround.patch | 42 -
.../icedtea-7-hotspot-aarch64-use-c++98.patch | 33 +
...ea-7-hotspot-gcc-segfault-workaround.patch | 45 -
6 files changed, 1879 insertions(+), 108 deletions(-)
create mode 100644 gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
delete mode 100644 gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
create mode 100644 gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
delete mode 100644 gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch

--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 1/7] gnu: icedtea-6: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-1-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[arguments]<#:configure-flags>: Supply
parameter to "--with-parallel-jobs".
---
gnu/packages/java.scm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0370d160a1..dbc0061a4e 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -795,7 +795,8 @@ machine.")))
`("--enable-bootstrap"
"--enable-nss"
"--without-rhino"
- "--with-parallel-jobs"
+ ,(string-append "--with-parallel-jobs="
+ (number->string (parallel-job-count)))
"--disable-downloading"
"--disable-tests"
,(string-append "--with-ecj="
--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 2/7] gnu: icedtea-6: Remove obsolete, architecture-dependent patch.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-2-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[arguments]<#:phases>: Remove special
handling of "hotspot-src" input during "unpack" phase.
[native-inputs]: Remove patch to "hotspot-src".
* gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch: Delete
file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
gnu/local.mk | 1 -
gnu/packages/java.scm | 9 +---
...ea-6-hotspot-gcc-segfault-workaround.patch | 42 -------------------
3 files changed, 2 insertions(+), 50 deletions(-)
delete mode 100644 gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch

Toggle diff (90 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index e1e3247642..a39baa12f5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1093,7 +1093,6 @@ dist_patch_DATA = \
%D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \
%D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \
%D%/packages/patches/icecat-use-system-media-libs.patch \
- %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icu4c-CVE-2020-10531.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index dbc0061a4e..87becb66e3 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -829,11 +829,8 @@ machine.")))
(assoc-ref inputs
(string-append part "-src"))
part))
- '("jdk" "corba"
+ '("jdk" "hotspot" "corba"
"langtools" "jaxp" "jaxws")))
- (with-directory-excursion "openjdk"
- (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
- (rename-file "hg-checkout" "hotspot"))
(substitute* "patches/freetypeversion.patch"
(("REQUIRED_FREETYPE_VERSION = 2.2.1")
"REQUIRED_FREETYPE_VERSION = 2.10.1"))
@@ -1059,9 +1056,7 @@ machine.")))
(changeset "jdk6-b41")))
(sha256
(base32
- "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
- (patches
- (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
+ "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))))
("corba-src"
,(origin
(method hg-fetch)
diff --git a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
deleted file mode 100644
index ef090e0ec9..0000000000
--- a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-# HG changeset patch
-# User Gábor Boskovits <boskovits@gmail.com>
-# Date 1530519413 -7200
-# Mon Jul 02 10:16:53 2018 +0200
-# Node ID 77e5bc9e238a28d17e097647badc04ed67a6a452
-# Parent 1ae05a34e052d1672b4a7894ddf5fc2f662eb861
-Fix gcc segfault.
-
-diff -r 1ae05a34e052 -r 77e5bc9e238a src/share/vm/opto/output.cpp
---- a/src/share/vm/opto/output.cpp Sun Dec 25 23:52:13 2016 +0000
-+++ b/src/share/vm/opto/output.cpp Mon Jul 02 10:16:53 2018 +0200
-@@ -1758,6 +1758,8 @@
-
- // Initializer for class Scheduling
-
-+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
-+
- Scheduling::Scheduling(Arena *arena, Compile &compile)
- : _arena(arena),
- _cfg(compile.cfg()),
-@@ -1802,8 +1804,8 @@
-
- // Clear the bundling information
- memcpy(_bundle_use_elements,
-- Pipeline_Use::elaborated_elements,
-- sizeof(Pipeline_Use::elaborated_elements));
-+ (void *)eePointer,
-+ 11*sizeof(Pipeline_Use_Element));
-
- // Get the last node
- Block *bb = _cfg->_blocks[_cfg->_blocks.size()-1];
-@@ -1854,8 +1856,8 @@
- _bundle_use.reset();
-
- memcpy(_bundle_use_elements,
-- Pipeline_Use::elaborated_elements,
-- sizeof(Pipeline_Use::elaborated_elements));
-+ (void *)eePointer,
-+ 11*sizeof(Pipeline_Use_Element));
- }
-
- //------------------------------ScheduleAndBundle------------------------------
--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 3/7] gnu: icedtea-6: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-3-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-6)[source]: Add patch.
* gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/java.scm | 2 +
...tea-6-extend-hotspot-aarch64-support.patch | 1831 +++++++++++++++++
3 files changed, 1834 insertions(+)
create mode 100644 gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch

Toggle diff (482 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index a39baa12f5..36dbbd0968 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1093,6 +1093,7 @@ dist_patch_DATA = \
%D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \
%D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \
%D%/packages/patches/icecat-use-system-media-libs.patch \
+ %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icu4c-CVE-2020-10531.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 87becb66e3..3618b9ee3f 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -767,6 +767,8 @@ machine.")))
(sha256
(base32
"0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
+ (patches (search-patches
+ "icedtea-6-extend-hotspot-aarch64-support.patch"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
new file mode 100644
index 0000000000..9dc112a344
--- /dev/null
+++ b/gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
@@ -0,0 +1,1831 @@
+From d51cb8c0f7966ac0b870e90e421cc8a796d98abf Mon Sep 17 00:00:00 2001
+From: Simon South <simon@simonsouth.net>
+Date: Tue, 9 Jun 2020 13:48:42 -0400
+Subject: [PATCH] Extend AArch64 support
+
+This adds to IcedTea 6 a patch that extends the support for AArch64 in
+its version of HotSpot, allowing the portable Zero virtual machine to
+be built for that platform.
+
+The patch added is a backport of the one prepared for JDK 9 by the
+OpenJDK AArch64 Porting Project, available (as of 11 June 2020) for
+download from https://openjdk.java.net/jeps/237.
+---
+ Makefile.am | 3 +-
+ Makefile.in | 12 +-
+ .../hs23/aarch64-extended-support.patch | 1766 +++++++++++++++++
+ 3 files changed, 1775 insertions(+), 6 deletions(-)
+ create mode 100644 patches/hotspot/hs23/aarch64-extended-support.patch
+
+diff --git a/Makefile.am b/Makefile.am
+index 97dac85..f5c917b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -621,7 +621,8 @@ ICEDTEA_PATCHES = \
+ patches/openjdk/6260348-pr3068.patch \
+ patches/openjdk/6961123-pr2975.patch \
+ patches/pr2800-missing_resources.patch \
+- patches/pr3213-conditional_arm32jit.patch
++ patches/pr3213-conditional_arm32jit.patch \
++ patches/hotspot/hs23/aarch64-extended-support.patch
+
+ if WITH_RHINO
+ ICEDTEA_PATCHES += \
+diff --git a/Makefile.in b/Makefile.in
+index aced7c2..e3545ee 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1049,11 +1049,13 @@ ICEDTEA_PATCHES = $(DROP_PATCHES) $(SECURITY_PATCHES) \
+ patches/openjdk/6260348-pr3068.patch \
+ patches/openjdk/6961123-pr2975.patch \
+ patches/pr2800-missing_resources.patch \
+- patches/pr3213-conditional_arm32jit.patch $(am__append_21) \
+- $(am__append_22) $(am__append_23) $(am__append_24) \
+- $(am__append_25) $(am__append_26) $(am__append_27) \
+- $(am__append_28) $(am__append_29) $(am__append_30) \
+- $(am__append_31) $(am__append_32) $(DISTRIBUTION_PATCHES)
++ patches/pr3213-conditional_arm32jit.patch \
++ patches/hotspot/hs23/aarch64-extended-support.patch \
++ $(am__append_21) $(am__append_22) $(am__append_23) \
++ $(am__append_24) $(am__append_25) $(am__append_26) \
++ $(am__append_27) $(am__append_28) $(am__append_29) \
++ $(am__append_30) $(am__append_31) $(am__append_32) \
++ $(DISTRIBUTION_PATCHES)
+ @ENABLE_NSS_FALSE@NSS_PATCHES = patches/nss-not-enabled-config.patch
+ @ENABLE_NSS_TRUE@NSS_PATCHES = patches/nss-config.patch
+
+diff --git a/patches/hotspot/hs23/aarch64-extended-support.patch b/patches/hotspot/hs23/aarch64-extended-support.patch
+new file mode 100644
+index 0000000..7817f4d
+--- /dev/null
++++ b/patches/hotspot/hs23/aarch64-extended-support.patch
+@@ -0,0 +1,1766 @@
++diff --git openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
++index 5771fdd..b23cc17 100644
++--- openjdk.orig/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
+++++ openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
++@@ -304,6 +304,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
++ #ifdef amd64
++ #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
++ #endif
+++#ifdef aarch64
+++#define NPRGREG 32
+++#endif
++ #if defined(sparc) || defined(sparcv9)
++ #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG
++ #endif
++@@ -406,6 +409,12 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
++ regs[REG_INDEX(R_O7)] = gregs.u_regs[14];
++ #endif /* sparc */
++
+++#if defined(aarch64)
+++
+++#define REG_INDEX(reg) sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_##reg
+++
+++#endif /* aarch64 */
+++
++
++ (*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT);
++ return array;
++diff --git openjdk.orig/hotspot/agent/src/os/linux/libproc.h openjdk/hotspot/agent/src/os/linux/libproc.h
++index e4d77f7..c02b841 100644
++--- openjdk.orig/hotspot/agent/src/os/linux/libproc.h
+++++ openjdk/hotspot/agent/src/os/linux/libproc.h
++@@ -54,6 +54,10 @@ struct pt_regs {
++
++ #endif //sparc or sparcv9
++
+++#if defined(aarch64)
+++#include "asm/ptrace.h"
+++#endif
+++
++ /************************************************************************************
++
++ 0. This is very minimal subset of Solaris libproc just enough for current application.
++@@ -97,6 +101,9 @@ unsigned long regs[IA64_REG_COUNT]; /* integer and fp regs */
++ #if defined(sparc) || defined(sparcv9)
++ #define user_regs_struct pt_regs
++ #endif
+++#if defined(aarch64)
+++#define user_regs_struct user_pt_regs
+++#endif
++
++ // This C bool type must be int for compatibility with Linux calls and
++ // it would be a mistake to equivalence it to C++ bool on many platforms
++diff --git openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make
++index 44f21f8..4e8d00b 100644
++--- openjdk.orig/hotspot/make/defs.make
+++++ openjdk/hotspot/make/defs.make
++@@ -232,7 +232,7 @@ ifneq ($(OSNAME),windows)
++
++ # Use uname output for SRCARCH, but deal with platform differences. If ARCH
++ # is not explicitly listed below, it is treated as x86.
++- SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc zero,$(ARCH)))
+++ SRCARCH = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 arm ppc aarch64 zero,$(ARCH)))
++ ARCH/ = x86
++ ARCH/sparc = sparc
++ ARCH/sparc64= sparc
++@@ -242,6 +242,7 @@ ifneq ($(OSNAME),windows)
++ ARCH/ppc64 = ppc
++ ARCH/ppc = ppc
++ ARCH/arm = arm
+++ ARCH/aarch64= aarch64
++ ARCH/zero = zero
++
++ # BUILDARCH is usually the same as SRCARCH, except for sparcv9
++@@ -267,11 +268,12 @@ ifneq ($(OSNAME),windows)
++ LIBARCH/sparcv9 = sparcv9
++ LIBARCH/ia64 = ia64
++ LIBARCH/ppc64 = ppc
+++ LIBARCH/aarch64 = aarch64
++ LIBARCH/ppc = ppc
++ LIBARCH/arm = arm
++ LIBARCH/zero = $(ZERO_LIBARCH)
++
++- LP64_ARCH = sparcv9 amd64 ia64 zero
+++ LP64_ARCH = sparcv9 amd64 ia64 aarch64 zero
++ endif
++
++ # Required make macro settings for all platforms
++diff --git openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make
++index 7c3d4f9..3bc7e8a 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make
+++++ openjdk/hotspot/make/linux/makefiles/buildtree.make
++@@ -385,6 +385,7 @@ DATA_MODE/sparc = 32
++ DATA_MODE/sparcv9 = 64
++ DATA_MODE/amd64 = 64
++ DATA_MODE/ia64 = 64
+++DATA_MODE/aarch64 = 64
++ DATA_MODE/zero = $(ARCH_DATA_MODEL)
++
++ JAVA_FLAG/32 = -d32
++diff --git openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make
++index 7bb3149..39ffda4 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/defs.make
+++++ openjdk/hotspot/make/linux/makefiles/defs.make
++@@ -118,6 +118,15 @@ ifeq ($(ARCH), ppc)
++ HS_ARCH = ppc
++ endif
++
+++# AARCH64
+++ifeq ($(ARCH), aarch64)
+++ ARCH_DATA_MODEL = 64
+++ MAKE_ARGS += LP64=1
+++ PLATFORM = linux-aarch64
+++ VM_PLATFORM = linux_aarch64
+++ HS_ARCH = aarch64
+++endif
+++
++ # determine if HotSpot is being built in JDK6 or earlier version
++ JDK6_OR_EARLIER=0
++ ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
++diff --git openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
++index 897e3a6..44f1673 100644
++--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make
+++++ openjdk/hotspot/make/linux/makefiles/gcc.make
++@@ -104,6 +104,7 @@ endif
++ ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
++ ARCHFLAG/i486 = -m32 -march=i586
++ ARCHFLAG/amd64 = -m64
+++ARCHFLAG/aarch64 =
++ ARCHFLAG/ia64 =
++ ARCHFLAG/sparc = -m32 -mcpu=v9
++ ARCHFLAG/sparcv9 = -m64 -mcpu=v9
++diff --git openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++index c1b0e5c..9f7cda0 100644
++--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
+++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
++@@ -296,6 +296,8 @@ static char cpu_arch[] = "sparcv9";
++ # else
++ static char cpu_arch[] = "sparc";
++ # endif
+++#elif defined(AARCH64)
+++static char cpu_arch[] = "aarch64";
++ #else
++ #error Add appropriate cpu_arch setting
++ #endif
++@@ -1442,7 +1444,7 @@ void os::Linux::clock_init() {
++ #ifndef SYS_clock_getres
++
++ #if defined(IA32) || defined(AMD64)
++-#define SYS_clock_getres IA32_ONLY(266) AMD64_ONLY(229)
+++#define SYS_clock_getres IA32_ONLY(266) AMD64_ONLY(229) AARCH64_ONLY(114)
++ #define sys_clock_getres(x,y) ::syscall(SYS_clock_getres, x, y)
++ #else
++ #warning "SYS_clock_getres not defined for this platform, disabling fast_thread_cpu_time"
++@@ -1930,7 +1932,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
++ static Elf32_Half running_arch_code=EM_AARCH64;
++ #else
++ #error Method os::dll_load requires that one of following is defined:\
++- IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH
+++ IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH, AARCH64
++ #endif
++
++ // Identify compatability class for VM's architecture and library's architecture
++@@ -3056,7 +3058,7 @@ void os::large_page_init() {
++
++ #ifndef ZERO
++ _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M)
++- ARM_ONLY(2 * M) PPC_ONLY(4 * M);
+++ ARM_ONLY(2 * M) PPC_ONLY(4 * M) AARCH64_ONLY(2 * M);
++ #endif // ZERO
++
++ FILE *fp = fopen("/proc/meminfo", "r");
++@@ -5378,11 +5380,11 @@ void Parker::unpark() {
++ extern char** environ;
++
++ #ifndef __NR_fork
++-#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57)
+++#define __NR_fork IA32_ONLY(2) IA64_ONLY(not defined) AMD64_ONLY(57) AARCH64_ONLY(1079)
++ #endif
++
++ #ifndef __NR_execve
++-#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59)
+++#define __NR_execve IA32_ONLY(11) IA64_ONLY(1033) AMD64_ONLY(59) AARCH64_ONLY(221)
++ #endif
++
++ // Run the specified command in a separate process. Return its exit value,
++diff --git openjdk.orig/hotspot/src/share/vm/adlc/main.cpp openjdk/hotspot/src/share/vm/adlc/main.cpp
++index 47e207a..b93504e 100644
++--- openjdk.orig/hotspot/src/share/vm/adlc/main.cpp
+++++ openjdk/hotspot/src/share/vm/adlc/main.cpp
++@@ -244,6 +244,11 @@ int main(int argc, char *argv[])
++ AD.addInclude(AD._CPP_file, "assembler_arm.inline.hpp");
++ AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp");
++ AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp");
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++ AD.addInclude(AD._CPP_file, "assembler_aarch64.inline.hpp");
+++ AD.addInclude(AD._CPP_file, "nativeInst_aarch64.hpp");
+++ AD.addInclude(AD._CPP_file, "vmreg_aarch64.inline.hpp");
++ #endif
++ AD.addInclude(AD._HPP_file, "memory/allocation.hpp");
++ AD.addInclude(AD._HPP_file, "opto/machnode.hpp");
++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp openjdk/hotspot/src/share/vm/asm/assembler.cpp
++index 2bcdcbc..57787ac 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.cpp
+++++ openjdk/hotspot/src/share/vm/asm/assembler.cpp
++@@ -43,6 +43,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.inline.hpp"
+++#endif
++
++
++ // Implementation of AbstractAssembler
++diff --git openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp openjdk/hotspot/src/share/vm/asm/assembler.hpp
++index c25aa3f..4f77825 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/assembler.hpp
+++++ openjdk/hotspot/src/share/vm/asm/assembler.hpp
++@@ -51,6 +51,10 @@
++ # include "register_ppc.hpp"
++ # include "vm_version_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++# include "vm_version_aarch64.hpp"
+++#endif
++
++ // This file contains platform-independent assembler declarations.
++
++@@ -459,6 +463,9 @@ class AbstractAssembler : public ResourceObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "assembler_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "assembler_aarch64.hpp"
+++#endif
++
++
++ #endif // SHARE_VM_ASM_ASSEMBLER_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp
++index 685297a..002faef 100644
++--- openjdk.orig/hotspot/src/share/vm/asm/codeBuffer.hpp
+++++ openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp
++@@ -573,6 +573,9 @@ class CodeBuffer: public StackObj {
++ #ifdef TARGET_ARCH_ppc
++ # include "codeBuffer_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "codeBuffer_aarch64.hpp"
+++#endif
++
++ };
++
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
++index c95a23c..2ec31e5 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Canonicalizer.cpp
++@@ -877,6 +877,13 @@ static bool match(UnsafeRawOp* x,
++ return false;
++ }
++
+++// AARCH64 cannot handle shifts which are not either 0, or log2 of the type size
+++#ifdef AARCH64
+++ if (*log2_scale != 0 &&
+++ (1 << *log2_scale) != type2aelembytes(x->basic_type(), true))
+++ return false;
+++#endif
+++
++ // If the value is pinned then it will be always be computed so
++ // there's no profit to reshaping the expression.
++ return !root->is_pinned();
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp
++index bebb3b0..ddaceb7 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_Defs.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_Defs.hpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "register_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "register_aarch64.hpp"
+++#endif
++
++ // set frame size and return address offset to these values in blobs
++ // (if the compiled frame uses ebp as link pointer on IA; otherwise,
++@@ -62,6 +65,9 @@ enum {
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_Defs_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_Defs_aarch64.hpp"
+++#endif
++
++
++ // native word offsets from memory address
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
++index a1e4c38..491b064 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FpuStackSim.hpp
++@@ -44,6 +44,9 @@ class FpuStackSim;
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_FpuStackSim_ppc.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_FpuStackSim_aarch64.hpp"
+++#endif
++
++
++ #endif // SHARE_VM_C1_C1_FPUSTACKSIM_HPP
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp
++index ea50b27..6a3dc63 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.cpp
++@@ -41,6 +41,9 @@
++ #ifdef TARGET_ARCH_ppc
++ # include "vmreg_ppc.inline.hpp"
++ #endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "vmreg_aarch64.inline.hpp"
+++#endif
++
++
++
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp
++index 288fc5c..e9a0250 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_FrameMap.hpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_FrameMap.hpp
++@@ -93,6 +93,9 @@ class FrameMap : public CompilationResourceObj {
++ #endif
++ #ifdef TARGET_ARCH_ppc
++ # include "c1_FrameMap_ppc.hpp"
+++#endif
+++#ifdef TARGET_ARCH_aarch64
+++# include "c1_FrameMap_aarch64.hpp"
++ #endif
++
++
++diff --git openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp
++index 776a6a3..6e1a362 100644
++--- openjdk.orig/hotspot/src/share/vm/c1/c1_LIR.cpp
+++++ openjdk/hotspot/src/share/vm/c1/c1_LIR.cpp
++@@ -67,7 +67,7 @@ FloatRegister LIR_OprDesc::as_double_reg() const {
++
++ #endif
++
++-#ifdef ARM
+++#if defined(ARM) || defined (TARGET_ARCH_aarch64)
++
++ FloatRegister LIR_OprDesc::as_float_reg() const {
++ return as_FloatRegister(fpu_regnr());
++@@ -147,7 +147,11 @@ void LIR_Address::verify() const {
++ #endif
++ #ifdef _LP64
++ assert(base()->is_cpu_register(), "wrong base operand");
+++#ifndef TARGET_ARCH_aarch64
++ assert(index()->is_illegal() || index()->is_double_cpu(), "wrong index operand");
+++#else
+++ assert(index()->is_illegal() || index()->is_double_cpu() || index()->is_single_cpu(), "wrong index operand");
+++#endif
++ assert(base()->type() == T_OBJECT || base()->type() == T_LONG,
++ "wrong type for addresses");
++ #else
++@@ -545,7 +549,7 @@ void LIR_OpVisitState::visit(LIR_Op* op) {
++ assert(opConvert->_info == NULL, "must be");
++ if (opConvert->_opr->is_valid()) do_input(opConvert->_opr);
++ if (opConvert->_result->is_valid()) do_output(opConvert->_result);
++-#ifdef PPC
+++#if defined(PPC) || defined(TARGET_ARCH_aarch64)
++ if (opConvert->_tmp1->is_valid()) do_temp(opConvert->_tmp1);
++ if (opConvert->_tmp2->is_valid()) do_temp(opConvert->_tmp2);
++ #endif
++@@ -1468,6 +1472,11 @@ void LIR_OprDesc::print(outputStream* out) const {
++ out->print("fpu%d", fpu_regnr());
++ } else if (is_double_fpu()) {
++ out->print("fpu%d", fpu_regnrLo());
+++#elif defined(AARCH64)
+++ } else if (is_single_fpu()) {
+++ out->print("fpu%d", fpu_regnr());
+++ } else if (is_double_fpu()) {
+++ out->print("fpu%d", fpu_regnrLo());
++ #elif defined(ARM)
++ } else if (is_single_fpu()) {
++ out->print("s%d", fpu_regnr());
++@@ -1836,7 +1845,7 @@ void LIR_OpConvert::print_instr(outputStream* out) const {
++ print_bytecode(out, bytecode());
++ in_opr()->print(out); out->print(" ");
++ result_opr()->print(out); out->print(" ");
++-#ifd
This message was truncated. Download the full message here.
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 4/7] gnu: icedtea-7: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-4-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-7)[arguments]<#:configure-flags>: Add
"--with-parallel-jobs".
---
gnu/packages/java.scm | 2 ++
1 file changed, 2 insertions(+)

Toggle diff (15 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 3618b9ee3f..5f46e883fc 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1169,6 +1169,8 @@ bootstrapping purposes.")
"--enable-bootstrap"
"--enable-nss"
"--without-rhino"
+ ,(string-append "--with-parallel-jobs="
+ (number->string (parallel-job-count)))
"--disable-downloading"
"--disable-tests" ;they are run in the check phase instead
"--with-openjdk-src-dir=./openjdk.src"
--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 5/7] gnu: icedtea-7: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-5-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-7)[native-inputs]: Remove obsolete,
architecture-dependent patch to "hotspot-drop"; replace with patch to fix
build on aarch64-linux.
* gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/java.scm | 2 +-
.../icedtea-7-hotspot-aarch64-use-c++98.patch | 33 +++++++++++++++++++
3 files changed, 35 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch

Toggle diff (66 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 36dbbd0968..4c030a57db 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1094,6 +1094,7 @@ dist_patch_DATA = \
%D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \
%D%/packages/patches/icecat-use-system-media-libs.patch \
%D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \
+ %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icu4c-CVE-2020-10531.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 5f46e883fc..b86e9aab61 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1599,7 +1599,7 @@ bootstrapping purposes.")
(base32
"17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
(patches (search-patches
- "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
+ "icedtea-7-hotspot-aarch64-use-c++98.patch"))))
("ant" ,ant-bootstrap)
("attr" ,attr)
("coreutils" ,coreutils)
diff --git a/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
new file mode 100644
index 0000000000..7ad215f975
--- /dev/null
+++ b/gnu/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch
@@ -0,0 +1,33 @@
+From 919dd016be1abd213b3a7d0e9a3b79e3286ef6ad Mon Sep 17 00:00:00 2001
+From: Simon South <simon@simonsouth.net>
+Date: Wed, 10 Jun 2020 13:02:09 -0400
+Subject: [PATCH] aarch64: Use only C++98
+
+This patch removes an unneeded C++ template that causes the build to
+fail for aarch64 using gcc 7.5.0 and its default support for only the
+C++98 standard.
+
+It is based on original work by Severin Gehwolf <sgehwolf@redhat.com>.
+See: https://bugzilla.redhat.com/show_bug.cgi?id=1307224
+---
+ src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
+index 0bc0a2b..6f73ca0 100644
+--- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
++++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
+@@ -194,10 +194,6 @@ static int reg2offset_out(VMReg r) {
+ return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
+ }
+
+-template <class T> static const T& min (const T& a, const T& b) {
+- return (a > b) ? b : a;
+-}
+-
+ // ---------------------------------------------------------------------------
+ // Read the array of BasicTypes from a signature, and compute where the
+ // arguments should go. Values in the VMRegPair regs array refer to 4-byte
+--
+2.26.2
+
--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 7/7] gnu: icedtea-8: Fix build on aarch64-linux.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-7-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-8)[native-inputs]: Remove obsolete,
architecture-dependent patch to "hotspot-drop".
* gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch: Delete
file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
gnu/local.mk | 1 -
gnu/packages/java.scm | 12 +----
...ea-7-hotspot-gcc-segfault-workaround.patch | 45 -------------------
3 files changed, 2 insertions(+), 56 deletions(-)
delete mode 100644 gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch

Toggle diff (88 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4c030a57db..2af4c260d6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1095,7 +1095,6 @@ dist_patch_DATA = \
%D%/packages/patches/icecat-use-system-media-libs.patch \
%D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch \
%D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \
- %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icu4c-CVE-2020-10531.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/id3lib-UTF16-writing-bug.patch \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index d655f73101..38791b30f3 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1795,16 +1795,8 @@ new Date();"))
,(drop "langtools"
"15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw"))
("hotspot-drop"
- ,(origin
- (method url-fetch)
- (uri (string-append
- "http://icedtea.classpath.org/download/drops"
- "/icedtea8/" version "/hotspot.tar.xz"))
- (sha256
- (base32
- "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
- (patches (search-patches
- "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
+ ,(drop "hotspot"
+ "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
("nashorn-drop"
,(drop "nashorn"
"19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))
diff --git a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
deleted file mode 100644
index 35cfe38152..0000000000
--- a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
-Date: Mon, 2 Jul 2018 23:37:25 +0200
-Subject: [PATCH] Fix gcc segfault.
-
----
- src/share/vm/opto/output.cpp | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp
-index d46cb87..0eb9eda 100644
---- a/src/share/vm/opto/output.cpp
-+++ b/src/share/vm/opto/output.cpp
-@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
-
- // Initializer for class Scheduling
-
-+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
-+
- Scheduling::Scheduling(Arena *arena, Compile &compile)
- : _arena(arena),
- _cfg(compile.cfg()),
-@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile)
- memset(_current_latency, 0, node_max * sizeof(unsigned short));
-
- // Clear the bundling information
-- memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements));
-+ memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element));
-
- // Get the last node
- Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1);
-@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() {
- _bundle_use.reset();
-
- memcpy(_bundle_use_elements,
-- Pipeline_Use::elaborated_elements,
-- sizeof(Pipeline_Use::elaborated_elements));
-+ (void *)eePointer,
-+ 11*sizeof(Pipeline_Use_Element));
- }
-
- // Perform instruction scheduling and bundling over the sequence of
---
-2.18.0
-
--
2.26.2
S
S
Simon South wrote on 15 Jun 2020 17:22
[PATCH 6/7] gnu: icedtea-8: Build in parallel using correct number of jobs.
(address . 41871@debbugs.gnu.org)(name . Simon South)(address . simon@simonsouth.net)
20200615152257.12938-6-simon@simonsouth.net
* gnu/packages/java.scm (icedtea-8)[arguments]<#:configure-flags>: Add
"--with-parallel-jobs".
---
gnu/packages/java.scm | 2 ++
1 file changed, 2 insertions(+)

Toggle diff (15 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index b86e9aab61..d655f73101 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1702,6 +1702,8 @@ IcedTea build harness.")
`( ;;"--disable-bootstrap"
"--enable-bootstrap"
"--enable-nss"
+ ,(string-append "--with-parallel-jobs="
+ (number->string (parallel-job-count)))
"--disable-downloading"
"--disable-system-pcsc"
"--disable-system-sctp"
--
2.26.2
R
R
Ricardo Wurmus wrote on 14 Sep 2020 15:24
Re: [bug#41871] [PATCH 0/7] IcedTea: Build (efficiently) on aarch64-linux
(name . Simon South)(address . simon@simonsouth.net)(address . 41871@debbugs.gnu.org)
87tuw0xzi8.fsf@elephly.net
Hi Simon,

my apologies for the very long delay!

Toggle quote (10 lines)
> This patch series applies a number of changes to the icedtea-6, -7 and -8
> packages that allow them to build (efficiently) on aarch64-linux systems.
>
> It assumes the patches in issues 41748 and 41648 have already been applied, in
> that order.
>
> With these three sets of patches I've been able to complete the entire Java
> bootstrap process on both AArch64 and x86_64 and have successfully compiled
> and run a Java application on AArch64 using OpenJDK 14.

This looks really great! I have yet to read the patches in 41748 and
41648, but these patches here look good to me.

Thank you very much for working on this!

--
Ricardo
E
E
Efraim Flashner wrote on 28 Oct 2020 09:51
(name . Ricardo Wurmus)(address . rekado@elephly.net)
20201028085103.GZ10124@E5400
On Mon, Sep 14, 2020 at 03:24:15PM +0200, Ricardo Wurmus wrote:
Toggle quote (24 lines)
>
> Hi Simon,
>
> my apologies for the very long delay!
>
> > This patch series applies a number of changes to the icedtea-6, -7 and -8
> > packages that allow them to build (efficiently) on aarch64-linux systems.
> >
> > It assumes the patches in issues 41748 and 41648 have already been applied, in
> > that order.
> >
> > With these three sets of patches I've been able to complete the entire Java
> > bootstrap process on both AArch64 and x86_64 and have successfully compiled
> > and run a Java application on AArch64 using OpenJDK 14.
>
> This looks really great! I have yet to read the patches in 41748 and
> 41648, but these patches here look good to me.
>
> Thank you very much for working on this!
>
> --
> Ricardo
>

I had this on my TODO list for a while and I seem to have forgotten
about it. Since at least one of the patches was applied to staging I'm
testing them on staging now. Assuming no problems on x86_64 and aarch64
I'll go ahead and push them.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+ZMPYACgkQQarn3Mo9
g1HC/BAAtr+3/MRGe1jScmZuAqLmVIXtvN/C2T+ZOep2p/UTS7shJeD+rVYGBE0U
PIRyQBGQK/OFC56EhItCz7GMez5Xbeutvgs8KKz6ZuYIWaN9ZcLEuobJ8Kt7eId0
CKZoomEFQamQkF1ehQrEtWYHQKV/Z1J6xNC4QUJEGvXLzlqJ1GI8cNArYci8eaGR
NYaxuc4BZq9eAJV3O2AOZWjxdUW45z1TihS795pKireGoZCefTaujpMXikK4li6v
TsB+P7ojAMR+dxOgTOX4Q3DqG4RhCkg91upBZYlFrWP7PLhXVUrbqNpTFloACkhT
gFAan+ThJ+19b9yMjdW0Mvp+oR+CDkkmqTLacrHowvUMj4KE5e/KZH3XHBIIXlKK
nKwjw2J9/IV8AGWZMb9XfV3ezOJ7JTcy5l1BA1j6smgTEyfkfd+VHTwAgCcDSC7h
GfXAR5JiH6yh25pMIdTqAcZlyyoAJxrSHSYPvFEEM3em6hRwdw/ddZcni3r5SN2Q
1FG7HakEbF4dpRYG/XTPCvVfQNrQefwu82spevLK/4pJeop19NDF8quhJDTpkv+G
EPlJiK+WBzX3Q5LFG4vF7cZax7ZLkR2YxxEI8SScFRrwv4egXcQw6B2ysDa8bLZk
kAAiQ+hMZQmiROtT4j0ptEIT09vZt5oySy/iMhvOy/IhrRA4AP8=
=BtEY
-----END PGP SIGNATURE-----


S
S
Simon South wrote on 28 Oct 2020 15:35
(name . Efraim Flashner)(address . efraim@flashner.co.il)
871rhiv2oz.fsf@simonsouth.net
Efraim Flashner <efraim@flashner.co.il> writes:
Toggle quote (9 lines)
> On Mon, Sep 14, 2020 at 03:24:15PM +0200, Ricardo Wurmus wrote:
>> This looks really great! I have yet to read the patches in 41748 and
>> 41648, but these patches here look good to me...
>
> I had this on my TODO list for a while and I seem to have forgotten
> about it. Since at least one of the patches was applied to staging I'm
> testing them on staging now. Assuming no problems on x86_64 and aarch64
> I'll go ahead and push them.

Wonderful. Thank you both for looking at these changes.

If they're able to be applied in time, it'll be possible to list
"Support for Java applications on aarch64-linux" among the new features
in Guix 1.2.0.

--
Simon South
simon@simonsouth.net
E
E
Efraim Flashner wrote on 29 Oct 2020 14:15
(name . Simon South)(address . simon@simonsouth.net)
20201029131526.GE10124@E5400
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+awGkACgkQQarn3Mo9
g1EXKBAAwo9SEdcOloKvASWCrQqhM/RXKDMEqR7WDc0iEGO5C1Nc2RhFAlvILqNQ
gaymOj89sEqvKWsGObnK1zxrCNSaQKoe0qPJYb0lImAcwGDTbL9i7/z4CDlFYJ72
Gps4nap4fflLQNNgCxylqL8ey6EDfMJilDQf67YXft0U/73dUqLNdqB4IqMXZNfF
4YSoKgYZP5GBawmCJGuRUWzp2RzgNFnVI6XKyEVdGCcfV0GMdDoE7kTQOo30kb00
+c+o/cij1bqR85b8+YGRclPOCvZcUESXlEOe7Pei8rae+mEKxZC81DmsAKXNpKM4
mL3FDV0ESeWCgb9/qbsZ/O9zosYUgluf0bTlUF31WTrpooYKKdGMc71Va1aDP+hk
JWgu6eEtToY+YX7b06cuD10xff3xLAOgG83YrzYggEu/0We8x6XxTq6T8H1vEzJl
O9egfKunAzSuxjgnJg7ajQMXKxPVg9K22GUbDHkPW2JBEvKsi70Kbd1JGcaWzPTw
Z1UHEZxeRIhBtDwtsD0gzjgQ0kf7ltDxMeTeNJAqlbNZ/VVA3C/HCsOgTyDGz3IV
bxFWQSvTh83zABxY2PpkkbY7BzwpsLuwdzLfCTdnoO84xhzF+yUXk2y5KTu7cU6q
l9mRv+w0xJT5fRyw+ytpJ2l6dd6ttQeF95RH8WIdCMOUf/ezYgU=
=tY/F
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 2 Nov 2020 10:54
(name . Simon South)(address . simon@simonsouth.net)
20201102095405.GB984@E5400
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+f1z0ACgkQQarn3Mo9
g1GYVg//Q1h7czxijQuS4B5U0CAexl1UM69Y18IK7ErUwoTAwZXdk2w5iA2SqUiE
uCv9tbnjVpdVx5nJm4F0+2uxvSAQVxEGv/7FbGnmkq2YfUtF696pP9ciIG7LPT6W
pxt8MXYdyJn1QvUdhffZW5/rbYyTaDZx9f4Tn7eRPKsWDGQ/AN3SUXO4K2kvsXTs
vzO2W6nc0Pl8hXYBAabvIB1oBxwSdbxJ/nr1Upk2tlfIoEY8kavYxOySqEjGusGI
lHMLr74lS1kIE0j3ogHuTaM20IQgwOk+WOf8rSFD+9Etit7BDjhmCFn7KzsFaaU1
3THOgQaNL3dFtcq37YzpV13ck128z68yXCEB1aeLS4enQ3lVRyfcYdvoQ+VCklq9
o5fqpzsi2ADO8uEdZXxYL2Lm4yT8OEOt3iZdIvCtKrySiQlMqojBRNyEn/18DvIt
2rdqst+awk5O6gCCcbD1E6gxVVXVi1bFzsYJr0ajoy2CpvZzzfJGQYgF9UUpLTID
dxbTG7Dyy+qKVBzZvyjTdWO6u+CgvbXIOmb/irXp1NjgTcHRQhO9eGSHrrZ/NPmq
NlsWNvX0JsJ+H+u4BxS2OGICu96FVGnyaZqrSyBE1iNTdEfqMKSnp1+bey91AiBa
nx8YTwyyblCDx08oRzdXhVNyENzHbWHMbf5zICUJaQRQrh6woUA=
=fEsc
-----END PGP SIGNATURE-----


S
S
Simon South wrote on 2 Nov 2020 13:35
(name . Efraim Flashner)(address . efraim@flashner.co.il)
87ft5sx7g4.fsf@simonsouth.net
Efraim Flashner <efraim@flashner.co.il> writes:
Toggle quote (4 lines)
> I'm still running into trouble building icedtea@2 on aarch64 on staging
> so I've locally applied the patches on master and I'll test it out
> there.

I'll look into this today as well.

I certainly did not see these build errors earlier so I wonder what
could have changed.

--
Simon South
simon@simonsouth.net
S
S
Simon South wrote on 3 Nov 2020 13:59
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 41871@debbugs.gnu.org)
87o8keppex.fsf@simonsouth.net
Efraim Flashner <efraim@flashner.co.il> writes:
Toggle quote (3 lines)
> I'm still running into trouble building icedtea@2 on aarch64 on
> staging...

This completed successfully overnight on my ROCK64. Efraim, would you be
willing to share with me (off-list) your log file from the failed build
so I can try to find what's different?

My build was from the staging branch (commit 353bdae32f72) with my seven
commits added.

--
Simon South
simon@simonsouth.net
E
E
Efraim Flashner wrote on 3 Nov 2020 14:24
(name . Simon South)(address . simon@simonsouth.net)(address . 41871@debbugs.gnu.org)
20201103132430.GA9755@E5400
On Tue, Nov 03, 2020 at 07:59:02AM -0500, Simon South wrote:
Toggle quote (12 lines)
> Efraim Flashner <efraim@flashner.co.il> writes:
> > I'm still running into trouble building icedtea@2 on aarch64 on
> > staging...
>
> This completed successfully overnight on my ROCK64. Efraim, would you be
> willing to share with me (off-list) your log file from the failed build
> so I can try to find what's different?
>
> My build was from the staging branch (commit 353bdae32f72) with my seven
> commits added.
>

It turns out my log file was truncated during the unpack phase (I
probably started and canceled the build) so I'm rebuilding it. I've also
gone and cloned guix on my odroid-c2 to see if it works there on
staging. It's possible that my pine64 is acting up.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+hWg4ACgkQQarn3Mo9
g1EOkBAAhbjHu6oOUx1m1xouLn28crMkSNYXoiP4F6EnGy4579j59GNIQLWxq/g1
x/x1tadEkhorz9SZpqO0r2V01jK875ZVTh3O6lwXMTuSYaDMkYC4M9YU0fqVU6pi
LMeW0fOSTDVLN3U7CyXQkMAl2rVI8wVklD8oX0i+WGE6Ka8XfRbZjuzzoGHGcqTD
lJ3DYFQn0G3nOxwvII9XOyU399bjgQGsyWBohmKAnuu/pNm4aA8NamHb1OvuXqs9
GZObWrIS0ZJhghY6yg21aRIDYRo5se59A+ZCgi1puvwTi8mozIXQVdWE23rr+JAe
PWuntUNbMeTL9osMSvtqclI7mTTXIhBzQTAZ5zVgebt8Hiod6KXdCeUWcWmCApjo
mTPAhdZZiHsuXWtmwCRtc4EewkfnjYLwUn2aCXSB8mArLJw/kLtjMfy8tA8PYREt
xuFBh60Fe/uxJ8fcpwSf1dmBhRVFUvYd7JrDLXHjKA8/vLNFQQR43JibmiWZhlgF
Dx86eXIgekz6TAVjLQWUZapXaoX1uY7liZGipOLHl+GfKVLq2gG3Mom9JpDNZBNo
eRO0N7o1Evwh6djxi+Oads4k4ZZppVESC0ql0d8yq0XJ2nw3Frc8TDlvQBJ2/zWt
XLNCgrSLVsF7LtcYno27DQJPcR0PhOIiCIDr85i5dyl11XLGh7U=
=zDaI
-----END PGP SIGNATURE-----


S
S
Simon South wrote on 3 Nov 2020 14:41
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 41871@debbugs.gnu.org)
87h7q6pnge.fsf@simonsouth.net
Efraim Flashner <efraim@flashner.co.il> writes:
Toggle quote (2 lines)
> It's possible that my pine64 is acting up.

I meant to mention in my original email: My build was using a derivation
with a hash prefix different from yours, and my build log doesn't show
"MethodHandle.java" being built at all. So I suspect there may be
something different in your machine's environment.

--
Simon South
simon@simonsouth.net
E
E
Efraim Flashner wrote on 4 Nov 2020 11:58
(name . Simon South)(address . simon@simonsouth.net)(address . 41871-done@debbugs.gnu.org)
20201104105805.GA1203@E5400
On Tue, Nov 03, 2020 at 08:41:21AM -0500, Simon South wrote:
Toggle quote (9 lines)
> Efraim Flashner <efraim@flashner.co.il> writes:
> > It's possible that my pine64 is acting up.
>
> I meant to mention in my original email: My build was using a derivation
> with a hash prefix different from yours, and my build log doesn't show
> "MethodHandle.java" being built at all. So I suspect there may be
> something different in your machine's environment.
>

Not sure what it is about my pine64, could be that I'm currently running
it without swap. In any event, all three versions of icedtea built just
fine on my odroid-c2 so I'm going to go ahead and push the commits to
staging.

I built icedtea@3 a second time, under 200 minutes with guix-daemon
limited to 2 cores.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+iiT0ACgkQQarn3Mo9
g1GHNQ//eDk8mu/fSSmpqSUPXEHvfZ3l8srPEfXEPpnygmXyaJYc3RiAQLGPrfNQ
OaPeVCLdsBPOJlp6JtAPq0OJyVLTipwwG8Fz6U75wUMp6yT4drCmKVTSh6DlEywb
M0FT9dzSWnl9YwaCn2JzrciSxQwMJS5c88rnvQ04mTJG4U6llVTEftnsn2qGg1gr
cpwOCan+6DVhwKb7aky0uk6g9XUXeLDB7cLeXUAPfk8BZAA0JcMMmPxTWXcXiyGc
wm8QrW6CPJ8Axk+Ko/TFgDGzAeYW1ntyvztGjNTtsXPSRA9O2QUKnZgxeKjiTlQv
0Xcn1QI9EcbSfYY9e3i2O5fKC8/RX6Ua/nB+yPrdfAHucfYxQ2eGo+sGcTy08oJS
+YeOQg+hrcdkU9yTfk7FATjy8zDRa1JEAAoj3ygKWSeIv85YRlDLRvbEP3O7OsLW
G21RgkNB8amzRL7Yq9FSBbMRnmQ9Mx0dafecfTjQYUDQyMuxpWl3DL+ztciRwGE4
KC65FQtbwSGo0AXoP6SKf8W9Blec0aZBqQ6uWC8g1H2UpMdwUsSUCo58RjL3K857
6RP6S627azSgzX1uw/FT9HXnJJAizWeFXBIv35maVwBwEvwKZIco1xVLb+u6LDWx
yHJz/VdpP3R3CtBeln1nrga3VmghOfhbr+DG5rRI7Yc+q+z/MnY=
=2kZQ
-----END PGP SIGNATURE-----


Closed
?