RFR: 8264449: Enable reproducible builds with SOURCE_DATE_EPOCH [v7]
Johan Vos
jvos at openjdk.org
Mon Jun 20 20:22:10 UTC 2022
On Mon, 20 Jun 2022 20:02:38 GMT, John Neffenger <jgneff at openjdk.org> wrote:
> > But if we want to have reproducibility amongst ephemeral systems, there is lots of other work to be done.
>
> On the contrary, it's precisely these well-defined ephemeral systems that make it easy to reproducible a build. The only other work to be done is to share the build log.
In that case, my understanding of "ephemeral system" was wrong :)
> For example, I build JavaFX in a transient container that installs the latest build of Ubuntu 18.04, the current release of OpenJDK, and the following extra packages: `pkg-config`, `libgtk2.0-dev`, `libxtst-dev`, `libgtk-3-dev`, and `libxxf86vm-dev`. With that information, along with the date, the build script, and the JavaFX release tag, anyone can reproduce the build environment. If we allow for reproducible builds, anyone could reproduce the build and get bit-by-bit identical output.
The work I'm talking about is that an Ubuntu 18.04 is not suited to build/distribute OpenJFX. Over the past months, we've been working to create a devkit that is capable of building binaries and libraries that work on a wide variety of systems/distributions, e.g. from Ubuntu 16.04 to Fedora 36. Especially with media and webkit, this is not trivial. One of the main issues is the dependencies on libc versions (leading to the typical unresolved @GLIBC_X.Y symbol errors at runtime).
It's easy to build JavaFX on a single system and run it on more or less similar systems, but it is harder to support this wide range of OS'es and sysroots. Unless you restrict a number of configurations, there is afaik no stock distribution that allows this.
The "lots of work" I'm talking about is the reproducible and automated way to create those devkits so that they support a reasonable number of {build/host/target} triplets.
-------------
PR: https://git.openjdk.org/jfx/pull/446
More information about the openjfx-dev
mailing list