diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-01-14 14:15:50 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-01-14 14:36:31 +0100 |
commit | e12dec3f2b49526c5b24b01c9c79739ffdca109a (patch) | |
tree | fb676a1e53e8c8aaf4ff9533360682637ad47232 /node-admin | |
parent | 764b7125df272d2c5e93fe7a06e2d34446f39881 (diff) |
Always include epoch in package name for Yum 4
Diffstat (limited to 'node-admin')
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 |