aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-01-14 14:15:50 +0100
committerMartin Polden <mpolden@mpolden.no>2021-01-14 14:36:31 +0100
commite12dec3f2b49526c5b24b01c9c79739ffdca109a (patch)
treefb676a1e53e8c8aaf4ff9533360682637ad47232 /node-admin
parent764b7125df272d2c5e93fe7a06e2d34446f39881 (diff)
Always include epoch in package name for Yum 4
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java20
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java8
2 files changed, 16 insertions, 12 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
index aa9552f8620..88f64e22ea5 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java
@@ -231,23 +231,21 @@ public class YumPackageName {
/** Return package name, omitting components that are not specified. */
public String toName(Version yumVersion) {
StringBuilder builder = new StringBuilder();
- char delimiter;
+ boolean isBare = version.isEmpty() && release.isEmpty() && architecture.isEmpty();
+ char nextDelimiter;
if (yumVersion.getMajor() < 4) {
epoch.ifPresent(ep -> builder.append(ep).append(':'));
builder.append(name);
- delimiter = '-';
+ nextDelimiter = '-';
} else {
builder.append(name);
- epoch.ifPresent(ep -> builder.append('-').append(ep));
- delimiter = ':';
- }
- if (version.isPresent()) {
- builder.append(delimiter).append(version.get());
- delimiter = '-';
- }
- if (release.isPresent()) {
- builder.append(delimiter).append(release.get());
+ // Fully versioned package names must always include epoch in Yum 4
+ epoch.or(() -> Optional.of("0").filter(v -> !isBare))
+ .ifPresent(ep -> builder.append('-').append(ep));
+ nextDelimiter = ':';
}
+ version.ifPresent(s -> builder.append(nextDelimiter).append(s));
+ release.ifPresent(s -> builder.append('-').append(s));
architecture.ifPresent(arch -> builder.append('.').append(arch));
return builder.toString();
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
index 3ec2bc9c570..37695ca9504 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
@@ -201,7 +201,13 @@ public class YumTest {
0,
"installing");
- assertTrue(yum.installFixedVersion(YumPackageName.fromString("openssh-0:8.0p1-4.el8_1.x86_64")).converge(taskContext));
+ YumPackageName pkg = new YumPackageName
+ .Builder("openssh")
+ .setVersion("8.0p1")
+ .setRelease("4.el8_1")
+ .setArchitecture("x86_64")
+ .build();
+ assertTrue(yum.installFixedVersion(pkg).converge(taskContext));
}
@Test