Skip to content

Commit 6a0a446

Browse files
- Properly order tasks to create app image and config files for DEB to correctly calculate image size
- Don't set category property on RPM if not explicitly specified.
1 parent c91df13 commit 6a0a446

File tree

6 files changed

+37
-17
lines changed

6 files changed

+37
-17
lines changed

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxDebBundler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ protected Map<String, String> createReplacementData(BuildEnv env, LinuxPackage p
346346
String licenseText = pkg.licenseFile().map(toFunction(Files::readString)).orElse("Unknown");
347347

348348
data.put("APPLICATION_MAINTAINER", ((LinuxDebPackage) pkg).maintainer());
349-
data.put("APPLICATION_SECTION", pkg.category());
349+
data.put("APPLICATION_SECTION", pkg.category().orElseThrow());
350350
data.put("APPLICATION_COPYRIGHT", pkg.app().copyright());
351351
data.put("APPLICATION_LICENSE_TEXT", licenseText);
352352
data.put("APPLICATION_ARCH", pkg.arch());

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxDebPackageBuilder.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ final class LinuxDebPackageBuilder {
3737
}
3838

3939
LinuxDebPackage create() throws ConfigException {
40+
if (pkgBuilder.category().isEmpty()) {
41+
pkgBuilder.category(DEFAULTS.category());
42+
}
4043
var pkg = pkgBuilder.create();
4144
return LinuxDebPackage.create(pkg, new LinuxDebPackageMixin.Stub(
4245
Optional.ofNullable(maintainerEmail).orElseGet(
@@ -48,12 +51,12 @@ LinuxDebPackageBuilder maintainerEmail(String v) {
4851
return this;
4952
}
5053

51-
private record Defaults(String maintainerEmail) {
54+
private record Defaults(String maintainerEmail, String category) {
5255
}
5356

5457
private String maintainerEmail;
5558

5659
private final LinuxPackageBuilder pkgBuilder;
5760

58-
private static final Defaults DEFAULTS = new Defaults("Unknown");
61+
private static final Defaults DEFAULTS = new Defaults("Unknown", "misc");
5962
}

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxPackageBuilder.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private LinuxPackage create(Package pkg, AppImageLayout pkgLayout) throws Config
7171
return LinuxPackage.create(pkg, new LinuxPackageMixin.Stub(
7272
pkgLayout,
7373
Optional.ofNullable(menuGroupName).orElseGet(DEFAULTS::menuGroupName),
74-
Optional.ofNullable(category).orElseGet(DEFAULTS::category),
74+
Optional.ofNullable(category),
7575
Optional.ofNullable(additionalDependencies),
7676
Optional.ofNullable(release),
7777
pkg.asStandardPackageType().map(LinuxPackageArch::getValue).orElseThrow()));
@@ -92,6 +92,10 @@ LinuxPackageBuilder category(String v) {
9292
return this;
9393
}
9494

95+
Optional<String> category() {
96+
return Optional.ofNullable(category);
97+
}
98+
9599
LinuxPackageBuilder additionalDependencies(String v) {
96100
additionalDependencies = v;
97101
return this;
@@ -164,7 +168,7 @@ private static void validatePackageName(String packageName,
164168
}
165169
}
166170

167-
private record Defaults(String menuGroupName, String category) {
171+
private record Defaults(String menuGroupName) {
168172
}
169173

170174
private String literalName;
@@ -176,6 +180,6 @@ private record Defaults(String menuGroupName, String category) {
176180
private final PackageBuilder pkgBuilder;
177181

178182
private static final Defaults DEFAULTS = new Defaults(I18N.getString(
179-
"param.menu-group.default"), "misc");
183+
"param.menu-group.default"));
180184

181185
}

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxPackageBundler.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@
3535
import java.util.function.Predicate;
3636
import java.util.stream.Stream;
3737
import jdk.jpackage.internal.PackagingPipeline.PackageBuildEnv;
38+
import jdk.jpackage.internal.PackagingPipeline.PackageTaskID;
39+
import jdk.jpackage.internal.PackagingPipeline.PrimaryTaskID;
3840
import jdk.jpackage.internal.model.AppImageLayout;
3941
import jdk.jpackage.internal.model.ConfigException;
42+
import jdk.jpackage.internal.model.LinuxDebPackage;
4043
import jdk.jpackage.internal.model.LinuxPackage;
4144
import jdk.jpackage.internal.model.Package;
4245
import jdk.jpackage.internal.model.PackagerException;
@@ -105,15 +108,25 @@ public final Path execute(Map<String, ? super Object> params,
105108
final LinuxPackage pkg = pkgParam.fetchFrom(params);
106109
final var env = BuildEnvFromParams.BUILD_ENV.fetchFrom(params);
107110

108-
LinuxPackagingPipeline.build()
111+
final var pipelineBuilder = LinuxPackagingPipeline.build()
109112
.excludeDirFromCopying(outputParentDir)
110-
.task(PackagingPipeline.PackageTaskID.CREATE_CONFIG_FILES)
111-
.packageAction(this::buildConfigFiles)
112-
.add()
113-
.task(PackagingPipeline.PackageTaskID.CREATE_PACKAGE_FILE)
113+
.task(PackageTaskID.CREATE_PACKAGE_FILE)
114114
.packageAction(this::buildPackage)
115-
.add()
116-
.create().execute(env, pkg, outputParentDir);
115+
.add();
116+
117+
final var createConfigFilesTaskBuilder = pipelineBuilder
118+
.task(PackageTaskID.CREATE_CONFIG_FILES)
119+
.packageAction(this::buildConfigFiles);
120+
121+
if (pkg instanceof LinuxDebPackage) {
122+
// Build deb config files after app image contents are ready because
123+
// it calculates the size of the image and saves the value in one of the config files.
124+
createConfigFilesTaskBuilder.addDependencies(PrimaryTaskID.BUILD_APPLICATION_IMAGE, PrimaryTaskID.COPY_APP_IMAGE);
125+
}
126+
127+
createConfigFilesTaskBuilder.add();
128+
129+
pipelineBuilder.create().execute(env, pkg, outputParentDir);
117130

118131
return outputParentDir.resolve(pkg.packageFileNameWithSuffix()).toAbsolutePath();
119132
}

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxRpmBundler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,14 @@ protected Map<String, String> createReplacementData(BuildEnv env, LinuxPackage p
123123
data.put("APPLICATION_RELEASE", pkg.release().orElseThrow());
124124
data.put("APPLICATION_PREFIX", installPrefix(pkg).toString());
125125
data.put("APPLICATION_DIRECTORY", Path.of("/").resolve(pkg.relativeInstallDir()).toString());
126-
data.put("APPLICATION_SUMMARY", pkg.packageName());
126+
data.put("APPLICATION_SUMMARY", pkg.app().name());
127127
data.put("APPLICATION_LICENSE_TYPE", ((LinuxRpmPackage)pkg).licenseType());
128128

129129
String licenseFile = pkg.licenseFile().map(v -> {
130130
return v.toAbsolutePath().normalize().toString();
131131
}).orElse(null);
132132
data.put("APPLICATION_LICENSE_FILE", licenseFile);
133-
data.put("APPLICATION_GROUP", pkg.category());
133+
data.put("APPLICATION_GROUP", pkg.category().orElse(""));
134134

135135
data.put("APPLICATION_URL", pkg.aboutURL().orElse(""));
136136

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/model/LinuxPackageMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public interface LinuxPackageMixin {
5252
*
5353
* @return the category of this package
5454
*/
55-
String category();
55+
Optional<String> category();
5656

5757
/**
5858
* Gets a string with the additional dependencies of this package. Returns an
@@ -89,7 +89,7 @@ public interface LinuxPackageMixin {
8989
* Default implementation of {@link LinuxPackageMixin} interface.
9090
*/
9191
record Stub(AppImageLayout packageLayout, String menuGroupName,
92-
String category, Optional<String> additionalDependencies,
92+
Optional<String> category, Optional<String> additionalDependencies,
9393
Optional<String> release, String arch) implements LinuxPackageMixin {
9494
}
9595
}

0 commit comments

Comments
 (0)