autoproj 2.0.0.rc30 → 2.0.0.rc31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|