unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Simon South <simon@simonsouth.net>
To: 41871@debbugs.gnu.org
Cc: Simon South <simon@simonsouth.net>
Subject: [bug#41871] [PATCH 0/7] IcedTea: Build (efficiently) on aarch64-linux
Date: Mon, 15 Jun 2020 11:18:56 -0400	[thread overview]
Message-ID: <20200615151856.12283-1-simon@simonsouth.net> (raw)

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




             reply	other threads:[~2020-06-15 15:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-15 15:18 Simon South [this message]
2020-06-15 15:22 ` [bug#41871] [PATCH 1/7] gnu: icedtea-6: Build in parallel using correct number of jobs Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 2/7] gnu: icedtea-6: Remove obsolete, architecture-dependent patch Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 3/7] gnu: icedtea-6: Fix build on aarch64-linux Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 4/7] gnu: icedtea-7: Build in parallel using correct number of jobs Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 5/7] gnu: icedtea-7: Fix build on aarch64-linux Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 6/7] gnu: icedtea-8: Build in parallel using correct number of jobs Simon South
2020-06-15 15:22   ` [bug#41871] [PATCH 7/7] gnu: icedtea-8: Fix build on aarch64-linux Simon South
2020-09-14 13:24 ` [bug#41871] [PATCH 0/7] IcedTea: Build (efficiently) " Ricardo Wurmus
2020-10-28  8:51   ` Efraim Flashner
2020-10-28 14:35     ` Simon South
2020-10-29 13:15       ` Efraim Flashner
2020-11-02  9:54       ` Efraim Flashner
2020-11-02 12:35         ` Simon South
2020-11-03 12:59         ` Simon South
2020-11-03 13:24           ` Efraim Flashner
2020-11-03 13:41             ` Simon South
2020-11-04 10:58               ` bug#41871: " Efraim Flashner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200615151856.12283-1-simon@simonsouth.net \
    --to=simon@simonsouth.net \
    --cc=41871@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).