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

Reply via email to