[lworld] RFR: 8376528: [lworld] value class creation in CompileJavaModules.gmk leaves unnecessary files

David Beaumont duke at openjdk.org
Tue Jan 27 20:37:56 UTC 2026


Rework fix from JDK-8376088, which failed on MacOS.

It solves JDK-8376088, but also simplifies the two-step process for creating the `META-INF/preview` class files.

Summary of changes:
* Remove JAR file creation (no longer needed, this is the proximal fix for JDK-8376088).
* Stop adding the "intermediate" target for the compilation to the TARGETS list (rely on the subsequent copy).
* Copy directories directly from the output directory to the preview directory (does not copy marker files).
* Make the marker file appear alongside other markers for the module compilation.
* Rename marker file to be consistent with other sibling marker files.

The marker files in build/linux-x64/jdk/modules/java.base/ are now:

_the.java.base_batch
_the.java.base_batch.cmdline
_the.java.base_batch.filelist
_the.java.base_batch.log
_the.java.base_batch.modfiles
_the.java.base_batch.modfiles.fixed
_the.java.base.config_vardeps
_the.java.base_internalapi
_the.java.base-javacserver.conf
_the.java.base_pubapi
_the.java.base.valueclasses   <-- moved/renamed marker file
_the.java.base.vardeps

The difference between JDK-8376088 and this PR is the switch away from using a glob expression like `foo/*/` to attempt to match "directories immediately inside foo/". On MacOS, this results in an expansion of directory names with retains the trailing `/`, and in MacOS, that implies the contents of the directories, not just the directories themselves.

For example, given directory/files:

foo/x/hello.txt
foo/y/world.txt


The action `cp -R  foo/*/ bar` expands to `cp -R foo/x/ foo/y/ bar` (with trailing `/`) and then we get:

Linux/Windows:

bar/x/hello.txt
bar/y/world.txt


MacOS:

bar/hello.txt
bar/world.txt


This PR uses an explicit wildcard action and filtering to specify the correct directories to be copied.

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

Commit messages:
 - Reworked/improved fix
 - Merge branch 'lworld' into makefile_tidying
 - git confusion fix
 - Merge branch 'lworld' into makefile_tidying
 - remove preview directory (if it exists) prior to copy
 - Change move to a copy
 - Remove problem list entry
 - Tidying makefile related to value classes

Changes: https://git.openjdk.org/valhalla/pull/1985/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1985&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8376528
  Stats: 46 lines in 2 files changed: 12 ins; 20 del; 14 mod
  Patch: https://git.openjdk.org/valhalla/pull/1985.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1985/head:pull/1985

PR: https://git.openjdk.org/valhalla/pull/1985


More information about the valhalla-dev mailing list