On Wed, 31 Mar 2021 23:08:38 GMT, John Neffenger <jgn...@openjdk.org> wrote:

>> I recommend trying this with the following gradle flags, to match the 
>> settings for production builds:
>> 
>> -PCONF=Release -PPROMOTED_BUILD_NUMBER=NNN -PHUDSON_BUILD_NUMBER=MMM 
>> -PHUDSON_JOB_NAME=jfx -PCOMPILE_WEBKIT=true -PCOMPILE_MEDIA=true 
>> -PBUILD_LIBAV_STUBS=true
>> 
>> where `NNN` is the promoted build number that is being built (usually taken 
>> from the repo tag) and `MMM` is the CI build number. You can just pick any 
>> two positive numbers for your test builds.
>> 
>> Note that this will build the native media libraries and the native webkit 
>> library.
>
>> I recommend trying this with the following gradle flags, to match the 
>> settings for production builds:
> 
> Thanks, Kevin. Good news so far. I'm posting the Linux results while I run 
> the macOS and Windows builds.
> 
> #### Linux
> 
> I ran the following commands twice, moving the `build` directory to `build1` 
> and then `build2` to save their output:
> 
> $ bash gradlew clean
> $ bash gradlew -PCONF=Release -PPROMOTED_BUILD_NUMBER=5 \
>     -PHUDSON_BUILD_NUMBER=101 -PHUDSON_JOB_NAME=jfx \
>     -PCOMPILE_WEBKIT=true -PCOMPILE_MEDIA=true \
>     -PBUILD_LIBAV_STUBS=true sdk jmods javadoc
> 
> Then I changed the Hudson job number with `-PHUDSON_BUILD_NUMBER=102`, ran 
> the build a third time, and moved `build` to `build3`. I also ran 
> `strip-nondeterminism` as shown in the first comment of this pull request.
> 
> The first result is as hoped, and the second result is as expected:
> 
> $ diff -qr build1 build2
> $ diff -qr build2 build3
> Files build2/jmods/javafx.base.jmod
>    and build3/jmods/javafx.base.jmod
>    differ
> Files 
> build2/modular-sdk/modules/javafx.base/com/sun/javafx/runtime/VersionInfo.class
>   and 
> build3/modular-sdk/modules/javafx.base/com/sun/javafx/runtime/VersionInfo.class
>   differ
> Files 
> build2/modular-sdk/modules_src/javafx.base/com/sun/javafx/runtime/VersionInfo.java
>   and 
> build3/modular-sdk/modules_src/javafx.base/com/sun/javafx/runtime/VersionInfo.java
>   differ
> Files build2/publications/javafx.base-linux.jar
>   and build3/publications/javafx.base-linux.jar
>   differ
> Files build2/sdk/lib/javafx.base.jar
>   and build3/sdk/lib/javafx.base.jar
>   differ
> Files build2/sdk/lib/src.zip
>   and build3/sdk/lib/src.zip
>   differ
> 
> You have to appreciate the irony of adding all this information to the build 
> — the time, the path, even the job number — so that we can uniquely identify 
> a build by its output. Meanwhile, if we didn't add this information, our 
> builds could be uniquely identified by a single Git tag.

There's good news and bad news. Good news first.

#### macOS

The two comparisons of the three builds on macOS were similar to those on Linux:

$ diff -qr build1 build2
$ diff -qr build2 build3
Files build2/jmods/javafx.base.jmod
  and build3/jmods/javafx.base.jmod
  differ
Files 
build2/modular-sdk/modules/javafx.base/com/sun/javafx/runtime/VersionInfo.class
  and 
build3/modular-sdk/modules/javafx.base/com/sun/javafx/runtime/VersionInfo.class
  differ
Files 
build2/modular-sdk/modules_src/javafx.base/com/sun/javafx/runtime/VersionInfo.java
  and 
build3/modular-sdk/modules_src/javafx.base/com/sun/javafx/runtime/VersionInfo.java
  differ
Files build2/publications/javafx.base-mac.jar
  and build3/publications/javafx.base-mac.jar
  differ
Files build2/sdk/lib/javafx.base.jar
  and build3/sdk/lib/javafx.base.jar
  differ
Files build2/sdk/lib/src.zip
  and build3/sdk/lib/src.zip
  differ

#### Windows

The Windows build, on the other hand, failed to produce identical copies of the 
media and WebKit shared libraries:

$ diff -qr build1 build2
Files build1/jmods/javafx.media.jmod
  and build2/jmods/javafx.media.jmod
  differ
Files build1/jmods/javafx.web.jmod
  and build2/jmods/javafx.web.jmod
  differ
Files build1/modular-sdk/modules_libs/javafx.media/fxplugins.dll
  and build2/modular-sdk/modules_libs/javafx.media/fxplugins.dll
  differ
Files build1/modular-sdk/modules_libs/javafx.media/glib-lite.dll
  and build2/modular-sdk/modules_libs/javafx.media/glib-lite.dll
  differ
Files build1/modular-sdk/modules_libs/javafx.media/gstreamer-lite.dll
  and build2/modular-sdk/modules_libs/javafx.media/gstreamer-lite.dll
  differ
Files build1/modular-sdk/modules_libs/javafx.media/jfxmedia.dll
  and build2/modular-sdk/modules_libs/javafx.media/jfxmedia.dll
  differ
Files build1/modular-sdk/modules_libs/javafx.web/jfxwebkit.dll
  and build2/modular-sdk/modules_libs/javafx.web/jfxwebkit.dll
  differ
Files build1/publications/javafx.media-win.jar
  and build2/publications/javafx.media-win.jar
  differ
Files build1/publications/javafx.web-win.jar
  and build2/publications/javafx.web-win.jar
  differ
Files build1/sdk/bin/fxplugins.dll
  and build2/sdk/bin/fxplugins.dll
  differ
Files build1/sdk/bin/glib-lite.dll
  and build2/sdk/bin/glib-lite.dll
  differ
Files build1/sdk/bin/gstreamer-lite.dll
  and build2/sdk/bin/gstreamer-lite.dll
  differ
Files build1/sdk/bin/jfxmedia.dll
  and build2/sdk/bin/jfxmedia.dll
  differ
Files build1/sdk/bin/jfxwebkit.dll
  and build2/sdk/bin/jfxwebkit.dll
  differ

I didn't bother running the third build with `-PHUDSON_BUILD_NUMBER=102`. I 
assume CMake would be the same across platforms. I'm hoping it's just a missing 
`/experimental:deterministic` somewhere for the Windows linker. I'll track it 
down.

-------------

PR: https://git.openjdk.java.net/jfx/pull/446

Reply via email to