autoproj 2.0.0.rc30 → 2.0.0.rc31
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/autoproj/manifest.rb +17 -9
- data/lib/autoproj/os_package_installer.rb +7 -2
- data/lib/autoproj/package_managers/apt_dpkg_manager.rb +2 -2
- data/lib/autoproj/package_managers/bundler_manager.rb +5 -0
- data/lib/autoproj/package_managers/emerge_manager.rb +2 -2
- data/lib/autoproj/package_managers/homebrew_manager.rb +2 -2
- data/lib/autoproj/package_managers/manager.rb +4 -0
- data/lib/autoproj/package_managers/pacman_manager.rb +2 -2
- data/lib/autoproj/package_managers/pkg_manager.rb +2 -2
- data/lib/autoproj/package_managers/port_manager.rb +2 -2
- data/lib/autoproj/package_managers/shell_script_manager.rb +11 -20
- data/lib/autoproj/package_managers/yum_manager.rb +2 -2
- data/lib/autoproj/package_managers/zypper_manager.rb +2 -2
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f768ab32070ccf5661b6ef7e0713598cc32a2da
|
4
|
+
data.tar.gz: 6b9bc19bb4c653887479bdcafc512a7a8a308c19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0b7cb9352271cf11c4fb9f3d945fdafe5f8211dee6edb15c2320dfe7da6bf10c9a18e73ab77be7f1ce7e01979d8172a491738422819989a2a5f2df502e595bd
|
7
|
+
data.tar.gz: 3b59fac581a9e8ca86e342bd5799e49b381a6790fef9eb351258c39a653586a282fa54af79e25e6977dfcdc6a490981253ecf672108e91c2fc2bdea153799e60
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -394,7 +394,16 @@ def definition_file(package_name)
|
|
394
394
|
end
|
395
395
|
end
|
396
396
|
|
397
|
+
# @deprecated use {#find_package_definition} instead
|
397
398
|
def find_package(name)
|
399
|
+
find_package_definition(name)
|
400
|
+
end
|
401
|
+
|
402
|
+
# The autoproj description of a package by its name
|
403
|
+
#
|
404
|
+
# @param [String,#name] name the package name
|
405
|
+
# @return [PackageDefinition,nil]
|
406
|
+
def find_package_definition(name)
|
398
407
|
if name.respond_to?(:name)
|
399
408
|
name = name.name
|
400
409
|
end
|
@@ -402,16 +411,17 @@ def find_package(name)
|
|
402
411
|
packages[name.to_str]
|
403
412
|
end
|
404
413
|
|
414
|
+
# The autobuild description of a package by its name
|
415
|
+
#
|
416
|
+
# @param [String,#name] name the package name
|
417
|
+
# @return [Autobuild::Package,nil]
|
405
418
|
def find_autobuild_package(name)
|
406
|
-
if
|
407
|
-
name = name.name
|
408
|
-
end
|
409
|
-
|
410
|
-
if pkg = packages[name.to_str]
|
419
|
+
if pkg = find_package(name)
|
411
420
|
pkg.autobuild
|
412
421
|
end
|
413
422
|
end
|
414
423
|
|
424
|
+
# @deprecated use {#find_package} instead
|
415
425
|
def package(name)
|
416
426
|
find_package(name)
|
417
427
|
end
|
@@ -427,9 +437,7 @@ def each_package(&block)
|
|
427
437
|
#
|
428
438
|
# @yieldparam [PackageDefinition] pkg
|
429
439
|
def each_package_definition(&block)
|
430
|
-
if !block_given?
|
431
|
-
return enum_for(:each_package_definition)
|
432
|
-
end
|
440
|
+
return enum_for(__method__) if !block_given?
|
433
441
|
packages.each_value(&block)
|
434
442
|
end
|
435
443
|
|
@@ -438,7 +446,7 @@ def each_package_definition(&block)
|
|
438
446
|
# @yieldparam [Autobuild::Package] pkg
|
439
447
|
def each_autobuild_package
|
440
448
|
return enum_for(__method__) if !block_given?
|
441
|
-
|
449
|
+
each_package_definition { |pkg| yield(pkg.autobuild) }
|
442
450
|
end
|
443
451
|
|
444
452
|
# @deprecated use Ops::Tools.create_autobuild_package or include
|
@@ -320,15 +320,20 @@ def install(osdep_packages, install_only: false, **options)
|
|
320
320
|
|
321
321
|
setup_package_managers(**options)
|
322
322
|
|
323
|
+
managers = package_managers.dup
|
323
324
|
packages = os_package_resolver.resolve_os_packages(osdep_packages)
|
324
325
|
packages = packages.map do |handler_name, list|
|
325
|
-
if manager =
|
326
|
+
if manager = managers.delete(handler_name)
|
326
327
|
[manager, list]
|
327
328
|
else
|
328
329
|
raise ArgumentError, "no package manager called #{handler_name} found"
|
329
330
|
end
|
330
331
|
end
|
331
332
|
|
333
|
+
managers.each_value do |pkg_manager|
|
334
|
+
packages << [pkg_manager, []]
|
335
|
+
end
|
336
|
+
|
332
337
|
# Install OS packages first, as the other package handlers might
|
333
338
|
# depend on OS packages
|
334
339
|
os_packages, other_packages = packages.partition do |handler, list|
|
@@ -337,7 +342,7 @@ def install(osdep_packages, install_only: false, **options)
|
|
337
342
|
[os_packages, other_packages].each do |packages|
|
338
343
|
packages.each do |handler, list|
|
339
344
|
list = list.to_set - installed_resolved_packages[handler]
|
340
|
-
next if list.empty?
|
345
|
+
next if list.empty? && !handler.call_while_empty?
|
341
346
|
|
342
347
|
handler.install(
|
343
348
|
list.to_a,
|
@@ -9,8 +9,8 @@ def initialize(ws, status_file = "/var/lib/dpkg/status")
|
|
9
9
|
@status_file = status_file
|
10
10
|
@installed_packages = nil
|
11
11
|
super(ws, true,
|
12
|
-
|
13
|
-
|
12
|
+
%w{apt-get install},
|
13
|
+
%w{DEBIAN_FRONTEND=noninteractive apt-get install -y})
|
14
14
|
end
|
15
15
|
|
16
16
|
# On a dpkg-enabled system, checks if the provided package is installed
|
@@ -16,6 +16,9 @@ def enabled?; !!@enabled end
|
|
16
16
|
attr_writer :silent
|
17
17
|
def silent?; !!@silent end
|
18
18
|
|
19
|
+
attr_writer :call_while_empty
|
20
|
+
def call_while_empty?; !!@call_while_empty end
|
21
|
+
|
19
22
|
# Create a package manager registered with various names
|
20
23
|
#
|
21
24
|
# @param [Array<String>] names the package manager names. It MUST be
|
@@ -25,6 +28,7 @@ def initialize(ws)
|
|
25
28
|
@ws = ws
|
26
29
|
@enabled = true
|
27
30
|
@silent = true
|
31
|
+
@call_while_empty = false
|
28
32
|
end
|
29
33
|
|
30
34
|
# The primary name for this package manager
|
@@ -5,8 +5,8 @@ module PackageManagers
|
|
5
5
|
class PacmanManager < ShellScriptManager
|
6
6
|
def initialize(ws)
|
7
7
|
super(ws, true,
|
8
|
-
|
9
|
-
|
8
|
+
%w{pacman -Sy --needed},
|
9
|
+
%w{pacman -Sy --needed --noconfirm})
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -3,7 +3,7 @@ module PackageManagers
|
|
3
3
|
# Base class for all package managers that simply require the call of a
|
4
4
|
# shell script to install packages (e.g. yum, apt, ...)
|
5
5
|
class ShellScriptManager < Manager
|
6
|
-
def self.execute(
|
6
|
+
def self.execute(command_line, with_locking, with_root)
|
7
7
|
if with_locking
|
8
8
|
File.open('/tmp/autoproj_osdeps_lock', 'w') do |lock_io|
|
9
9
|
begin
|
@@ -11,30 +11,20 @@ def self.execute(script, with_locking, with_root)
|
|
11
11
|
Autoproj.message " waiting for other autoproj instances to finish their osdeps installation"
|
12
12
|
sleep 5
|
13
13
|
end
|
14
|
-
return execute(
|
14
|
+
return execute(command_line, false, with_root)
|
15
15
|
ensure
|
16
16
|
lock_io.flock(File::LOCK_UN)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
io.puts GAIN_ROOT_ACCESS % [sudo] if with_root
|
25
|
-
io.write script
|
26
|
-
io.flush
|
27
|
-
Autobuild::Subprocess.run 'autoproj', 'osdeps', '/bin/bash', io.path
|
21
|
+
if with_root
|
22
|
+
sudo = Autobuild.tool_in_path('sudo')
|
23
|
+
command_line = [sudo, *command_line]
|
28
24
|
end
|
29
|
-
end
|
30
|
-
|
31
|
-
GAIN_ROOT_ACCESS = <<-EOSCRIPT
|
32
|
-
# Gain root access using sudo
|
33
|
-
if test `id -u` != "0"; then
|
34
|
-
exec %s /bin/bash $0 "$@"
|
35
25
|
|
36
|
-
|
37
|
-
|
26
|
+
Autobuild::Subprocess.run 'autoproj', 'osdeps', *command_line
|
27
|
+
end
|
38
28
|
|
39
29
|
# Overrides the {#needs_locking?} flag
|
40
30
|
attr_writer :needs_locking
|
@@ -110,7 +100,7 @@ def initialize(ws, needs_locking, user_install_cmd, auto_install_cmd,needs_root=
|
|
110
100
|
# {#user_install_cmd]
|
111
101
|
def generate_user_os_script(os_packages, user_install_cmd: self.user_install_cmd)
|
112
102
|
if user_install_cmd
|
113
|
-
(
|
103
|
+
user_install_cmd.join(" ") + " " + os_packages.join("' '")
|
114
104
|
else generate_auto_os_script(os_packages)
|
115
105
|
end
|
116
106
|
end
|
@@ -125,7 +115,7 @@ def generate_user_os_script(os_packages, user_install_cmd: self.user_install_cmd
|
|
125
115
|
# If given, it overrides the default value stored in
|
126
116
|
# {#auto_install_cmd]
|
127
117
|
def generate_auto_os_script(os_packages, auto_install_cmd: self.auto_install_cmd)
|
128
|
-
(
|
118
|
+
auto_install_cmd.join(" ") + " " + os_packages.join("' '")
|
129
119
|
end
|
130
120
|
|
131
121
|
# Handles interaction with the user
|
@@ -197,7 +187,8 @@ def install(packages, filter_uptodate_packages: false, install_only: false,
|
|
197
187
|
Autoproj.message "Generating installation script for non-ruby OS dependencies"
|
198
188
|
Autoproj.message shell_script
|
199
189
|
end
|
200
|
-
|
190
|
+
|
191
|
+
ShellScriptManager.execute([*auto_install_cmd, *packages], needs_locking?, needs_root?)
|
201
192
|
return true
|
202
193
|
end
|
203
194
|
false
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.rc31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: autobuild
|