Using this debugging patch, I was able to catch the paludis provider at breaking autoloading without official notice:
root@git-test:~/trunk# git diff
diff --git a/lib/puppet/util/autoload.rb b/lib/puppet/util/autoload.rb
index a525755..b595567 100644
--- a/lib/puppet/util/autoload.rb
+++ b/lib/puppet/util/autoload.rb
@@ -111,8 +111,10 @@ class Puppet::Util::Autoload
next if loaded?(name)
rubypath = File.join(@path, name.to_s)
begin
+ Puppet.debug("Loading %s from %s" % [name, dir])
Kernel.require rubypath
loaded(name, file)
+ Puppet.debug("Autoloaded %s from %s" % [name, dir])
rescue => detail
if Puppet[:trace]
puts detail.backtrace
root@git-test:~/trunk#
The resultant log with a trivial manifest:
root@git-test:~/trunk# RUBYLIB=./lib/ PATH=./bin/:$PATH ./bin/puppet --debug ~/tmp/pack_test.pp
debug: Loading dpkg from ./lib/puppet/provider/package
debug: Autoloaded dpkg from ./lib/puppet/provider/package
debug: Loading rpm from ./lib/puppet/provider/package
debug: Autoloaded rpm from ./lib/puppet/provider/package
debug: Loading rug from ./lib/puppet/provider/package
debug: Autoloaded rug from ./lib/puppet/provider/package
debug: Loading ports from ./lib/puppet/provider/package
debug: Autoloaded ports from ./lib/puppet/provider/package
debug: Loading urpmi from ./lib/puppet/provider/package
debug: Autoloaded urpmi from ./lib/puppet/provider/package
debug: Loading appdmg from ./lib/puppet/provider/package
debug: Autoloaded appdmg from ./lib/puppet/provider/package
debug: Loading apple from ./lib/puppet/provider/package
debug: Autoloaded apple from ./lib/puppet/provider/package
debug: Loading pkgdmg from ./lib/puppet/provider/package
debug: Autoloaded pkgdmg from ./lib/puppet/provider/package
debug: Loading sun from ./lib/puppet/provider/package
debug: Autoloaded sun from ./lib/puppet/provider/package
debug: Loading gem from ./lib/puppet/provider/package
debug: Autoloaded gem from ./lib/puppet/provider/package
debug: Loading darwinport from ./lib/puppet/provider/package
debug: Autoloaded darwinport from ./lib/puppet/provider/package
>> debug: Loading paludis from ./lib/puppet/provider/package
debug: Puppet::Type::Package::ProviderRug: Not suitable: operatingsystem not in suse
debug: Puppet::Type::Package::ProviderOpenbsd: Not suitable: operatingsystem not in openbsd
debug: Puppet::Type::Package::ProviderRpm: Not suitable: missing rpm
debug: Puppet::Type::Package::ProviderDarwinport: Not suitable: operatingsystem not in Darwin
debug: Puppet::Type::Package::ProviderPkgdmg: Not suitable: missing /Library/Receipts
debug: Puppet::Type::Package::ProviderApple: Not suitable: missing /Library/Receipts
debug: Puppet::Type::Package::ProviderAppdmg: Not suitable: missing /Library/Receipts
debug: Puppet::Type::Package::ProviderPorts: Not suitable: missing /usr/local/sbin/portupgrade
debug: Puppet::Type::Package::ProviderUrpmi: Not suitable: missing rpm
debug: Puppet::Type::Package::ProviderSun: Not suitable: missing /usr/sbin/pkgrm
debug: Puppet::Type::Package::ProviderFreebsd: Not suitable: operatingsystem not in freebsd
warning: Found multiple default providers for package: gem, dpkg; using gem
[further failures]
As you can see at the marked line, the autoloader tries to load the paludis provider but fails completely and aborts further loading. Removing the paludis provider returned the installation into a functional state.