On Wed, 12 Jun 2024 01:37:19 GMT, Alexey Semenyuk <asemen...@openjdk.org> wrote:
> Refactor jpackage to separate the configuration and execution phases. > At the configuration phase, jpackage parses command-line arguments and > validates them. > At the execution phase, jpackage builds a bundle based on data collected at > the configuration phase. > > There was no clear separation between these phases. Both used the same data > type (`Map<String, Object>`), making it hard to understand and use properly. > > This change introduces data model to jpackage (classes in > "jdk.jpackage.internal.model" package). The output of the configuration phase > is either an instance of > [jdk.jpackage.internal.model.Application](https://github.com/openjdk/jdk/pull/19668/files#diff-e4e7717f1978a09ac4806eded5c7f94aa29b2ea56671545dc053cb83eba86919) > interface for app image bundling or > [jdk.jpackage.internal.model.Package](https://github.com/openjdk/jdk/pull/19668/files#diff-9908b5648e03bd8a8104f6f6f5aa08e5df78fbc0508823774d3458b22927b721) > for native package bundling. > > The execution phase has been reworked to get configuration properties from > the new `jdk.jpackage.internal.model.Application` and > `jdk.jpackage.internal.model.Package` interfaces instead of extracting data > from `Map<String, Object>` "params". > > Additionally, a notion of "packaging pipeline" > (jdk.jpackage.internal.PackagingPipeline class) was added to configure > packaging declaratively with more code sharing between bundlers. > > **Functional changes** > jpackage behavior 99% remains the same, i.e., it produces the same bundles > for the given parameters. This change affects only the implementation. Still, > there are some changes in jpackage behavior. They are outlined below. > > - Minimize copying of the source app image when doing native packaging. > > Before this change, native package bundlers made redundant copies of the > source app image. E.g., msi and linux package bundlers copied the external > app image (the one specified with `--app-image` parameter); linux package > bundlers always transformed the source app image if the installation > directory was in the "/usr" tree (`--install-dir /usr`). This change > eliminates all redundant app image copy/transformations. > > - PKG bundler: change "preinstall" and "postinstall" scripts in app bundles. > > post- and pre- install PKG scripts for SimplePackageTest package before and > after the change: > <table> > <thead> > <tr> > <th>Script</th> > <th>New</th> > <th>Old</th> > </tr> > </thead> > <tbody> > <tr> > <td nowrap>preinstall</td> > <td> > <pre> > #!/usr/bin/env sh<br> > if [ ! -d "/Applications/SimplePackageTest.app" ] > the... keep the PR open keep it open @sashamatveev PTAL ------------- PR Comment: https://git.openjdk.org/jdk/pull/19668#issuecomment-2307257730 PR Comment: https://git.openjdk.org/jdk/pull/19668#issuecomment-2563789218 PR Comment: https://git.openjdk.org/jdk/pull/19668#issuecomment-2866228697