[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