From: Stuart Henderson Subject: Re: puppet module fix To: Giovanni Bechis , Cc: Date: Tue, 13 Jan 2026 10:57:37 +0000 why not patch the command line to use tar-compatible flags instead? --no-same-owner is the default for our tar, and --directory is just the same as -C -- Sent from a phone, apologies for poor formatting. On 13 January 2026 08:33:44 Giovanni Bechis wrote: > Hi, > the following diff fixes the "puppet module" command, Puppet is using > Gnu only tar options. > Ok ? Comments ? > Cheers > Giovanni > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/sysutils/ruby-puppet/8/Makefile,v > diff -u -p -r1.9 Makefile > --- Makefile 22 Sep 2025 12:35:15 -0000 1.9 > +++ Makefile 13 Jan 2026 08:23:16 -0000 > @@ -1,9 +1,10 @@ > PORTROACH= limit:^8 > > VERSION= 8.10.0 > -REVISION= 3 > +REVISION= 4 > > -RUN_DEPENDS+= converters/ruby-multi_json,${MODRUBY_FLAVOR}>=1.13,<2 \ > +RUN_DEPENDS+= archivers/gtar \ > + converters/ruby-multi_json,${MODRUBY_FLAVOR}>=1.13,<2 \ > devel/ruby-concurrent-ruby,${MODRUBY_FLAVOR}>=1,<2 \ > devel/ruby-deep_merge,${MODRUBY_FLAVOR}>=1,<2 \ > devel/ruby-fast_gettext,${MODRUBY_FLAVOR}>=2.1,<4 \ > Index: patches/patch-lib_puppet_module_tool_tar_gnu_rb > =================================================================== > RCS file: patches/patch-lib_puppet_module_tool_tar_gnu_rb > diff -N patches/patch-lib_puppet_module_tool_tar_gnu_rb > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-lib_puppet_module_tool_tar_gnu_rb 13 Jan 2026 08:23:16 -0000 > @@ -0,0 +1,20 @@ > +Index: lib/puppet/module_tool/tar/gnu.rb > +--- lib/puppet/module_tool/tar/gnu.rb.orig > ++++ lib/puppet/module_tool/tar/gnu.rb > +@@ -8,7 +8,7 @@ class Puppet::ModuleTool::Tar::Gnu > + destdir = File.expand_path(destdir) > + safe_destdir = Shellwords.shellescape(destdir) > + > +- Puppet::Util::Execution.execute("gzip -dc #{safe_sourcefile} | tar > --extract --no-same-owner --directory #{safe_destdir} --file -") > ++ Puppet::Util::Execution.execute("gzip -dc #{safe_sourcefile} | gtar > --extract --no-same-owner --directory #{safe_destdir} --file -") > + Puppet::Util::Execution.execute(['find', destdir, '-type', 'd', > '-exec', 'chmod', '755', '{}', '+']) > + Puppet::Util::Execution.execute(['find', destdir, '-type', 'f', > '-exec', 'chmod', 'u+rw,g+r,a-st', '{}', '+']) > + Puppet::Util::Execution.execute(['chown', '-R', owner, destdir]) > +@@ -18,6 +18,6 @@ class Puppet::ModuleTool::Tar::Gnu > + safe_sourcedir = Shellwords.shellescape(sourcedir) > + safe_destfile = Shellwords.shellescape(File.basename(destfile)) > + > +- Puppet::Util::Execution.execute("tar cf - #{safe_sourcedir} | gzip -c > > #{safe_destfile}") > ++ Puppet::Util::Execution.execute("gtar cf - #{safe_sourcedir} | gzip > -c > #{safe_destfile}") > + end > + end > Index: patches/patch-lib_puppet_module_tool_tar_rb > =================================================================== > RCS file: patches/patch-lib_puppet_module_tool_tar_rb > diff -N patches/patch-lib_puppet_module_tool_tar_rb > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-lib_puppet_module_tool_tar_rb 13 Jan 2026 08:23:16 -0000 > @@ -0,0 +1,12 @@ > +Index: lib/puppet/module_tool/tar.rb > +--- lib/puppet/module_tool/tar.rb.orig > ++++ lib/puppet/module_tool/tar.rb > +@@ -10,7 +10,7 @@ module Puppet::ModuleTool::Tar > + def self.instance > + if Puppet.features.minitar? && Puppet.features.zlib? > + Mini.new > +- elsif Puppet::Util.which('tar') && !Puppet::Util::Platform.windows? > ++ elsif Puppet::Util.which('gtar') && !Puppet::Util::Platform.windows? > + Gnu.new > + else > + # TRANSLATORS "tar" is a program name and should not be translated