[csw-devel] SF.net SVN: gar:[6665] csw/mgar/pkg/puppet/trunk/files/0001-pkgutil-support .patch

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Fri Oct 2 14:10:14 CEST 2009


Revision: 6665
          http://gar.svn.sourceforge.net/gar/?rev=6665&view=rev
Author:   wahwah
Date:     2009-10-02 12:10:14 +0000 (Fri, 02 Oct 2009)

Log Message:
-----------
puppet: Adding the pkgutil support patch

Added Paths:
-----------
    csw/mgar/pkg/puppet/trunk/files/0001-pkgutil-support.patch

Added: csw/mgar/pkg/puppet/trunk/files/0001-pkgutil-support.patch
===================================================================
--- csw/mgar/pkg/puppet/trunk/files/0001-pkgutil-support.patch	                        (rev 0)
+++ csw/mgar/pkg/puppet/trunk/files/0001-pkgutil-support.patch	2009-10-02 12:10:14 UTC (rev 6665)
@@ -0,0 +1,130 @@
+From a910ce5c5ea0b626fc6676254d8fc00bd0b7325a Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Maciej=20Blizi=C5=84ski?= <blizinski at google.com>
+Date: Fri, 2 Oct 2009 13:08:19 +0100
+Subject: [PATCH] pkgutil support
+
+---
+ lib/puppet/provider/package/pkgutil.rb |  111 ++++++++++++++++++++++++++++++++
+ 1 files changed, 111 insertions(+), 0 deletions(-)
+ create mode 100755 lib/puppet/provider/package/pkgutil.rb
+
+diff --git a/lib/puppet/provider/package/pkgutil.rb b/lib/puppet/provider/package/pkgutil.rb
+new file mode 100755
+index 0000000..cde7482
+--- /dev/null
++++ b/lib/puppet/provider/package/pkgutil.rb
+@@ -0,0 +1,111 @@
++# Packaging using pkgutil from http://pkgutil.wikidot.com/
++Puppet::Type.type(:package).provide :pkgutil, :parent => :sun, :source => :sun do
++    desc "Package management using ``pkgutil`` command on Solaris."
++    pkgutil = "pkgutil"
++    if FileTest.executable?("/opt/csw/bin/pkgutil")
++        pkgutil = "/opt/csw/bin/pkgutil"
++    end
++
++    confine :operatingsystem => :solaris
++
++    commands :pkgutil => pkgutil
++
++    # This is so stupid, but then, so is Solaris.
++    ENV["PAGER"] = "/usr/bin/cat"
++
++    def self.extended(mod)
++        unless command(:pkgutil) != "pkgutil"
++            raise Puppet::Error,
++                "The pkgutil command is missing; pkgutil packaging unavailable"
++        end
++    end
++
++    def self.instances(hash = {})
++        blastlist(hash).collect do |bhash|
++            bhash.delete(:avail)
++            new(bhash)
++        end
++    end
++
++    # Turn our pkgutil listing into a bunch of hashes.
++    def self.blastlist(hash)
++        command = ["-c"]
++
++        if hash[:justme]
++            command << hash[:justme]
++        end
++
++        output = pkgutil command
++
++        list = output.split("\n").collect do |line|
++            next if line =~ /^#/
++            next if line =~ /^WARNING/
++            next if line =~ /localrev\s+remoterev/
++
++            blastsplit(line)
++        end.reject { |h| h.nil? }
++
++        if hash[:justme]
++            return list[0]
++        else
++            list.reject! { |h|
++                h[:ensure] == :absent
++            }
++            return list
++        end
++
++    end
++
++    # Split the different lines into hashes.
++    def self.blastsplit(line)
++        if line =~ /\s*(\S+)\s+((\[Not installed\])|(\S+))\s+(\S+)/
++            hash = {}
++            hash[:name] = $1
++            hash[:ensure] = if $2 == "[Not installed]"
++                :absent
++            else
++                $2
++            end
++            hash[:avail] = $5
++
++            if hash[:avail] == "SAME"
++                hash[:avail] = hash[:ensure]
++            end
++
++            # Use the name method, so it works with subclasses.
++            hash[:provider] = self.name
++
++            return hash
++        else
++            Puppet.warning "Cannot match %s" % line
++            return nil
++        end
++    end
++
++    def install
++        pkgutil "-y", "--install", @resource[:name]
++    end
++
++    # Retrieve the version from the current package file.
++    def latest
++        hash = self.class.blastlist(:justme => @resource[:name])
++        hash[:avail]
++    end
++
++    def query
++        if hash = self.class.blastlist(:justme => @resource[:name])
++            hash
++        else
++            {:ensure => :absent}
++        end
++    end
++
++    # Remove the old package, and install the new one
++    def update
++        pkgutil "-y", "--upgrade", @resource[:name]
++    end
++
++    def uninstall
++        pkgutil "-y", "--remove", @resource[:name]
++    end
++end
+-- 
+1.6.3.2
+


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list