RFR: 8368030: Make package bundlers stateless [v2]

Alexey Semenyuk asemenyuk at openjdk.org
Thu Sep 25 22:37:50 UTC 2025


> Introduce `jdk.jpackage.internal.SystemEnvironment` interface to describe system tools needed for building specific package bundles with three immediate subinterfaces: `WinSystemEnvironment`, `LinuxSystemEnvironment`, and `MacDmgSystemEnvironment`.
> 
> `LinuxSystemEnvironment` has two subinterfaces: `LinuxDebSystemEnvironment` and `LinuxRpmSystemEnvironment`.
> 
> There is no `MacSystemEnvironment` interface as pkg and dmg bundlers are unrelated, unlike rpm and deb bundlers, which share a fair amount of code.
> 
> There is no `MacPkgSystemEnvironment` interface because the pkg bundler doesn't validate tools.
> 
> Instances of these interfaces are created as member fields of the corresponding bundler classes, i.e., bundling system tools are validated only once when a specific bundler is instantiated.
> 
> Move the bundling code away from *Bundler classes into *Packager classes and completely isolate it from the "params". This is a follow-up for the effort to isolate the "params" in [JDK-8333664](https://bugs.openjdk.org/browse/JDK-8333664).

Alexey Semenyuk has updated the pull request incrementally with one additional commit since the last revision:

  Use Path.equals() instead of String.equals() to compare path objects

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/27377/files
  - new: https://git.openjdk.org/jdk/pull/27377/files/bba8ad02..42f3022b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=27377&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27377&range=00-01

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/27377.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27377/head:pull/27377

PR: https://git.openjdk.org/jdk/pull/27377


More information about the core-libs-dev mailing list