bin/autoproj_bootstrap in autoproj-1.8.2.b14 vs bin/autoproj_bootstrap in autoproj-1.8.2.b15

- old
+ new

@@ -284,10 +284,35 @@ "emerge '%s'", "emerge --noreplace '%s'") end end + # Package manager interface for systems that use yum + class YumManager < ShellScriptManager + def initialize + super(['yum'], true, + "yum install '%s'", + "yum install -y '%s'") + end + + def filter_uptodate_packages(packages) + result = `LANG=C rpm -q '#{packages.join("' '")}'` + if $?.exitstatus != 0 + Autoproj.warn "cannot run rpm -q #{packages.join(", ")}. I am assuming that no packages are already installed" + return packages + else + result = [] + result.split("\n").each_with_index do |line, index| + if line =~ /is not installed/ + result << packages[index] + end + end + result + end + end + end + # Package manager interface for systems that use APT and dpkg for # package management class AptDpkgManager < ShellScriptManager def initialize super(['apt-dpkg'], true, @@ -572,15 +597,17 @@ end PACKAGE_HANDLERS = [PackageManagers::AptDpkgManager, PackageManagers::GemManager, PackageManagers::EmergeManager, - PackageManagers::PacmanManager] + PackageManagers::PacmanManager, + PackageManagers::YumManager] OS_PACKAGE_HANDLERS = { 'debian' => 'apt-dpkg', 'gentoo' => 'emerge', - 'arch' => 'pacman' + 'arch' => 'pacman', + 'fedora' => 'yum' } # The information contained in the OSdeps files, as a hash attr_reader :definitions # All the information contained in all the OSdeps files, as a mapping @@ -782,10 +809,15 @@ codenames = [File.read('/etc/debian_version').strip] if codenames.first =~ /sid/ versions = codenames + ["unstable", "sid"] end [['debian'], versions] + elsif File.exists?('/etc/fedora-release') + release_string = File.read('/etc/fedora-release').strip + release_string =~ /Fedora release (\d+)/ + version = $1 + [['fedora'], [version]] elsif File.exists?('/etc/gentoo-release') release_string = File.read('/etc/gentoo-release').strip release_string =~ /^.*([^\s]+)$/ version = $1 [['gentoo'], [version]] @@ -946,10 +978,11 @@ # nonexistent keyword was found, and FOUND_PACKAGES if either packages # or the ignore keyword were found. # def partition_osdep_entry(osdep_name, dep_def, handler_names, excluded, *keys) keys, *additional_keys = *keys + keys ||= [] found = false nonexistent = false result = [] found_keys = Hash.new Array(dep_def).each do |names, values| @@ -977,10 +1010,10 @@ if rec_found == FOUND_NONEXISTENT then nonexistent = true elsif rec_found == FOUND_PACKAGES then found = true end result.concat(rec_result) end - elsif keys + else if names.respond_to?(:to_str) # names could be an array already names = names.split(',') end if handler_names