Issue #2382 has been updated by Ryan Hutchison.
Luke Kanies wrote: > At this point I'm comfortable accepting the patch to portupgrade, but not to > the package type. We can look at that patch for the next release, but I > think we're too late in the cycle to apply it in this release. Thanks for taking the time to consider this. If you quickly glance at the package type patch, you will notice that it fixes a very critical part of the logic. Previously it would make a call to 'provider.update' regardless if the package existed or not. I simply made it more logical (if the package is absent - install it .. otherwise - update it.) ---------------------------------------- Feature #2382: package provider ports: portupgrade does not work http://projects.reductivelabs.com/issues/2382 Author: Ryan Hutchison Status: Needs design decision Priority: Normal Assigned to: Ryan Hutchison Category: package Target version: Complexity: Trivial Affected version: 0.24.8 Keywords: In puppet/provider/package/ports.rb the command passes argument -N which prevents installed ports from being upgraded. * Modified type 'packages.rb'. > * latest now calls install when port is absent and update when port exists, > but is not the latest version. * Modified package provider 'ports.rb'. > * update now runs portupgrade with -M BATCH=yes instead of calling install. > * install runs as normal. Patch: <pre> --- puppet/provider/package/ports.rb 2009-07-01 14:22:00.000000000 -0400 +++ puppet-patched/provider/package/ports.rb 2009-07-01 14:25:45.000000000 -0400 @@ -91,7 +91,13 @@ Puppet::Type.type(:package).provide :por end def update - install() + # -M: yes, we're a batch, so don't ask any questions + cmd = %w{-M BATCH=yes} << @resource[:name] + + output = portupgrade(*cmd) + if output =~ /\*\* No such / + raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name] + end end end --- puppet/type/package.rb 2009-07-01 14:22:01.000000000 -0400 +++ puppet-patched/type/package.rb 2009-07-01 14:25:22.000000000 -0400 @@ -68,15 +68,20 @@ module Puppet # in the "install" method. So, check the current state now, # to compare against later. current = self.retrieve - begin - provider.update - rescue => detail - self.fail "Could not update: %s" % detail - end if current == :absent + begin + provider.install + rescue => detail + self.fail "Could not install: %s" % detail + end :package_installed else + begin + provider.update + rescue => detail + self.fail "Could not update: %s" % detail + end :package_changed end end </pre>> -- 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 -~----------~----~----~----~------~----~------~--~---
