From 61bdc114ed190d1a47aad64f248e5e0e88f0f261 Mon Sep 17 00:00:00 2001 From: Lukas Audzevicius Date: Mon, 14 Sep 2026 11:07:36 +0100 Subject: [PATCH 1/2] fix: add explicit fileutils/logger dependencies for Ruby 4.0 Nightly CI has failed for 5+ consecutive nights on the ruby 4.0 / puppet ~> 9.0 lanes with `NameError: uninitialized constant FileUtils` in builder_spec.rb. Ruby 4.0 unbundled both fileutils and logger from the default gem set (already worked around for win32ole in the Gemfile); builder.rb uses FileUtils extensively but never required it, and only required logger without declaring it as a real dependency. It happened to work before because some other gem in the resolved dependency graph transitively pulled fileutils/logger in - that's not guaranteed and breaks under a different dependency set. Verified locally: reproduced the NameError under Ruby 4.0.2, confirmed it's gone with these two gemspec dependencies plus the missing require, and the full unit suite (59 examples) now passes under both Ruby 4.0.2 and 3.2.6 with no regressions. Co-Authored-By: Claude Sonnet 5 --- lib/puppet/modulebuilder/builder.rb | 1 + puppet-modulebuilder.gemspec | 3 +++ 2 files changed, 4 insertions(+) diff --git a/lib/puppet/modulebuilder/builder.rb b/lib/puppet/modulebuilder/builder.rb index 179b13b..66ce9b3 100644 --- a/lib/puppet/modulebuilder/builder.rb +++ b/lib/puppet/modulebuilder/builder.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require 'fileutils' require 'logger' module Puppet::Modulebuilder diff --git a/puppet-modulebuilder.gemspec b/puppet-modulebuilder.gemspec index c8b4ced..6a5198d 100644 --- a/puppet-modulebuilder.gemspec +++ b/puppet-modulebuilder.gemspec @@ -26,6 +26,9 @@ Gem::Specification.new do |spec| # minitar and pathspec is required for building Puppet modules spec.add_dependency 'minitar', '>= 0.9', '< 2' spec.add_dependency 'pathspec', '>= 0.2.1', '< 3.0.0' + # logger and fileutils are no longer default gems as of Ruby 4.0 + spec.add_dependency 'fileutils', '>= 1.7' + spec.add_dependency 'logger', '>= 1.5' spec.add_development_dependency 'voxpupuli-rubocop', '~> 4.0.0' From cf9e93e6c4e5d97e5ae10b68b8a83b9634734b13 Mon Sep 17 00:00:00 2001 From: Lukas Audzevicius <97180854+LukasAud@users.noreply.github.com> Date: Mon, 14 Sep 2026 13:29:03 +0100 Subject: [PATCH 2/2] Update puppet-modulebuilder.gemspec Sounds good. Thanks for the suggestion Co-authored-by: Tim Meusel --- puppet-modulebuilder.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/puppet-modulebuilder.gemspec b/puppet-modulebuilder.gemspec index 6a5198d..0703ae4 100644 --- a/puppet-modulebuilder.gemspec +++ b/puppet-modulebuilder.gemspec @@ -27,8 +27,8 @@ Gem::Specification.new do |spec| spec.add_dependency 'minitar', '>= 0.9', '< 2' spec.add_dependency 'pathspec', '>= 0.2.1', '< 3.0.0' # logger and fileutils are no longer default gems as of Ruby 4.0 - spec.add_dependency 'fileutils', '>= 1.7' - spec.add_dependency 'logger', '>= 1.5' + spec.add_dependency 'fileutils', '~> 1.7' + spec.add_dependency 'logger', '~> 1.5' spec.add_development_dependency 'voxpupuli-rubocop', '~> 4.0.0'