Philip Brown
2012-Sep-19  18:04 UTC
[Puppet Users] patch for puppet 2.7.18, pkg.rb to work in solaris 11
The currently existing ruby gems version of puppet (2.7.18) is not fully 
compatible with solaris 11 packages. It whines about some packages not 
matching the regular expression.
I hunted around, and found a patch in the ruby bug database... which doesnt 
work.
I found a new version of pkg.rb  in puppet 3.0... .which is not backwards 
compatible.
So, I decided to make a new version.
Specifically, I just recoded the parse_line() routine, to be along the 
lines of the puppet 3.0 version, yet compatible with current release.
Not sure if I should cross post this to puppet-dev or whatever. but here it 
is inline, since its short-ish.
Disclaimer #1: This *appears* to work for me: I have not done extensive 
testing yet.
Disclaimer #2: This is for *officially shipping solaris 11*. It would 
probably break if you''re using the old "opensolaris" junk
To use this, hand-edit 
/var/ruby/1.8/gem_home/gems/puppet-2.7.18/lib/puppet/provider/package/pkg.rb
and replace the existing parse_line definition, with this one.
  def self.parse_line(line)
    hash = {}
    case
    when line =~ /^(\S+) +(\S+) +(...)$/
      hash[:name] = $1
      hash[:version] = $2
      hash[:flags] = $3
    when line =~ /^(\S+) \((.+)\) +(\S+) +(\S+)$/
      hash[:name] = $1
      hash[:version] = $3
      hash[:flags] = $4
    else
      warning "Failed to match ''pkg list'' line
#{line.inspect}"
      return nil
    end
    hash[:provider] = self.name
    hash[:status] = case hash[:flags]
      when /^i/
        ''installed''
      when /^-/
        ''known''
      else
        warning "unknown package state for #{hash[:name]}:
#{hash[:flags]}"
        ''unknown''
    end
    if hash[:status] == "installed"
      hash[:ensure] = :present
    else
      hash[:ensure] = :absent
    end
    return hash
  end
-- 
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/puppet-users/-/Zz1-vPnir-8J.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.