From ca36fc66ae837e3dd76ac15f7680672ea3629b98 Mon Sep 17 00:00:00 2001 From: Anh Pham Date: Mon, 10 Jul 2023 14:03:26 +0200 Subject: [PATCH] Fix failing to install packages with `-noarch` in name We're missing a `\.` at the beginning, since `.join()` only puts `|\.` in between items: ``` >> ARCH_REGEX = Regexp.new(ARCH_LIST.join('|\.')) => /noarch|\.i386|\.i686|\.ppc|\.ppc64|\.armv3l|\.armv4b|\.armv4l|\.armv4tl|\.armv5tel|\.armv5tejl|\.armv6l|\.armv7l|\.m68kmint|\.s390|\.s390x|\.ia64|\.x86_64|\.sh3|\.sh4/ ``` Currently puppet is failing to install package with `-noarch` string in its name because of the invalid ARCH_REGEX: ``` package { 'package-name-noarch': ensure => '1.0.0.el8' } ``` ``` Debug: Executing: '/bin/dnf -d 0 -e 1 -y install package-name--1.0.0.el8noarch' Error: Could not update: Execution of '/bin/dnf -d 0 -e 1 -y install package-name--1.0.0.el8noarch' returned 1: Error: Unable to find a match: package-name--1.0.0.el7noarch ``` --- lib/puppet/util/rpm_compare.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/puppet/util/rpm_compare.rb b/lib/puppet/util/rpm_compare.rb index 7a03aa6424d..33700bc4331 100644 --- a/lib/puppet/util/rpm_compare.rb +++ b/lib/puppet/util/rpm_compare.rb @@ -6,7 +6,7 @@ module Puppet::Util::RpmCompare armv5tejl armv6l armv7l m68kmint s390 s390x ia64 x86_64 sh3 sh4 ).freeze - ARCH_REGEX = Regexp.new(ARCH_LIST.join('|\.')) + ARCH_REGEX = Regexp.new('\.' + ARCH_LIST.join('|\.')) # This is an attempt at implementing RPM's # lib/rpmvercmp.c rpmvercmp(a, b) in Ruby.