Issue #1553 has been reported by nigelk2.

----------------------------------------
Bug #1553: Puppet and Facter cannot both install the plist module into two 
different locations.
http://reductivelabs.com/redmine/issues/show/1553

Author: nigelk2
Status: Unreviewed
Priority: Normal
Assigned to: 
Category: 
Target version: 
Complexity: Unknown
Keywords: 


The error people are likely to see is:

<pre>
/Library/Ruby/Site/1.8/plist/parser.rb:67: warning: already initialized 
constant TEXT
/Library/Ruby/Site/1.8/plist/parser.rb:68: warning: already initialized 
constant XMLDECL_PATTERN
/Library/Ruby/Site/1.8/plist/parser.rb:69: warning: already initialized 
constant DOCTYPE_PATTERN
/Library/Ruby/Site/1.8/plist/parser.rb:70: warning: already initialized 
constant COMMENT_START
/Library/Ruby/Site/1.8/plist/parser.rb:71: warning: already initialized 
constant COMMENT_END
/Library/Ruby/Site/1.8/plist.rb:21: warning: already initialized constant 
VERSION
NoMethodError: undefined method ‘new’ for nil:NilClass
</pre>

when running facter >= 1.5.0 with puppet.

Sample code to illustrate the problem:
<pre>
#!/usr/bin/env ruby

require 'puppet/util/plist'
require 'facter/util/plist'

xml_data = %x{system_profiler -xml SPHardwareDataType}
puts Plist::parse_xml( xml_data )
</pre>
will produce the above error.

I'm not sure what the long term solution here is, but I offer several 
alternatives:

# Neither Puppet or Facter include plist, but require it to be installed 
separately.
# Puppet does not include plist, but Facter does (given that Facter is a 
requirement for Puppet)
# We do something hacky like this in Facter for the require statements
<pre>
begin
  Plist
rescue NameError
  require 'facter/util/plist'
end
</pre>
eeeeeeew.

As it stands, Facter 1.5.0 and higher are broken when used with Puppet on Mac 
OS X until this is resolved.

Of the three options above, I think the second is the most palatable long term, 
but requires changes to Puppet.  The first option is probably the most 
'correct' option, given some users may in fact install plist themselves and try 
to use in Facter facts or Puppet plugins, but adds an annoying barrier to entry 
for getting Puppet/Facter installed on Mac OS X.  

I don't mind packaging plist up with Facter and Puppet on Mac OS X in a single 
metapackage if that's the best solution everyone agrees on.


----------------------------------------
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://reductivelabs.com/redmine/my/account

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to