diff --git a/0001-Avoid-closing-directory-we-re-iterating.patch b/0001-Avoid-closing-directory-we-re-iterating.patch deleted file mode 100644 index 4ff762a..0000000 --- a/0001-Avoid-closing-directory-we-re-iterating.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 2032d928c2520cba988fe57f888011a286bae1c8 Mon Sep 17 00:00:00 2001 -From: Ewoud Kohl van Wijngaarden -Date: Wed, 5 Mar 2025 14:01:47 +0100 -Subject: [PATCH] Avoid closing directory we're iterating - -Ruby 3.4 started error checking directory access and starts to raise -Errno::EBADF. - -This particular loop iterates on all open file descriptors and one is -the directory listing from Dir.foreach. - -In the past this could have led to leaked file descriptors, but it's -unlikely since it's likely the last opened file descriptor and have the -highest number. - -Link: https://github.com/ruby/ruby/commit/f2919bd11c570fc5f5440d1f101be38f61e3d16b -Link: https://bugzilla.redhat.com/show_bug.cgi?id=2349352 ---- - lib/puppet/util.rb | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb -index 06c7b11815db..37b37d614d3a 100644 ---- a/lib/puppet/util.rb -+++ b/lib/puppet/util.rb -@@ -478,8 +478,10 @@ module Util - $stderr = STDERR - - begin -- Dir.foreach('/proc/self/fd') do |f| -- if f != '.' && f != '..' && f.to_i >= 3 -+ d = Dir.new('/proc/self/fd') -+ ignore_fds = ['.', '..', d.fileno.to_s] -+ d.each_child do |f| -+ if !ignore_fds.include?(f) && f.to_i >= 3 - begin - IO.new(f.to_i).close - rescue --- -2.49.0 - diff --git a/README.md b/README.md deleted file mode 100644 index fc68bd3..0000000 --- a/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Puppet - -This is the packaging for [Puppet](https://puppet.com/). -The files are downloaded from [downloads.puppet.com](https://downloads.puppet.com/puppet/) since they contain GPG signed tarballs, unlike on Rubygems. -Additionally it vendors various Puppet modules to match upstream's [puppet-agent config](https://github.com/puppetlabs/puppet-agent). - -## Updating - -Typically you will be notified via [release-monitoring](https://release-monitoring.org/project/7018/), which creates a Bugzilla. -Start with bumping the spec and reference the Bugzilla number. - -``` -BZ=2151953 VERSION=7.21.0 -commit_message="Update to $VERSION (fixes rhbz#$BZ)" -rpmdev-bumpspec --new="$VERSION" --comment="$commit_message" puppet.spec -``` - -Then verify whether any vendored modules need to be updated. -See the lines in the spec file itself on how to do that. -In addition to that the dependencies should be verified. - -Once that's done, retrieve the sources: - -``` -spectool --get-files puppet.spec -``` - -Then upload the sources: -``` -spectool --list-files puppet.spec | awk '/https:/ { print $2 }' | xargs -n 1 basename | xargs fedpkg new-sources --offline -``` - -Test out a scratch build: -``` -koji build --scratch rawhide $(fedpkg srpm 2>/dev/null | grep ^Wrote | rev | cut -d "/" -f1 | rev) -``` - -If it looks all right, drop the `--offline` parameter from the spectool. - -Commit, push, build, update - -``` -# git additions/removals/etc at this point -fedpkg commit -m "$commit_message" -fedpk build --target rawhide -fedpkg update -``` - diff --git a/openvox-dnf5.patch b/openvox-dnf5.patch deleted file mode 100644 index 770db7f..0000000 --- a/openvox-dnf5.patch +++ /dev/null @@ -1,84 +0,0 @@ -commit 26d3405df7f35497ec07942c44c292bb25d60210 -Author: Lars Haugan -Date: Mon Dec 23 14:56:21 2024 +0100 - - Add fix for package running dnf5 on fedora - - Fedora 41 introduced dnf5 which has deprecated the use of the flags '-d' - and '-e'. This change removes the options - - Signed-off-by: Lars Haugan - -diff --git a/lib/puppet/provider/package/dnfmodule.rb b/lib/puppet/provider/package/dnfmodule.rb -index 8d58d2fdd8..de052ad744 100644 ---- a/lib/puppet/provider/package/dnfmodule.rb -+++ b/lib/puppet/provider/package/dnfmodule.rb -@@ -35,7 +35,7 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do - - def self.instances - packages = [] -- cmd = "#{command(:dnf)} module list -y -d 0 -e #{error_level}" -+ cmd = "#{command(:dnf)} module list -y" - execute(cmd).each_line do |line| - # select only lines with actual packages since DNF clutters the output - next unless line =~ /\[[eix]\][, ]/ -@@ -90,7 +90,7 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do - enable(args) - else - begin -- execute([command(:dnf), 'module', 'install', '-d', '0', '-e', self.class.error_level, '-y', args]) -+ execute([command(:dnf), 'module', 'install', '-y', args]) - rescue Puppet::ExecutionFailure => e - # module has no default profile and no profile was requested, so just enable the stream - # DNF versions prior to 4.2.8 do not need this workaround -@@ -117,20 +117,20 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do - end - - def enable(args = @resource[:name]) -- execute([command(:dnf), 'module', 'enable', '-d', '0', '-e', self.class.error_level, '-y', args]) -+ execute([command(:dnf), 'module', 'enable', '-y', args]) - end - - def uninstall -- execute([command(:dnf), 'module', 'remove', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]]) -+ execute([command(:dnf), 'module', 'remove', '-y', @resource[:name]]) - reset # reset module to the default stream - end - - def disable(args = @resource[:name]) -- execute([command(:dnf), 'module', 'disable', '-d', '0', '-e', self.class.error_level, '-y', args]) -+ execute([command(:dnf), 'module', 'disable', '-y', args]) - end - - def reset -- execute([command(:dnf), 'module', 'reset', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]]) -+ execute([command(:dnf), 'module', 'reset', '-y', @resource[:name]]) - end - - def flavor -diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb -index 15bc372c6b..6c0f85e31b 100644 ---- a/lib/puppet/provider/package/yum.rb -+++ b/lib/puppet/provider/package/yum.rb -@@ -247,7 +247,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do - update_command = self.class.update_command - # If not allowing virtual packages, do a query to ensure a real package exists - unless @resource.allow_virtual? -- execute([command(:cmd), '-d', '0', '-e', error_level, '-y', install_options, :list, wanted].compact) -+ execute([command(:cmd), '-y', install_options, :list, wanted].compact) - end - - should = @resource.should(:ensure) -@@ -307,10 +307,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do - end - end - -- # Yum on el-4 and el-5 returns exit status 0 when trying to install a package it doesn't recognize; -- # ensure we capture output to check for errors. -- no_debug = Puppet.runtime[:facter].value('os.release.major').to_i > 5 ? ["-d", "0"] : [] -- command = [command(:cmd)] + no_debug + ["-e", error_level, "-y", install_options, operation, wanted].compact -+ command = [command(:cmd)] + ["-y", install_options, operation, wanted].compact - output = execute(command) - - if output.to_s =~ /^No package #{wanted} available\.$/ - diff --git a/puppet.spec b/puppet.spec index e762f4e..2dc093c 100644 --- a/puppet.spec +++ b/puppet.spec @@ -3,8 +3,8 @@ %global puppet_vendor_mod_dir %{_datadir}/%{name}/vendor_modules Name: puppet -Version: 8.10.0 -Release: 3%{?dist} +Version: 7.27.0 +Release: 1%{?dist} Summary: Network tool for managing many disparate systems License: Apache-2.0 URL: https://puppet.com @@ -12,24 +12,21 @@ Source0: https://downloads.puppetlabs.com/puppet/%{name}-%{version}.tar.g Source1: https://downloads.puppetlabs.com/puppet/%{name}-%{version}.tar.gz.asc Source2: RPM-GPG-KEY-puppet-20250406 # Get these by checking out the right tag from https://github.com/puppetlabs/puppet-agent and: -# sed 's|.\+puppetlabs/\([a-z_-]\+\).git.\+tags/v\?\([0-9\.]\+\)"}|https://forge.puppet.com/v3/files/\1-\2.tar.gz|' configs/components/module-puppetlabs-*.json -Source3: https://forge.puppet.com/v3/files/puppetlabs-augeas_core-1.5.0.tar.gz -Source4: https://forge.puppet.com/v3/files/puppetlabs-cron_core-1.3.0.tar.gz -Source5: https://forge.puppet.com/v3/files/puppetlabs-host_core-1.3.0.tar.gz -Source6: https://forge.puppet.com/v3/files/puppetlabs-mount_core-1.3.0.tar.gz -Source7: https://forge.puppet.com/v3/files/puppetlabs-scheduled_task-3.2.0.tar.gz -Source8: https://forge.puppet.com/v3/files/puppetlabs-selinux_core-1.4.0.tar.gz -Source9: https://forge.puppet.com/v3/files/puppetlabs-sshkeys_core-2.5.0.tar.gz -Source10: https://forge.puppet.com/v3/files/puppetlabs-yumrepo_core-2.1.0.tar.gz -Source11: https://forge.puppet.com/v3/files/puppetlabs-zfs_core-1.6.1.tar.gz -Source12: https://forge.puppet.com/v3/files/puppetlabs-zone_core-1.2.0.tar.gz +# sed 's|.\+puppetlabs/\([a-z_-]\+\).git.\+tags/\([0-9\.]\+\)"}|https://forge.puppet.com/v3/files/\1-\2.tar.gz|' configs/components/module-puppetlabs-*.json +Source3: https://forge.puppet.com/v3/files/puppetlabs-augeas_core-1.4.0.tar.gz +Source4: https://forge.puppet.com/v3/files/puppetlabs-cron_core-1.2.0.tar.gz +Source5: https://forge.puppet.com/v3/files/puppetlabs-host_core-1.2.0.tar.gz +Source6: https://forge.puppet.com/v3/files/puppetlabs-mount_core-1.2.0.tar.gz +Source7: https://forge.puppet.com/v3/files/puppetlabs-scheduled_task-3.1.1.tar.gz +Source8: https://forge.puppet.com/v3/files/puppetlabs-selinux_core-1.3.0.tar.gz +Source9: https://forge.puppet.com/v3/files/puppetlabs-sshkeys_core-2.4.0.tar.gz +Source10: https://forge.puppet.com/v3/files/puppetlabs-yumrepo_core-1.2.0.tar.gz +Source11: https://forge.puppet.com/v3/files/puppetlabs-zfs_core-1.4.0.tar.gz +Source12: https://forge.puppet.com/v3/files/puppetlabs-zone_core-1.1.0.tar.gz Source13: puppet-nm-dispatcher.systemd Source14: start-puppet-wrapper Source15: logrotate -Patch: 0001-Avoid-closing-directory-we-re-iterating.patch -Patch: openvox-dnf5.patch - BuildArch: noarch # ruby-devel does not require the base package, but requires -libs instead @@ -41,17 +38,15 @@ BuildRequires: hiera BuildRequires: systemd BuildRequires: gnupg2 Requires: hiera >= 3.3.1 -Requires: facter >= 4.3.0 +Requires: facter >= 3.9.6 Requires: rubygem(concurrent-ruby) >= 1.1.9 Requires: rubygem(deep_merge) >= 1.0 -Requires: rubygem(facter) >= 4.3.0 -Requires: rubygem(multi_json) >= 1.13 +Requires: rubygem(facter) >= 3.9.6 +Requires: rubygem(multi_json) >= 1.10 Requires: rubygem(puppet-resource_api) >= 1.5 Requires: rubygem(semantic_puppet) >= 1.0.2 Requires: rubygem(scanf) >= 1.0 Requires: ruby-augeas >= 0.5.0 -# racc was a default gem, is now a bundled gem but shipped as a sepeate package -Requires: (ruby-default-gems < 3.3 or rubygem(racc)) Requires: augeas >= 1.10.1 Requires: augeas-libs >= 1.10.1 Requires: ruby(selinux) libselinux-utils @@ -67,7 +62,7 @@ along with obviously discrete elements like packages, services, and files. %prep %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' -%autosetup -p1 +%autosetup cp -a %{sources} . for f in puppetlabs-*.tar*; do tar xvf $f @@ -86,11 +81,6 @@ find -type f -exec \ -e 's|/var/log/puppetlabs/puppet|%{_localstatedir}/log/%{name}|' \ '{}' + -# Create a sysusers.d config file -cat >puppet.sysusers.conf </dev/null || groupadd -r puppet -g 52 &>/dev/null +getent passwd puppet &>/dev/null || \ +useradd -r -u 52 -g puppet -s /sbin/nologin \ + -c "Puppet" puppet &>/dev/null %post %systemd_post %{name}.service @@ -215,46 +208,8 @@ rm %{buildroot}%{_datadir}/%{name}/ext/{build_defaults.yaml,project_data.yaml} %systemd_postun_with_restart %{name}.service %changelog -* Fri Oct 03 2025 Terje Rosten - 8.10.0-3 -- Add patch from openvox to fix dnf5 issue - -* Fri Jul 25 2025 Fedora Release Engineering - 8.10.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Apr 15 2025 Ewoud Kohl van Wijngaarden - 8.10.0-1 -- Update to 8.10.0 (fixes rhbz#2291351) -- Ruby 3.3 regexp incompability bugfix (fixes rhbz#2280109) -- Ruby 3.4 closedir bugfix (fixes rhbz#2349352) - -* Thu Jan 23 2025 Zbigniew Jędrzejewski-Szmek - 8.6.0-4 -- Add sysusers.d config file to allow rpm to create users/groups automatically - -* Sat Jan 18 2025 Fedora Release Engineering - 8.6.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Jul 19 2024 Fedora Release Engineering - 8.6.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Apr 20 2024 Breno Brand Fernandes - 8.6.0-1 -- Update to 8.6.0 (fixes rhbz#2274550) - -* Sun Mar 10 2024 Ewoud Kohl van Wijngaarden - 8.5.1-1 -- Update to 8.5.1 (fixes rhbz#2259039) - -* Fri Jan 26 2024 Fedora Release Engineering - 8.3.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 8.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Nov 14 2023 Ewoud Kohl van Wijngaarden - 8.3.1-1 -- Update to 8.3.1 (fixes rhbz#2233957) - -* Fri Jul 21 2023 Fedora Release Engineering - 8.1.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jun 8 2023 Breno Brand Fernandes - 8.1.0-1 -- Build 8.1.0 +* Fri Nov 17 2023 Ewoud Kohl van Wijngaarden - 7.27.0-1 +- Update to 7.27.0 * Thu Jun 8 2023 Breno Brand Fernandes - 7.24.0-1 - Build 7.24.0 diff --git a/sources b/sources index 7864b03..0cb9c59 100644 --- a/sources +++ b/sources @@ -1,12 +1,12 @@ -SHA512 (puppet-8.10.0.tar.gz) = 5fc7842695c12ba07ffafbc6e1b1bc0efab8d3b2587a01aabb8fd8c6de07c6e227b741190b138eeac94ae2ac557fe9909d836827f79292b981e5d0bd2f53b91b -SHA512 (puppet-8.10.0.tar.gz.asc) = 4f938b43edb84f99f6e2154f767452b954427f4f8604c6aa8baf76503b7b9924b1a579cad6666b84d1b5c8a5ede1df5a373882e3644f9e1c930c214a2aba64d8 -SHA512 (puppetlabs-augeas_core-1.5.0.tar.gz) = b480356bea541b26966a300cd4505e94fd8a21f93a3946824250bf1d864f2d65676c17be2c954769ee21c4cd7314c53cc5f4986651513079868fafca27873e48 -SHA512 (puppetlabs-cron_core-1.3.0.tar.gz) = 7687240dd12b90d57ac76e3553db8b3dd981ace76141abff3199dce6b08a2b1153e31ebc52aa1b2b3498cf5e4b5f717f3ba8cace1d70991fcffe463de0a8a8e5 -SHA512 (puppetlabs-host_core-1.3.0.tar.gz) = b2b3e4d64818189babb2958742cd8b1d71273fed7142ed0f5f556ea5519fa33acec0255008398d059fd9a22fefc095f25872f77e47ea5755e729b78202cfc1fb -SHA512 (puppetlabs-mount_core-1.3.0.tar.gz) = b99825a614e54a0d5bc99061cfa88de4fe7a8b1d4cfded04a113594ec4107a685fa872a8e2c956026d7f99284ac181549cb8243b94b46721c7617c82489a2cfd -SHA512 (puppetlabs-scheduled_task-3.2.0.tar.gz) = e6ba41bfc1b636c2c7a997a1b70e4a37f59abfd19ff338acd6c1a50fc8d9ac2f40feb9565cd52cb6ec1677c88d85cdda152f7ec05393ca94f3a01321fbca262d -SHA512 (puppetlabs-selinux_core-1.4.0.tar.gz) = c212d1ad6bd4aaf58723aa0a5902e1ef90c481e333fa6b04dec53ee7badfd5d4869f0f6851b469d54368b47eac807c794e630ddd8a6be50397360281acc80ab1 -SHA512 (puppetlabs-sshkeys_core-2.5.0.tar.gz) = 8793e4d198de50167bdde5e49f77ba62e2c08232bbc4d861dc7e3d6b24248c94f6c0d025679978efaf5d0413e1390b41224ca0222148feb8e7061950b6d567c4 -SHA512 (puppetlabs-yumrepo_core-2.1.0.tar.gz) = 3f129b1c2c8ca8eaf105839db4f07f51c1c1723b9d6545ea672b95c14915003f95b1fc92308e280552cee0e27505ce09db7ceb5c219ec274c63b91ca04dee758 -SHA512 (puppetlabs-zfs_core-1.6.1.tar.gz) = a1fa2b90beeb7f2798c59e5932d4320af8baf1b9f18775716bbdeee172331efb93c8e6510bf7798552d74982bd8999ee092968ecba251c590b6c921d2b8d8992 -SHA512 (puppetlabs-zone_core-1.2.0.tar.gz) = 0cae94798551875dbbb362956d39cdcf63f8c07a6ca330394966ce49385497028134927751c7f91a992a51be3acff5781788689b72af4b25ba8493931e635c87 +SHA512 (puppet-7.27.0.tar.gz) = a864357f5079c9fad53c2cff35f73f0bc25900359e25b5fb1130e3a3e6f77f63bc38ef59c0ce1b37913eb0acb1e42f39891ed7de0fe39ab138faa426ab2a9392 +SHA512 (puppet-7.27.0.tar.gz.asc) = c8efe1be88d6d7aa976392a53560e38bb96884e77b63dacd9705c8cecd83652dac3e1fa4062ca324b8a0593b051ea9bf8c0c0f16caf7d7d0a732fa27454ab48d +SHA512 (puppetlabs-augeas_core-1.4.0.tar.gz) = 225b614b4ecef9fb59428b0f0634f2677b704807f6ea05f4abca3631195faaf60d4d0b94e663b29ec298e4b915a42772c64e6358e88216b3767a54a1e91dc3a6 +SHA512 (puppetlabs-cron_core-1.2.0.tar.gz) = 7fd44777ab9a969ac28073a973fcb13499f672252aff1d21c243e98ca32a4c59f4165cd8d2e1c71b99e3ae804a520a153bdf84508b940ee705f6a6a18287b411 +SHA512 (puppetlabs-host_core-1.2.0.tar.gz) = 2be11180252bc31cbed6fdfd16a342d6585f99dede5ea9e20d1fdc2d6f0e5feecc9dbc5e2b21f6c69537d356b768609c8922ca8394d6a201f3eeedeb27466465 +SHA512 (puppetlabs-mount_core-1.2.0.tar.gz) = 6025fd130d64490e47b9660152ed8b800507940e5446a0f766b89c198b145b53b1c7056e789af202e98703e4dac0f5c590474b021e81452a45869bb1f16f3adf +SHA512 (puppetlabs-scheduled_task-3.1.1.tar.gz) = 12063fcc9be047c5391b2c7d873d0e10188db8256e9b99593e7ac9d79a2c14969422416235e14a15e55f2c8e085c185d4b08a37a09deb7ff748cb60eb07f75c9 +SHA512 (puppetlabs-selinux_core-1.3.0.tar.gz) = ce8ea21127b71e30da3f3ae8cb3c1284aea04a5c9bd7bb3523db06feec0465843fa649be561fac469f958309f3a9c84aca1dc7078e540cd82317725aadfc1923 +SHA512 (puppetlabs-sshkeys_core-2.4.0.tar.gz) = 0ed3050e8bdebe22b3581825d4e3b1a1b2cc20fb2efb835e84ebfaaa743d75e159c7f51e748d2fb9e007ec90cd3dc9840cd5f4c8e364f69b1d787467dc7db1ea +SHA512 (puppetlabs-yumrepo_core-1.2.0.tar.gz) = 5185a96148f9d313747ca1d4285d622797e8d0bae39453f8f0a71eb54c423d42a5bdb989c17b465df79c077e101b1ee713510b4e1907970e359c546238268056 +SHA512 (puppetlabs-zfs_core-1.4.0.tar.gz) = 8810be1a57504f58fcf6b802bbc2fa5a4531914fe49c08c56a82c0088d61965e83947b809c334f9d4fc9f2947255b811dba0e2b9b18c67d2979bc7450d323a9d +SHA512 (puppetlabs-zone_core-1.1.0.tar.gz) = 231a197b2d62ba06b93f5914ff8935e7f3a972cb412749d3edc20e34977d1152f5dd091265eed5f4d7d11a2f67719f9feb5fbb017eebfb7ce231c4a2a69eed8d diff --git a/tests/smoke/test.sh b/tests/smoke/test.sh index de07e21..1037517 100755 --- a/tests/smoke/test.sh +++ b/tests/smoke/test.sh @@ -15,11 +15,7 @@ rlJournalStart rlAssertNotGrep "warning" $rlRun_LOG -i rlRun "echo \"file { '${tmp}/applied-file': ensure => file, content => 'Hello World' }\" | puppet apply" 0 "Apply manifest" - rlAssertExists "${tmp}/applied-file" rlAssertGrep "Hello World" "applied-file" - - rlRun "puppet resource exec test command='/usr/bin/rm ${tmp}/applied-file'" 0 "Exec resource" - rlAssertNotExists "${tmp}/applied-file" rlPhaseEnd rlPhaseStartCleanup