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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to