From owner-freebsd-ports-bugs@FreeBSD.ORG Wed Jul 6 07:30:10 2011 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB23F106564A for ; Wed, 6 Jul 2011 07:30:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 8AB5E8FC26 for ; Wed, 6 Jul 2011 07:30:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p667UAiF047563 for ; Wed, 6 Jul 2011 07:30:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p667UArT047559; Wed, 6 Jul 2011 07:30:10 GMT (envelope-from gnats) Resent-Date: Wed, 6 Jul 2011 07:30:10 GMT Resent-Message-Id: <201107060730.p667UArT047559@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Romain Tartiere Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 776CD106566C for ; Wed, 6 Jul 2011 07:23:34 +0000 (UTC) (envelope-from romain@blogreen.org) Received: from marvin.blogreen.org (smortex-1-pt.tunnel.tserv11.ams1.ipv6.he.net [IPv6:2001:470:1f14:7c2::2]) by mx1.freebsd.org (Postfix) with ESMTP id B884D8FC15 for ; Wed, 6 Jul 2011 07:23:33 +0000 (UTC) Received: by marvin.blogreen.org (Postfix, from userid 1001) id 0E64D1475; Wed, 6 Jul 2011 09:23:31 +0200 (CEST) Message-Id: <20110706072331.0E64D1475@marvin.blogreen.org> Date: Wed, 6 Jul 2011 09:23:31 +0200 (CEST) From: Romain Tartiere To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/158681: sysutils/puppet: Fix for optpatched 'freebsd' package provider X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Romain Tartiere List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jul 2011 07:30:10 -0000 >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: