Date: Wed, 6 Jul 2011 09:23:31 +0200 (CEST) From: Romain Tartiere <romain@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/158681: sysutils/puppet: Fix for optpatched 'freebsd' package provider Message-ID: <20110706072331.0E64D1475@marvin.blogreen.org> Resent-Message-ID: <201107060730.p667UArT047559@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 158681 >Category: ports >Synopsis: sysutils/puppet: Fix for optpatched 'freebsd' package provider >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Jul 06 07:30:10 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Romain Tartiere >Release: FreeBSD 8.2-STABLE amd64 >Organization: >Environment: System: FreeBSD marvin.blogreen.org 8.2-STABLE FreeBSD 8.2-STABLE #7 r222417: Sat May 28 13:23:35 CEST 2011 root@marvin.blogreen.org:/usr/obj/usr/src/sys/MARVIN amd64 >Description: The puppet port will patch the 'freebsd' packages provider if the PACKAGE_ORIGIN is set (default). The resulting provider will fail to start with message: err: Could not retrieve catalog from remote server: Could not intern from pson: Could not autoload package: Could not autoload /usr/local/lib/ruby/site_ruby/1.8/puppet/provider/package/freebsd.rb: Could not find parent provider Puppet::Util::Package of freebsd (and BTW, why is this option enabled by default, and could not the patch just add a new provider with a different name?) >How-To-Repeat: 1. Build puppet package with default options; 2. Install on a master and client machine; 3. Edit puppetmaster manifests to install software on clients; 4. Run the agent >Fix: Adding the following require line fix the error: require 'puppet/provider/package' Please note that the modified implementation do not fit my environment and I could not test beyond a 404 error when fetching '/Latest/INDEX.bz2'. Here is a patch (git and patchtool do things slightly differently hence the quite big patch whole not much change): --- puppet.diff begins here --- diff -Nur /var/cache/portshaker/ports/sysutils/puppet/files/optpatch-package_origin ./files/optpatch-package_origin --- /var/cache/portshaker/ports/sysutils/puppet/files/optpatch-package_origin 2011-04-10 18:11:49.000000000 +0200 +++ ./files/optpatch-package_origin 2011-07-06 02:33:21.902540033 +0200 @@ -1,8 +1,9 @@ -diff --git lib/puppet/provider/package/freebsd.rb lib/puppet/provider/package/freebsd.rb -index e10a20b..f36e29e 100755 ---- lib/puppet/provider/package/freebsd.rb + +$FreeBSD$ + +--- lib/puppet/provider/package/freebsd.rb.orig +++ lib/puppet/provider/package/freebsd.rb -@@ -1,37 +1,165 @@ +@@ -1,37 +1,166 @@ -Puppet::Type.type(:package).provide :freebsd, :parent => :openbsd do - desc "The specific form of package management on FreeBSD. This is an - extremely quirky packaging system, in that it freely mixes between @@ -12,6 +13,7 @@ +require 'open-uri' +require 'net/ftp' +require 'bz2' ++require 'puppet/provider/package' - commands :pkginfo => "/usr/sbin/pkg_info", - :pkgadd => "/usr/sbin/pkg_add", @@ -28,12 +30,12 @@ confine :operatingsystem => :freebsd + defaultfor :operatingsystem => :freebsd -+ -+ @@lock = Mutex.new -+ @@ports_index = nil - def self.listcmd - command(:pkginfo) ++ @@lock = Mutex.new ++ @@ports_index = nil ++ + # fix bug in URI::FTP merge method that tries to set typecode + # even when other is a string. + class URI::FTP @@ -54,7 +56,11 @@ + :pkg_version => pkg_string.split("-")[-1], + } + end -+ + +- if @resource[:source] =~ /\/$/ +- if @resource[:source] =~ /^(ftp|https?):/ +- Puppet::Util::Execution::withenv :PACKAGESITE => @resource[:source] do +- pkgadd "-r", @resource[:name] + def self.unparse_pkg_info(pkg_info) + [:pkg_name, :pkg_version].map { |key| pkg_info[key] }.join("-") + end @@ -70,11 +76,7 @@ + end + origin + end - -- if @resource[:source] =~ /\/$/ -- if @resource[:source] =~ /^(ftp|https?):/ -- Puppet::Util::Execution::withenv :PACKAGESITE => @resource[:source] do -- pkgadd "-r", @resource[:name] ++ + def self.instances + packages = [] + output = pkginfo "-aoQ" @@ -190,7 +192,7 @@ end def query -@@ -44,7 +172,7 @@ Puppet::Type.type(:package).provide :freebsd, :parent => :openbsd do +@@ -44,7 +173,7 @@ end def uninstall --- puppet.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110706072331.0E64D1475>