autoproj 1.9.6 → 1.9.7.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +15 -0
- data/Rakefile +2 -1
- data/bin/autoproj +1 -2
- data/bin/autoproj-cache +56 -0
- data/bin/autoproj-doc +28 -0
- data/bin/autoproj-query +35 -32
- data/bin/autoproj-snapshot +38 -0
- data/bin/autoproj-test +36 -0
- data/bin/autoproj_bootstrap +104 -10
- data/lib/autoproj.rb +9 -0
- data/lib/autoproj/autobuild.rb +40 -99
- data/lib/autoproj/cmdline.rb +64 -37
- data/lib/autoproj/default.osdeps +30 -1
- data/lib/autoproj/environment.rb +78 -0
- data/lib/autoproj/installation_manifest.rb +36 -0
- data/lib/autoproj/loader.rb +0 -0
- data/lib/autoproj/manifest.rb +35 -1298
- data/lib/autoproj/metapackage.rb +51 -0
- data/lib/autoproj/options.rb +14 -0
- data/lib/autoproj/osdeps.rb +60 -8
- data/lib/autoproj/package_definition.rb +58 -0
- data/lib/autoproj/package_manifest.rb +155 -0
- data/lib/autoproj/package_selection.rb +153 -0
- data/lib/autoproj/package_set.rb +497 -0
- data/lib/autoproj/system.rb +1 -1
- data/lib/autoproj/variable_expansion.rb +107 -0
- data/lib/autoproj/vcs_definition.rb +223 -0
- data/lib/autoproj/version.rb +1 -1
- metadata +28 -10
data/Manifest.txt
CHANGED
@@ -8,13 +8,17 @@ bin/aup
|
|
8
8
|
bin/autolocate
|
9
9
|
bin/autoproj
|
10
10
|
bin/autoproj-bootstrap
|
11
|
+
bin/autoproj-cache
|
11
12
|
bin/autoproj-clean
|
12
13
|
bin/autoproj-create-set
|
14
|
+
bin/autoproj-doc
|
13
15
|
bin/autoproj-envsh
|
14
16
|
bin/autoproj-list
|
15
17
|
bin/autoproj-locate
|
16
18
|
bin/autoproj-query
|
17
19
|
bin/autoproj-show
|
20
|
+
bin/autoproj-snapshot
|
21
|
+
bin/autoproj-test
|
18
22
|
bin/autoproj_bootstrap
|
19
23
|
bin/autoproj_bootstrap.in
|
20
24
|
bin/autoproj_stress_test
|
@@ -23,14 +27,24 @@ lib/autoproj/autobuild.rb
|
|
23
27
|
lib/autoproj/base.rb
|
24
28
|
lib/autoproj/cmdline.rb
|
25
29
|
lib/autoproj/default.osdeps
|
30
|
+
lib/autoproj/environment.rb
|
26
31
|
lib/autoproj/gitorious.rb
|
32
|
+
lib/autoproj/installation_manifest.rb
|
33
|
+
lib/autoproj/loader.rb
|
27
34
|
lib/autoproj/manifest.rb
|
35
|
+
lib/autoproj/metapackage.rb
|
28
36
|
lib/autoproj/options.rb
|
29
37
|
lib/autoproj/osdeps.rb
|
38
|
+
lib/autoproj/package_definition.rb
|
39
|
+
lib/autoproj/package_manifest.rb
|
40
|
+
lib/autoproj/package_selection.rb
|
41
|
+
lib/autoproj/package_set.rb
|
30
42
|
lib/autoproj/query.rb
|
31
43
|
lib/autoproj/system.rb
|
32
44
|
lib/autoproj/templates/create-set/packages.autobuild
|
33
45
|
lib/autoproj/templates/create-set/source.yml
|
46
|
+
lib/autoproj/variable_expansion.rb
|
47
|
+
lib/autoproj/vcs_definition.rb
|
34
48
|
lib/autoproj/version.rb
|
35
49
|
samples/autoproj/README.txt
|
36
50
|
samples/autoproj/init.rb
|
@@ -51,6 +65,7 @@ test/package_managers/apt-dpkg-status.installed-last
|
|
51
65
|
test/package_managers/apt-dpkg-status.noninstalled-last
|
52
66
|
test/package_managers/test_apt_dpkg_manager.rb
|
53
67
|
test/package_managers/test_gem.rb
|
68
|
+
test/package_managers/test_pip.rb
|
54
69
|
test/test_debian.rb
|
55
70
|
test/test_manifest.rb
|
56
71
|
test/test_os_dependencies.rb
|
data/Rakefile
CHANGED
@@ -8,11 +8,12 @@ Utilrb::Rake.hoe do
|
|
8
8
|
self.developer "Rock Core Developers", "rock-dev@dfki.de"
|
9
9
|
|
10
10
|
self.urls = ["http://rock-robotics.org/documentation/autoproj"]
|
11
|
-
self.
|
11
|
+
self.group_name = 'autobuild'
|
12
12
|
self.summary = 'Easy installation and management of sets of software packages'
|
13
13
|
self.description = "autoproj is a manager for sets of software packages. It allows the user to import and build packages from source, still using the underlying distribution's native package manager for software that is available on it."
|
14
14
|
self.email = "rock-dev@dfki.de"
|
15
15
|
|
16
|
+
self.spec_extras[:required_ruby_version] = ">= 1.9.2"
|
16
17
|
extra_deps <<
|
17
18
|
['autobuild', '>= 1.7.0'] <<
|
18
19
|
['utilrb', '>= 1.6.0'] <<
|
data/bin/autoproj
CHANGED
@@ -267,9 +267,8 @@ EOTEXT
|
|
267
267
|
|
268
268
|
if all_enabled_packages.empty?
|
269
269
|
STDERR.puts color("autoproj: nothing to do", :bold)
|
270
|
-
elsif Autoproj::CmdLine.doc?
|
271
|
-
Autoproj::CmdLine.build_packages(command_line_selection, all_enabled_packages)
|
272
270
|
elsif Autoproj::CmdLine.build?
|
271
|
+
Autoproj.message("autoproj: building and installing packages", :bold)
|
273
272
|
Autoproj::CmdLine.build_packages(command_line_selection, all_enabled_packages)
|
274
273
|
end
|
275
274
|
|
data/bin/autoproj-cache
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'autoproj'
|
4
|
+
|
5
|
+
root_dir = Autoproj::CmdLine.initialize_root_directory
|
6
|
+
|
7
|
+
Autoproj::CmdLine.report do
|
8
|
+
cache_dir, *_ =
|
9
|
+
Autoproj.silent do
|
10
|
+
Autoproj::CmdLine.initialize_and_load(ARGV)
|
11
|
+
end
|
12
|
+
manifest = Autoproj.manifest
|
13
|
+
|
14
|
+
cache_dir = File.expand_path(cache_dir, root_dir)
|
15
|
+
if !File.exists?(cache_dir)
|
16
|
+
Autoproj.message " creating autoproj cache in #{cache_dir}"
|
17
|
+
FileUtils.mkdir_p cache_dir
|
18
|
+
else
|
19
|
+
Autoproj.message " updating already existing cache repository in #{cache_dir}"
|
20
|
+
end
|
21
|
+
archive_cache_dir = File.join(cache_dir, 'archives')
|
22
|
+
if !File.directory?(archive_cache_dir)
|
23
|
+
Autoproj.message " creating archive cache in #{archive_cache_dir}"
|
24
|
+
FileUtils.mkdir_p archive_cache_dir
|
25
|
+
else
|
26
|
+
Autoproj.message " updating already existing archive cache in #{archive_cache_dir}"
|
27
|
+
end
|
28
|
+
git_cache_dir = File.join(cache_dir, 'git')
|
29
|
+
if !File.directory?(git_cache_dir)
|
30
|
+
Autoproj.message " creating git cache in #{git_cache_dir}"
|
31
|
+
FileUtils.mkdir_p git_cache_dir
|
32
|
+
Autobuild::Subprocess.run("autoproj-cache", "import", Autobuild.tool(:git), "--git-dir", git_cache_dir, 'init', "--bare")
|
33
|
+
else
|
34
|
+
Autoproj.message " updating already existing git cache in #{git_cache_dir}"
|
35
|
+
end
|
36
|
+
|
37
|
+
manifest.each_package do |pkg|
|
38
|
+
if pkg.importer.kind_of?(Autobuild::Git)
|
39
|
+
Autoproj.message " caching #{pkg.name} (git)"
|
40
|
+
pkg.importdir = git_cache_dir
|
41
|
+
pkg.importer.local_branch = nil
|
42
|
+
pkg.importer.remote_branch = nil
|
43
|
+
remote_name = pkg.name.gsub(/[^\w]/, '_')
|
44
|
+
pkg.importer.remote_name = remote_name
|
45
|
+
pkg.importer.update_remotes_configuration(pkg, 'autoproj-cache')
|
46
|
+
Autobuild::Subprocess.run('autoproj-cache', :import, Autobuild.tool('git'), '--git-dir', git_cache_dir, 'remote', 'update', remote_name)
|
47
|
+
elsif pkg.importer.kind_of?(Autobuild::ArchiveImporter)
|
48
|
+
Autoproj.message " caching #{pkg.name} (archive)"
|
49
|
+
pkg.importer.cachedir = archive_cache_dir
|
50
|
+
pkg.importer.update_cache(pkg)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
Autobuild::Subprocess.run('autoproj-cache', :import, Autobuild.tool('git'), '--git-dir', git_cache_dir, 'gc', '--aggressive', '--prune=all')
|
55
|
+
end
|
56
|
+
|
data/bin/autoproj-doc
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'autoproj'
|
4
|
+
require 'autoproj/cmdline'
|
5
|
+
|
6
|
+
user_selection = Autoproj.silent do
|
7
|
+
Autoproj::CmdLine.initialize_root_directory
|
8
|
+
Autoproj::CmdLine.initialize_and_load(ARGV)
|
9
|
+
end
|
10
|
+
|
11
|
+
user_selection = user_selection.map do |arg|
|
12
|
+
if File.directory?(arg)
|
13
|
+
File.expand_path(arg)
|
14
|
+
else arg
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Autobuild.pass_doc_errors = false
|
19
|
+
|
20
|
+
Autoproj::CmdLine.report do
|
21
|
+
resolved_selection = Autoproj::CmdLine.
|
22
|
+
resolve_user_selection(user_selection, :filter => false)
|
23
|
+
# This calls #prepare, which is required to run build_packages
|
24
|
+
packages = Autoproj::CmdLine.import_packages(resolved_selection)
|
25
|
+
packages.each { |pkg| Autobuild::Package[pkg].disable_phases('import', 'prepare', 'install') }
|
26
|
+
Autoproj::CmdLine.build_packages(resolved_selection, packages, ['doc'])
|
27
|
+
end
|
28
|
+
|
data/bin/autoproj-query
CHANGED
@@ -38,42 +38,45 @@ end
|
|
38
38
|
remaining = parser.parse(ARGV)
|
39
39
|
|
40
40
|
root_dir = Autoproj::CmdLine.initialize_root_directory
|
41
|
-
|
42
|
-
|
43
|
-
STDERR.puts Autoproj.console.color("no query given on the command line", :red)
|
44
|
-
exit 1
|
45
|
-
elsif selection.size > 1
|
46
|
-
STDERR.puts Autoproj.console.color("more than one query given on the command line", :red)
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
selection = selection.first
|
50
|
-
query = Autoproj::Query.parse_query(selection)
|
41
|
+
Autoproj::CmdLine.report do
|
42
|
+
selection = Autoproj::CmdLine.initialize_and_load(remaining)
|
51
43
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
Autoproj.
|
57
|
-
|
58
|
-
end
|
44
|
+
if selection.empty?
|
45
|
+
STDERR.puts Autoproj.console.color("no query given on the command line", :red)
|
46
|
+
exit 1
|
47
|
+
elsif selection.size > 1
|
48
|
+
STDERR.puts Autoproj.console.color("more than one query given on the command line", :red)
|
49
|
+
exit 1
|
59
50
|
end
|
51
|
+
selection = selection.first
|
52
|
+
query = Autoproj::Query.parse_query(selection)
|
60
53
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
54
|
+
packages =
|
55
|
+
if search_all
|
56
|
+
Autoproj.manifest.packages.to_a
|
57
|
+
else
|
58
|
+
Autoproj.manifest.all_selected_packages.map do |pkg_name|
|
59
|
+
[pkg_name, Autoproj.manifest.packages[pkg_name]]
|
60
|
+
end
|
61
|
+
end
|
66
62
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
fields
|
74
|
-
|
63
|
+
matches = packages.map do |name, pkg_def|
|
64
|
+
if priority = query.match(pkg_def)
|
65
|
+
[priority, name]
|
66
|
+
end
|
67
|
+
end.compact
|
68
|
+
|
69
|
+
fields = Hash.new
|
70
|
+
matches = matches.sort
|
71
|
+
matches.each do |priority, name|
|
72
|
+
pkg = Autobuild::Package[name]
|
73
|
+
fields['SRCDIR'] = pkg.srcdir
|
74
|
+
fields['PREFIX'] = pkg.prefix
|
75
|
+
fields['NAME'] = name
|
76
|
+
fields['PRIORITY'] = priority
|
75
77
|
|
76
|
-
|
77
|
-
|
78
|
+
value = Autoproj.expand(display_format, fields)
|
79
|
+
puts value
|
80
|
+
end
|
78
81
|
end
|
79
82
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'autoproj'
|
4
|
+
require 'autoproj/cmdline'
|
5
|
+
|
6
|
+
current_dir = Dir.pwd
|
7
|
+
remaining_args = Autoproj.silent do
|
8
|
+
Autoproj::CmdLine.initialize_root_directory
|
9
|
+
Autoproj::CmdLine.initialize_and_load(ARGV)
|
10
|
+
end
|
11
|
+
|
12
|
+
snapshot_dir = File.expand_path(remaining_args.shift, current_dir)
|
13
|
+
if !snapshot_dir
|
14
|
+
raise ConfigError.new, "target directory missing\nusage: autoproj snapshot target_dir"
|
15
|
+
end
|
16
|
+
|
17
|
+
user_selection = remaining_args.map do |arg|
|
18
|
+
if File.directory?(arg)
|
19
|
+
File.expand_path(arg)
|
20
|
+
else arg
|
21
|
+
end
|
22
|
+
end
|
23
|
+
manifest = Autoproj.manifest
|
24
|
+
Autoproj::CmdLine.report do
|
25
|
+
resolved_selection = Autoproj::CmdLine.
|
26
|
+
resolve_user_selection(user_selection, :filter => false)
|
27
|
+
resolved_selection.filter_excluded_and_ignored_packages(Autoproj.manifest)
|
28
|
+
# This calls #prepare, which is required to run build_packages
|
29
|
+
packages = Autoproj::CmdLine.import_packages(resolved_selection)
|
30
|
+
# Remove non-existing packages
|
31
|
+
packages.each do |pkg|
|
32
|
+
if !File.directory?(manifest.package(pkg).autobuild.srcdir)
|
33
|
+
raise ConfigError, "cannot snapshot #{pkg.name} as it is not checked out"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
Autoproj::CmdLine.snapshot(Autoproj.manifest, snapshot_dir, packages)
|
37
|
+
end
|
38
|
+
|
data/bin/autoproj-test
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'autoproj'
|
4
|
+
require 'autoproj/cmdline'
|
5
|
+
|
6
|
+
user_selection = Autoproj.silent do
|
7
|
+
Autoproj::CmdLine.initialize_root_directory
|
8
|
+
Autoproj::CmdLine.initialize_and_load(ARGV)
|
9
|
+
end
|
10
|
+
|
11
|
+
user_selection = user_selection.map do |arg|
|
12
|
+
if File.directory?(arg)
|
13
|
+
File.expand_path(arg)
|
14
|
+
else arg
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Autobuild.pass_test_errors = true
|
19
|
+
Autobuild.ignore_errors = true
|
20
|
+
|
21
|
+
Autoproj::CmdLine.report do
|
22
|
+
resolved_selection = Autoproj::CmdLine.
|
23
|
+
resolve_user_selection(user_selection, :filter => false)
|
24
|
+
# Remove non-existing packages
|
25
|
+
Autoproj.manifest.each_package do |pkg|
|
26
|
+
if !File.directory?(pkg.srcdir)
|
27
|
+
Autoproj.manifest.add_exclusion(pkg, "#{pkg.name} is not checked out")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
resolved_selection.filter_excluded_and_ignored_packages(Autoproj.manifest)
|
31
|
+
# This calls #prepare, which is required to run build_packages
|
32
|
+
packages = Autoproj::CmdLine.import_packages(resolved_selection)
|
33
|
+
packages.each { |pkg| Autobuild::Package[pkg].disable_phases('import', 'prepare', 'install') }
|
34
|
+
Autoproj::CmdLine.build_packages(resolved_selection, packages, ['test'])
|
35
|
+
end
|
36
|
+
|
data/bin/autoproj_bootstrap
CHANGED
@@ -212,11 +212,11 @@ module Autoproj
|
|
212
212
|
end
|
213
213
|
end
|
214
214
|
end
|
215
|
-
|
216
|
-
|
215
|
+
|
216
|
+
sudo = Autobuild.tool_in_path('sudo')
|
217
217
|
Tempfile.open('osdeps_sh') do |io|
|
218
218
|
io.puts "#! /bin/bash"
|
219
|
-
io.puts GAIN_ROOT_ACCESS
|
219
|
+
io.puts GAIN_ROOT_ACCESS % [sudo]
|
220
220
|
io.write script
|
221
221
|
io.flush
|
222
222
|
Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
|
@@ -226,7 +226,7 @@ module Autoproj
|
|
226
226
|
GAIN_ROOT_ACCESS = <<-EOSCRIPT
|
227
227
|
# Gain root access using sudo
|
228
228
|
if test `id -u` != "0"; then
|
229
|
-
exec
|
229
|
+
exec %s /bin/bash $0 "$@"
|
230
230
|
|
231
231
|
fi
|
232
232
|
EOSCRIPT
|
@@ -338,6 +338,15 @@ fi
|
|
338
338
|
end
|
339
339
|
end
|
340
340
|
|
341
|
+
#Package manger for OpenSuse and Suse (untested)
|
342
|
+
class ZypperManager < ShellScriptManager
|
343
|
+
def initialize
|
344
|
+
super(['zypper'], true,
|
345
|
+
"zypper -n install '%s'",
|
346
|
+
"zypper -n install '%s'")
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
341
350
|
# Package manager interface for systems that use yum
|
342
351
|
class YumManager < ShellScriptManager
|
343
352
|
def initialize
|
@@ -513,10 +522,18 @@ fi
|
|
513
522
|
end
|
514
523
|
end
|
515
524
|
|
525
|
+
def reinstall
|
526
|
+
base_cmdline = [Autobuild.tool_in_path('ruby'), '-S', Autobuild.tool('gem')]
|
527
|
+
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'reinstall', *base_cmdline,
|
528
|
+
'clean'
|
529
|
+
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'reinstall', *base_cmdline,
|
530
|
+
'pristine', '--all', '--extensions'
|
531
|
+
end
|
532
|
+
|
516
533
|
def install(gems)
|
517
534
|
guess_gem_program
|
518
535
|
|
519
|
-
base_cmdline = [Autobuild.tool('gem'), 'install']
|
536
|
+
base_cmdline = [Autobuild.tool_in_path('ruby'), '-S', Autobuild.tool('gem'), 'install']
|
520
537
|
if !GemManager.with_doc
|
521
538
|
base_cmdline << '--no-rdoc' << '--no-ri'
|
522
539
|
end
|
@@ -814,6 +831,7 @@ fi
|
|
814
831
|
PackageManagers::PacmanManager,
|
815
832
|
PackageManagers::YumManager,
|
816
833
|
PackageManagers::PortManager,
|
834
|
+
PackageManagers::ZypperManager,
|
817
835
|
PackageManagers::PipManager]
|
818
836
|
OS_PACKAGE_HANDLERS = {
|
819
837
|
'debian' => 'apt-dpkg',
|
@@ -821,7 +839,8 @@ fi
|
|
821
839
|
'arch' => 'pacman',
|
822
840
|
'manjarolinux' => 'pacman',
|
823
841
|
'fedora' => 'yum',
|
824
|
-
'darwin' => 'port'
|
842
|
+
'darwin' => 'port',
|
843
|
+
'opensuse' => 'zypper'
|
825
844
|
}
|
826
845
|
|
827
846
|
# The information contained in the OSdeps files, as a hash
|
@@ -1012,6 +1031,8 @@ fi
|
|
1012
1031
|
@operating_system = [[lsb_name, "debian"], lsb_versions]
|
1013
1032
|
elsif lsb_name != 'arch' && File.exists?("/etc/arch-release")
|
1014
1033
|
@operating_system = [[lsb_name, "arch"], lsb_versions]
|
1034
|
+
elsif lsb_name != 'opensuse' && File.exists?("/etc/SuSE-release")
|
1035
|
+
@operating_system = [[lsb_name, "opensuse"], lsb_versions]
|
1015
1036
|
elsif lsb_name != 'debian'
|
1016
1037
|
# Debian unstable cannot be detected with lsb_release,
|
1017
1038
|
# so debian has its own detection logic
|
@@ -1049,6 +1070,11 @@ fi
|
|
1049
1070
|
[['darwin'], [version.strip]]
|
1050
1071
|
elsif Autobuild.windows?
|
1051
1072
|
[['windows'], []]
|
1073
|
+
elsif File.exists?('/etc/SuSE-release')
|
1074
|
+
version = File.read('/etc/SuSE-release').strip
|
1075
|
+
version =~/.*VERSION\s+=\s+([^\s]+)/
|
1076
|
+
version = $1
|
1077
|
+
[['opensuse'], [version.strip]]
|
1052
1078
|
end
|
1053
1079
|
end
|
1054
1080
|
|
@@ -1590,8 +1616,18 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
1590
1616
|
# The set of packages that have already been installed
|
1591
1617
|
attr_reader :installed_packages
|
1592
1618
|
|
1593
|
-
#
|
1594
|
-
|
1619
|
+
# Set up the registered package handlers according to the specified osdeps mode
|
1620
|
+
#
|
1621
|
+
# It enables/disables package handlers based on either the value
|
1622
|
+
# returned by {#osdeps_mode} or the value passed as option (the latter
|
1623
|
+
# takes precedence). Moreover, sets the handler's silent flag using
|
1624
|
+
# {#silent?}
|
1625
|
+
#
|
1626
|
+
# @option options [Array<String>] the package handlers that should be
|
1627
|
+
# enabled. The default value is returned by {#osdeps_mode}
|
1628
|
+
# @return [Array<PackageManagers::Manager>] the set of enabled package
|
1629
|
+
# managers
|
1630
|
+
def setup_package_handlers(options = Hash.new)
|
1595
1631
|
options =
|
1596
1632
|
if Kernel.respond_to?(:validate_options)
|
1597
1633
|
Kernel.validate_options options, :osdeps_mode => osdeps_mode
|
@@ -1619,10 +1655,26 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
1619
1655
|
v.silent = self.silent?
|
1620
1656
|
end
|
1621
1657
|
|
1658
|
+
enabled_handlers = []
|
1659
|
+
if os_package_handler.enabled?
|
1660
|
+
enabled_handlers << os_package_handler
|
1661
|
+
end
|
1662
|
+
package_handlers.each_value do |v|
|
1663
|
+
if v.enabled?
|
1664
|
+
enabled_handlers << v
|
1665
|
+
end
|
1666
|
+
end
|
1667
|
+
enabled_handlers
|
1668
|
+
end
|
1669
|
+
|
1670
|
+
# Requests the installation of the given set of packages
|
1671
|
+
def install(packages, options = Hash.new)
|
1622
1672
|
# Remove the set of packages that have already been installed
|
1623
1673
|
packages = packages.to_set - installed_packages
|
1624
1674
|
return false if packages.empty?
|
1625
1675
|
|
1676
|
+
setup_package_handlers(options)
|
1677
|
+
|
1626
1678
|
packages = resolve_os_dependencies(packages)
|
1627
1679
|
packages = packages.map do |handler, list|
|
1628
1680
|
if filter_uptodate_packages? && handler.respond_to?(:filter_uptodate_packages)
|
@@ -1653,6 +1705,20 @@ end
|
|
1653
1705
|
module Autoproj
|
1654
1706
|
class InputError < RuntimeError; end
|
1655
1707
|
|
1708
|
+
class << self
|
1709
|
+
# Programatically overriden autoproj options
|
1710
|
+
#
|
1711
|
+
# @see override_option
|
1712
|
+
attr_reader :option_overrides
|
1713
|
+
end
|
1714
|
+
@option_overrides = Hash.new
|
1715
|
+
|
1716
|
+
# Programatically override a user-selected option without changing the
|
1717
|
+
# configuration file
|
1718
|
+
def self.override_option(option_name, value)
|
1719
|
+
@option_overrides[option_name] = value
|
1720
|
+
end
|
1721
|
+
|
1656
1722
|
class BuildOption
|
1657
1723
|
attr_reader :name
|
1658
1724
|
attr_reader :type
|
@@ -1953,7 +2019,7 @@ module Autoproj
|
|
1953
2019
|
|
1954
2020
|
# Run the provided command as root, using sudo to gain root access
|
1955
2021
|
def self.run_as_root(*args)
|
1956
|
-
if !system('sudo', *args)
|
2022
|
+
if !system(Autobuild.tool_in_path('sudo'), *args)
|
1957
2023
|
raise "failed to run #{args.join(" ")} as root"
|
1958
2024
|
end
|
1959
2025
|
end
|
@@ -2152,13 +2218,28 @@ ruby19:
|
|
2152
2218
|
- ruby19
|
2153
2219
|
- rake
|
2154
2220
|
default: nonexistent
|
2155
|
-
|
2221
|
+
opensuse: ruby19-devel
|
2222
|
+
ruby20:
|
2223
|
+
debian:
|
2224
|
+
- ruby2.0
|
2225
|
+
- ruby2.0-dev
|
2226
|
+
- rake
|
2227
|
+
- rubygems-integration
|
2228
|
+
default: ignore
|
2229
|
+
ruby21:
|
2230
|
+
debian:
|
2231
|
+
- ruby2.1
|
2232
|
+
- ruby2.1-dev
|
2233
|
+
- rake
|
2234
|
+
- rubygems-integration
|
2235
|
+
default: ignore
|
2156
2236
|
build-essential:
|
2157
2237
|
debian,ubuntu: build-essential
|
2158
2238
|
gentoo: ignore
|
2159
2239
|
arch,manjarolinux: base-dev
|
2160
2240
|
fedora: ignore
|
2161
2241
|
darwin: ignore
|
2242
|
+
opensuse: ignore
|
2162
2243
|
autobuild: gem
|
2163
2244
|
autoproj: gem
|
2164
2245
|
git:
|
@@ -2170,24 +2251,28 @@ git:
|
|
2170
2251
|
arch,manjarolinux: git
|
2171
2252
|
fedora: git
|
2172
2253
|
darwin: git-core
|
2254
|
+
opensuse: git
|
2173
2255
|
hg:
|
2174
2256
|
debian,ubuntu: mercurial
|
2175
2257
|
gentoo: dev-vcs/mercurial
|
2176
2258
|
arch,manjarolinux: mercurial
|
2177
2259
|
fedora: mercurial
|
2178
2260
|
darwin: mercurial
|
2261
|
+
opensuse: mercurial
|
2179
2262
|
svn:
|
2180
2263
|
debian,ubuntu: subversion
|
2181
2264
|
gentoo: dev-util/subversion
|
2182
2265
|
arch,manjarolinux: subversion
|
2183
2266
|
fedora: subversion
|
2184
2267
|
darwin: subversion
|
2268
|
+
opensuse: subversion
|
2185
2269
|
cmake:
|
2186
2270
|
debian,ubuntu: cmake
|
2187
2271
|
gentoo: dev-util/cmake
|
2188
2272
|
arch,manjarolinux: cmake
|
2189
2273
|
fedora: cmake
|
2190
2274
|
darwin: cmake
|
2275
|
+
opensuse: cmake
|
2191
2276
|
autotools:
|
2192
2277
|
debian,ubuntu:
|
2193
2278
|
- automake1.9
|
@@ -2204,12 +2289,16 @@ autotools:
|
|
2204
2289
|
darwin:
|
2205
2290
|
- automake
|
2206
2291
|
- autoconf
|
2292
|
+
opensuse:
|
2293
|
+
- automake
|
2294
|
+
- autoconf
|
2207
2295
|
lsb_release:
|
2208
2296
|
debian,ubuntu: lsb-release
|
2209
2297
|
gentoo: sys-apps/lsb-release
|
2210
2298
|
arch,manjarolinux: lsb-release
|
2211
2299
|
fedora: redhat-lsb
|
2212
2300
|
darwin: ignore
|
2301
|
+
opensuse: ignore
|
2213
2302
|
archive:
|
2214
2303
|
debian,ubuntu:
|
2215
2304
|
- tar
|
@@ -2226,14 +2315,19 @@ archive:
|
|
2226
2315
|
darwin:
|
2227
2316
|
- gnutar
|
2228
2317
|
- unzip
|
2318
|
+
opensuse:
|
2319
|
+
- tar
|
2320
|
+
- unzip
|
2229
2321
|
cvs:
|
2230
2322
|
debian,ubuntu: cvs
|
2231
2323
|
fedora: cvs
|
2232
2324
|
darwin: cvs
|
2233
2325
|
arch,manjarolinux: cvs
|
2326
|
+
opensuse: cvs
|
2234
2327
|
pip:
|
2235
2328
|
debian,ubuntu: python-pip
|
2236
2329
|
arch,manjarolinux: python2-pip
|
2330
|
+
opensuse: python-pip
|
2237
2331
|
|
2238
2332
|
EODEFS
|
2239
2333
|
|