Skip to content

Commit 9046077

Browse files
author
Alexey Semenyuk
committed
8276084: Linux DEB Bundler: release number in outputted .deb file should be optional
Reviewed-by: almatvee, herrick
1 parent 7fc344d commit 9046077

File tree

7 files changed

+64
-13
lines changed

7 files changed

+64
-13
lines changed

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,17 @@ public class LinuxDebBundler extends LinuxPackageBundler {
108108
DEB_ARCH = debArch;
109109
}
110110

111+
private static final String releaseSuffix(Map<String, ? super Object> params) {
112+
return Optional.ofNullable(RELEASE.fetchFrom(params, false)).map(
113+
rel -> "-" + rel).orElse("");
114+
}
115+
111116
private static final BundlerParamInfo<String> FULL_PACKAGE_NAME =
112117
new StandardBundlerParam<>(
113118
"linux.deb.fullPackageName", String.class, params -> {
114119
return PACKAGE_NAME.fetchFrom(params)
115120
+ "_" + VERSION.fetchFrom(params)
116-
+ "-" + RELEASE.fetchFrom(params)
121+
+ releaseSuffix(params)
117122
+ "_" + DEB_ARCH;
118123
}, (s, p) -> s);
119124

@@ -275,9 +280,9 @@ protected List<ConfigException> verifyOutputBundle(
275280
List<PackageProperty> properties = List.of(
276281
new PackageProperty("Package", PACKAGE_NAME.fetchFrom(params),
277282
"APPLICATION_PACKAGE", controlFileName),
278-
new PackageProperty("Version", String.format("%s-%s",
279-
VERSION.fetchFrom(params), RELEASE.fetchFrom(params)),
280-
"APPLICATION_VERSION-APPLICATION_RELEASE",
283+
new PackageProperty("Version", String.format("%s%s",
284+
VERSION.fetchFrom(params), releaseSuffix(params)),
285+
"APPLICATION_VERSION_WITH_RELEASE",
281286
controlFileName),
282287
new PackageProperty("Architecture", DEB_ARCH, "APPLICATION_ARCH",
283288
controlFileName));
@@ -442,6 +447,8 @@ protected Map<String, String> createReplacementData(
442447
data.put("APPLICATION_HOMEPAGE", Optional.ofNullable(
443448
ABOUT_URL.fetchFrom(params)).map(value -> "Homepage: " + value).orElse(
444449
""));
450+
data.put("APPLICATION_VERSION_WITH_RELEASE", String.format("%s%s",
451+
VERSION.fetchFrom(params), releaseSuffix(params)));
445452

446453
return data;
447454
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,6 @@ private Map<String, String> createDefaultReplacementData(
220220
data.put("APPLICATION_VENDOR", VENDOR.fetchFrom(params));
221221
data.put("APPLICATION_VERSION", VERSION.fetchFrom(params));
222222
data.put("APPLICATION_DESCRIPTION", DESCRIPTION.fetchFrom(params));
223-
data.put("APPLICATION_RELEASE", RELEASE.fetchFrom(params));
224223

225224
String defaultDeps = String.join(", ", getListOfNeededPackages(params));
226225
String customDeps = LINUX_PACKAGE_DEPENDENCIES.fetchFrom(params).strip();

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ protected Map<String, String> createReplacementData(
177177
appDirectory = appDirectory.resolve(PACKAGE_NAME.fetchFrom(params));
178178
}
179179

180+
data.put("APPLICATION_RELEASE", RELEASE.fetchFrom(params));
180181
data.put("APPLICATION_PREFIX", prefix.toString());
181182
data.put("APPLICATION_DIRECTORY", appDirectory.toString());
182183
data.put("APPLICATION_SUMMARY", APP_NAME.fetchFrom(params));

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/resources/template.control

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: APPLICATION_PACKAGE
2-
Version: APPLICATION_VERSION-APPLICATION_RELEASE
2+
Version: APPLICATION_VERSION_WITH_RELEASE
33
Section: APPLICATION_SECTION
44
Maintainer: APPLICATION_MAINTAINER
55
Priority: optional

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,22 @@
4444

4545

4646
public class LinuxHelper {
47-
private static String getRelease(JPackageCommand cmd) {
48-
return cmd.getArgumentValue("--linux-app-release", () -> "1");
47+
private static String getReleaseSuffix(JPackageCommand cmd) {
48+
String value = null;
49+
final PackageType packageType = cmd.packageType();
50+
switch (packageType) {
51+
case LINUX_DEB:
52+
value = Optional.ofNullable(cmd.getArgumentValue(
53+
"--linux-app-release", () -> null)).map(v -> "-" + v).orElse(
54+
"");
55+
break;
56+
57+
case LINUX_RPM:
58+
value = "-" + cmd.getArgumentValue("--linux-app-release",
59+
() -> "1");
60+
break;
61+
}
62+
return value;
4963
}
5064

5165
public static String getPackageName(JPackageCommand cmd) {
@@ -74,18 +88,18 @@ static String getBundleName(JPackageCommand cmd) {
7488
String format = null;
7589
switch (packageType) {
7690
case LINUX_DEB:
77-
format = "%s_%s-%s_%s";
91+
format = "%s_%s%s_%s";
7892
break;
7993

8094
case LINUX_RPM:
81-
format = "%s-%s-%s.%s";
95+
format = "%s-%s%s.%s";
8296
break;
8397
}
8498

85-
final String release = getRelease(cmd);
99+
final String releaseSuffix = getReleaseSuffix(cmd);
86100
final String version = cmd.version();
87101

88-
return String.format(format, getPackageName(cmd), version, release,
102+
return String.format(format, getPackageName(cmd), version, releaseSuffix,
89103
getDefaultPackageArch(packageType)) + packageType.getSuffix();
90104
}
91105

test/jdk/tools/jpackage/linux/LinuxResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public static void testHardcodedProperties() throws IOException {
8181
.predicate(String::contains)
8282
.apply(result.getOutput().stream());
8383
TKit.assertTextStream(
84-
"Expected value of \"Version\" property is [1.0-1]. Actual value in output package is [1.2.3-R2]")
84+
"Expected value of \"Version\" property is [1.0]. Actual value in output package is [1.2.3-R2]")
8585
.predicate(String::contains)
8686
.apply(result.getOutput().stream());
8787
TKit.assertTextStream(String.format(

test/jdk/tools/jpackage/linux/ReleaseTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import jdk.jpackage.test.PackageType;
2525
import jdk.jpackage.test.PackageTest;
2626
import jdk.jpackage.test.Annotations.Test;
27+
import jdk.jpackage.test.JPackageCommand;
2728

2829

2930
/**
@@ -47,10 +48,26 @@
4748
* @build jdk.jpackage.test.*
4849
* @build ReleaseTest
4950
* @requires (os.family == "linux")
51+
* @requires (jpackage.test.SQETest == null)
5052
* @modules jdk.jpackage/jdk.jpackage.internal
5153
* @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.Main
5254
* --jpt-run=ReleaseTest
5355
*/
56+
57+
/*
58+
* @test
59+
* @summary jpackage with --linux-app-release
60+
* @library ../helpers
61+
* @key jpackagePlatformPackage
62+
* @build jdk.jpackage.test.*
63+
* @build ReleaseTest
64+
* @requires (os.family == "linux")
65+
* @requires (jpackage.test.SQETest != null)
66+
* @modules jdk.jpackage/jdk.jpackage.internal
67+
* @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.Main
68+
* --jpt-run=ReleaseTest.test
69+
*/
70+
5471
public class ReleaseTest {
5572

5673
@Test
@@ -71,4 +88,17 @@ public static void test() {
7188
}, "ends with")
7289
.run();
7390
}
91+
92+
@Test
93+
public static void testNoExplitRelease() {
94+
new PackageTest()
95+
.forTypes(PackageType.LINUX)
96+
.configureHelloApp()
97+
.addInitializer(JPackageCommand::setFakeRuntime)
98+
.forTypes(PackageType.LINUX_RPM)
99+
.addBundlePropertyVerifier("Release", "1")
100+
.forTypes(PackageType.LINUX_DEB)
101+
.addBundlePropertyVerifier("Version", "1.0")
102+
.run();
103+
}
74104
}

0 commit comments

Comments
 (0)