diff options
author | Matthew Thode <prometheanfire@gentoo.org> | 2018-09-22 16:16:32 -0500 |
---|---|---|
committer | Matthew Thode <prometheanfire@gentoo.org> | 2018-09-22 16:18:38 -0500 |
commit | a4584b802c811edb1f6e8fa4bf1eddf122c533eb (patch) | |
tree | 971ad8f893dc3fb37b25cbc8f6279d3d3b199156 /app-admin/puppet-agent/files | |
parent | app-admin/puppet: 5.5.6 stable amd64/x86 (diff) | |
download | gentoo-a4584b802c811edb1f6e8fa4bf1eddf122c533eb.tar.gz gentoo-a4584b802c811edb1f6e8fa4bf1eddf122c533eb.tar.bz2 gentoo-a4584b802c811edb1f6e8fa4bf1eddf122c533eb.zip |
app-admin/puppet-agent: 5.5.6 stable amd64/x86 with cleanup
Package-Manager: Portage-2.3.49, Repoman-2.3.10
Diffstat (limited to 'app-admin/puppet-agent/files')
-rw-r--r-- | app-admin/puppet-agent/files/43e2c935252b995134ce353e5e6312cf77aea480.patch | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/app-admin/puppet-agent/files/43e2c935252b995134ce353e5e6312cf77aea480.patch b/app-admin/puppet-agent/files/43e2c935252b995134ce353e5e6312cf77aea480.patch deleted file mode 100644 index 619c5dd68cba..000000000000 --- a/app-admin/puppet-agent/files/43e2c935252b995134ce353e5e6312cf77aea480.patch +++ /dev/null @@ -1,329 +0,0 @@ -diff --git a/lib/puppet/provider/package/portage.rb b/lib/puppet/provider/package/portage.rb -index 374667c..12160c6 100644 ---- a/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/provider/package/portage.rb -+++ b/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/provider/package/portage.rb -@@ -2,14 +2,19 @@ - require 'fileutils' - - Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Package do -- desc "Provides packaging support for Gentoo's portage system." -+ desc "Provides packaging support for Gentoo's portage system. - -- has_features :versionable, :reinstallable -+ This provider supports the `install_options` and `uninstall_options` attributes, which allows command-line -+ flags to be passed to emerge. These options should be specified as a string (e.g. '--flag'), a hash -+ (e.g. {'--flag' => 'value'}), or an array where each element is either a string or a hash." -+ -+ has_features :install_options, :purgeable, :reinstallable, :uninstall_options, :versionable, :virtual_packages - - { -- :emerge => "/usr/bin/emerge", -- :eix => "/usr/bin/eix", -- :update_eix => "/usr/bin/eix-update", -+ :emerge => '/usr/bin/emerge', -+ :eix => '/usr/bin/eix', -+ :qatom_bin => '/usr/bin/qatom', -+ :update_eix => '/usr/bin/eix-update', - }.each_pair do |name, path| - has_command(name, path) do - environment :HOME => '/' -@@ -24,15 +29,18 @@ def self.instances - result_format = self.eix_result_format - result_fields = self.eix_result_fields - -+ limit = self.eix_limit - version_format = self.eix_version_format - slot_versions_format = self.eix_slot_versions_format -+ installed_versions_format = self.eix_installed_versions_format -+ installable_versions_format = self.eix_install_versions_format - begin -- eix_file = File.directory?("/var/cache/eix") ? "/var/cache/eix/portage.eix" : "/var/cache/eix" -+ eix_file = File.directory?('/var/cache/eix') ? '/var/cache/eix/portage.eix' : '/var/cache/eix' - update_eix if !FileUtils.uptodate?(eix_file, %w{/usr/bin/eix /usr/portage/metadata/timestamp}) - - search_output = nil -- Puppet::Util.withenv :LASTVERSION => version_format, :LASTSLOTVERSIONS => slot_versions_format do -- search_output = eix *(self.eix_search_arguments + ["--installed"]) -+ Puppet::Util.withenv :EIX_LIMIT => limit, :LASTVERSION => version_format, :LASTSLOTVERSIONS => slot_versions_format, :INSTALLEDVERSIONS => installed_versions_format, :STABLEVERSIONS => installable_versions_format do -+ search_output = eix *(self.eix_search_arguments + ['--installed']) - end - - packages = [] -@@ -57,65 +65,123 @@ def self.instances - - def install - should = @resource.should(:ensure) -- name = package_name -- unless should == :present or should == :latest -- # We must install a specific version -- name = package_atom_with_version(should) -+ cmd = %w{} -+ name = qatom[:category] ? "#{qatom[:category]}/#{qatom[:pn]}" : qatom[:pn] -+ name = qatom[:pfx] + name if qatom[:pfx] -+ name = name + '-' + qatom[:pv] if qatom[:pv] -+ name = name + '-' + qatom[:pr] if qatom[:pr] -+ name = name + qatom[:slot] if qatom[:slot] -+ cmd << '--update' if [:latest].include?(should) -+ cmd += install_options if @resource[:install_options] -+ cmd << name -+ emerge *cmd -+ end -+ -+ def uninstall -+ should = @resource.should(:ensure) -+ cmd = %w{--rage-clean} -+ name = qatom[:category] ? "#{qatom[:category]}/#{qatom[:pn]}" : qatom[:pn] -+ name = qatom[:pfx] + name if qatom[:pfx] -+ name = name + '-' + qatom[:pv] if qatom[:pv] -+ name = name + '-' + qatom[:pr] if qatom[:pr] -+ name = name + qatom[:slot] if qatom[:slot] -+ cmd += uninstall_options if @resource[:uninstall_options] -+ cmd << name -+ if [:purged].include?(should) -+ Puppet::Util.withenv :CONFIG_PROTECT => "-*" do -+ emerge *cmd -+ end -+ else -+ emerge *cmd - end -- emerge name - end - -- # The common package name format. -- def package_name -- @resource[:category] ? "#{@resource[:category]}/#{@resource[:name]}" : @resource[:name] -+ def reinstall -+ self.install - end - -- def package_name_without_slot -- package_name.sub(self.class.slot_pattern, '') -+ def update -+ self.install - end - -- def package_slot -- if match = package_name.match(self.class.slot_pattern) -- match[1] -+ def qatom -+ output_format = self.qatom_output_format -+ result_format = self.qatom_result_format -+ result_fields = self.qatom_result_fields -+ @atom ||= begin -+ search_output = nil -+ package_info = {} -+ # do the search -+ search_output = qatom_bin *([@resource[:name], '--format', output_format]) -+ # verify if the search found anything -+ match = result_format.match(search_output) -+ if match -+ result_fields.zip(match.captures) do |field, value| -+ # some fields can be empty or (null) (if we are not passed a category in the package name for instance) -+ if value == '(null)' -+ package_info[field] = nil -+ elsif !value or value.empty? -+ package_info[field] = nil -+ else -+ package_info[field] = value -+ end -+ end -+ end -+ @atom = package_info -+ rescue Puppet::ExecutionFailure => detail -+ raise Puppet::Error.new(detail) - end - end - -- def package_atom_with_version(version) -- if slot = package_slot -- "=#{package_name_without_slot}-#{version}:#{package_slot}" -- else -- "=#{package_name}-#{version}" -- end -+ def qatom_output_format -+ '"[%{CATEGORY}] [%{PN}] [%{PV}] [%[PR]] [%[SLOT]] [%[pfx]] [%[sfx]]"' - end - -- def uninstall -- emerge "--unmerge", package_name -+ def qatom_result_format -+ /^\"\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\](.*)\"$/ - end - -- def reinstall -- self.install -+ def qatom_result_fields -+ [:category, :pn, :pv, :pr, :slot, :pfx, :sfx] - end - -- def update -- self.install -+ def self.get_sets -+ @sets ||= begin -+ @sets = emerge *(['--list-sets']) -+ end - end - - def query -+ limit = self.class.eix_limit - result_format = self.class.eix_result_format - result_fields = self.class.eix_result_fields - - version_format = self.class.eix_version_format - slot_versions_format = self.class.eix_slot_versions_format -- search_field = package_name_without_slot.count('/') > 0 ? "--category-name" : "--name" -- search_value = package_name_without_slot -+ installed_versions_format = self.class.eix_installed_versions_format -+ installable_versions_format = self.class.eix_install_versions_format -+ search_field = qatom[:category] ? '--category-name' : '--name' -+ search_value = qatom[:category] ? "#{qatom[:category]}/#{qatom[:pn]}" : qatom[:pn] -+ -+ @eix_result ||= begin -+ # package sets -+ package_sets = [] -+ self.class.get_sets.each_line do |package_set| -+ package_sets << package_set.to_s.strip -+ end - -- begin -- eix_file = File.directory?("/var/cache/eix") ? "/var/cache/eix/portage.eix" : "/var/cache/eix" -+ if @resource[:name].match(/^@/) -+ if package_sets.include?(@resource[:name][1..-1].to_s) -+ return({:name => "#{@resource[:name]}", :ensure => '9999', :version_available => nil, :installed_versions => nil, :installable_versions => "9999,"}) -+ end -+ end -+ -+ eix_file = File.directory?('/var/cache/eix') ? '/var/cache/eix/portage.eix' : '/var/cache/eix' - update_eix if !FileUtils.uptodate?(eix_file, %w{/usr/bin/eix /usr/portage/metadata/timestamp}) - - search_output = nil -- Puppet::Util.withenv :LASTVERSION => version_format, :LASTSLOTVERSIONS => slot_versions_format do -- search_output = eix *(self.class.eix_search_arguments + ["--exact",search_field,search_value]) -+ Puppet::Util.withenv :EIX_LIMIT => limit, :LASTVERSION => version_format, :LASTSLOTVERSIONS => slot_versions_format, :INSTALLEDVERSIONS => installed_versions_format, :STABLEVERSIONS => installable_versions_format do -+ search_output = eix *(self.class.eix_search_arguments + ['--exact',search_field,search_value]) - end - - packages = [] -@@ -127,10 +193,19 @@ def query - result_fields.zip(match.captures) do |field, value| - package[field] = value unless !value or value.empty? - end -- if package_slot -- package[:version_available] = eix_get_version_for_slot(package[:slot_versions_available], package_slot) -- package[:ensure] = eix_get_version_for_slot(package[:installed_slots], package_slot) -+ # dev-lang python [3.4.5] [3.5.2] [2.7.12:2.7,3.4.5:3.4] [2.7.12:2.7,3.4.5:3.4,3.5.2:3.5] https://www.python.org/ An interpreted, interactive, object-oriented programming language -+ # version_available is what we CAN install / update to -+ # ensure is what is currently installed -+ # This DOES NOT choose to install/upgrade or not, just provides current info -+ # prefer checking versions to slots as versions are finer grained -+ if qatom[:pv] -+ package[:version_available] = eix_get_version_for_versions(package[:installable_versions], qatom[:pv]) -+ package[:ensure] = eix_get_version_for_versions(package[:installed_versions], qatom[:pv]) -+ elsif qatom[:slot] -+ package[:version_available] = eix_get_version_for_slot(package[:slot_versions_available], qatom[:slot]) -+ package[:ensure] = eix_get_version_for_slot(package[:installed_slots], qatom[:slot]) - end -+ - package[:ensure] = package[:ensure] ? package[:ensure] : :absent - packages << package - end -@@ -138,10 +213,9 @@ def query - - case packages.size - when 0 -- not_found_value = "#{@resource[:category] ? @resource[:category] : "<unspecified category>"}/#{@resource[:name]}" -- raise Puppet::Error.new("No package found with the specified name [#{not_found_value}]") -+ raise Puppet::Error.new("No package found with the specified name [#{@resource[:name]}]") - when 1 -- return packages[0] -+ @eix_result = packages[0] - else - raise Puppet::Error.new("More than one package with the specified name [#{search_value}], please use the category parameter to disambiguate") - end -@@ -155,39 +229,73 @@ def latest - end - - private -+ def eix_get_version_for_versions(versions, target) -+ # [2.7.10-r1,2.7.12,3.4.3-r1,3.4.5,3.5.2] 3.5.2 -+ return nil if versions.nil? -+ versions = versions.split(',') -+ # [2.7.10-r1 2.7.12 3.4.3-r1 3.4.5 3.5.2] -+ versions.find { |version| version == target } -+ # 3.5.2 -+ end -+ -+ private - def eix_get_version_for_slot(versions_and_slots, slot) -+ # [2.7.12:2.7 3.4.5:3.4 3.5.2:3.5] 3.5 - return nil if versions_and_slots.nil? -- versions_and_slots = versions_and_slots.split(",") -- versions_and_slots.map! { |version_and_slot| version_and_slot.split(":") } -- version_for_slot = versions_and_slots.find { |version_and_slot| version_and_slot.last == slot } -+ versions_and_slots = versions_and_slots.split(',') -+ # [2.7.12:2.7 3.4.5:3.4 3.5.2:3.5] -+ versions_and_slots.map! { |version_and_slot| version_and_slot.split(':') } -+ # [2.7.12: 2.7 -+ # 3.4.5: 3.4 -+ # 3.5.2: 3.5] -+ version_for_slot = versions_and_slots.find { |version_and_slot| version_and_slot.last == slot[1..-1] } -+ # [3.5.2: 3.5] - version_for_slot.first if version_for_slot -- end -- -- def self.slot_pattern -- /:([\w+.\/*=-]+)$/ -+ # 3.5.2 - end - - def self.eix_search_format -- "'<category> <name> [<installedversions:LASTVERSION>] [<bestversion:LASTVERSION>] [<installedversions:LASTSLOTVERSIONS>] [<bestslotversions:LASTSLOTVERSIONS>] <homepage> <description>\n'" -+ "'<category> <name> [<installedversions:LASTVERSION>] [<bestversion:LASTVERSION>] [<installedversions:LASTSLOTVERSIONS>] [<installedversions:INSTALLEDVERSIONS>] [<availableversions:STABLEVERSIONS>] [<bestslotversions:LASTSLOTVERSIONS>] <homepage> <description>\n'" - end - - def self.eix_result_format -- /^(\S+)\s+(\S+)\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+(\S+)\s+(.*)$/ -+ /^(\S+)\s+(\S+)\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+\[(\S*)\]\s+(\S+)\s+(.*)$/ - end - - def self.eix_result_fields -- [:category, :name, :ensure, :version_available, :installed_slots, :slot_versions_available, :vendor, :description] -+ # ensure:[3.4.5], version_available:[3.5.2], installed_slots:[2.7.12:2.7,3.4.5:3.4], installable_versions:[2.7.10-r1,2.7.12,3.4.3-r1,3.4.5,3.5.2] slot_versions_available:[2.7.12:2.7,3.4.5:3.4,3.5.2:3.5] -+ [:category, :name, :ensure, :version_available, :installed_slots, :installed_versions, :installable_versions, :slot_versions_available, :vendor, :description] - end - - def self.eix_version_format -- "{last}<version>{}" -+ '{last}<version>{}' - end - - def self.eix_slot_versions_format -- "{!first},{}<version>:<slot>" -+ '{!first},{}<version>:<slot>' -+ end -+ -+ def self.eix_installed_versions_format -+ '{!first},{}<version>' -+ end -+ -+ def self.eix_install_versions_format -+ '{!first}{!last},{}{}{isstable}<version>{}' -+ end -+ -+ def self.eix_limit -+ '0' - end - - def self.eix_search_arguments -- ["--nocolor", "--pure-packages", "--format",self.eix_search_format] -+ ['--nocolor', '--pure-packages', '--format', self.eix_search_format] -+ end -+ -+ def install_options -+ join_options(@resource[:install_options]) -+ end -+ -+ def uninstall_options -+ join_options(@resource[:uninstall_options]) - end - end |