> It is > [possible](https://github.com/openjdk/jdk/blob/master/doc/building.md#creating-and-using-sysroots-with-qemu-deboostrap) > to efficiently cross-compile to foreign architectures on current GH actions > that are driven by Ubuntu. I have been using this method for years to produce > binaries at [builds.shipilev.net](https://builds.shipilev.net). Those > cross-compilation targets frequently find arch-specific build bugs. > > This improvement adds several foreign architectures to GH actions workflow to > provide a safety net against build breakages on foreign architectures. We > cannot easily _test_ those foreign architectures (that is another can of > worms, not easily doable without exploding the pipeline time), but even > having the builds cover a significant part of follow-up bugs for JDK/VM work. > > As workflow performance optimization, foreign architectures reuse the Linux > x86_64 release build as build JDK. Otherwise, they would need to compile it > again for every config, thus doubling the build times. This means that > foreign architectures builds are running in parallel with test jobs, which > might prolong the critical path length for the entire batch to complete. > These builds still complete before Windows and MacOS testing catches up. On > the upside, x86_64 act as "pilot builds" for foreign arches: if x86_64 fails, > then foreign arches would not be compiled at all. > > The created sysroot is also cached and keyed on `submit.yml` hash. So it > would regenerate only if the workflow itself changes. The regeneration takes > about 10 minutes, and it produces about 580M uncompressed, and 270M > zstd-compressed bundle. In the end, this adds 4x270 = 1080M into local cache.
Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: Incomplete fix: remove special dirs ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/1147/files - new: https://git.openjdk.java.net/jdk/pull/1147/files/c69b529e..eb6b10a3 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1147&range=02 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1147&range=01-02 Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod Patch: https://git.openjdk.java.net/jdk/pull/1147.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/1147/head:pull/1147 PR: https://git.openjdk.java.net/jdk/pull/1147