autoproj 2.0.0.b7 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.gitignore +8 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/README.md +4 -0
- data/Rakefile +40 -81
- data/autoproj.gemspec +29 -0
- data/lib/autoproj/cli/cache.rb +7 -2
- data/lib/autoproj/cli/main.rb +46 -25
- data/lib/autoproj/cli/main_test.rb +6 -4
- data/lib/autoproj/cli/status.rb +2 -2
- data/lib/autoproj/configuration.rb +5 -0
- data/lib/autoproj/git_server_configuration.rb +117 -0
- data/lib/autoproj/osdeps.rb +14 -914
- data/lib/autoproj/package_managers/apt_dpkg_manager.rb +70 -0
- data/lib/autoproj/package_managers/emerge_manager.rb +14 -0
- data/lib/autoproj/package_managers/gem_manager.rb +313 -0
- data/lib/autoproj/package_managers/homebrew_manager.rb +44 -0
- data/lib/autoproj/package_managers/manager.rb +45 -0
- data/lib/autoproj/package_managers/pacman_manager.rb +14 -0
- data/lib/autoproj/package_managers/pip_manager.rb +86 -0
- data/lib/autoproj/package_managers/pkg_manager.rb +14 -0
- data/lib/autoproj/package_managers/port_manager.rb +14 -0
- data/lib/autoproj/package_managers/shell_script_manager.rb +207 -0
- data/lib/autoproj/package_managers/unknown_os_manager.rb +42 -0
- data/lib/autoproj/package_managers/yum_manager.rb +56 -0
- data/lib/autoproj/package_managers/zypper_manager.rb +43 -0
- data/lib/autoproj/package_manifest.rb +1 -1
- data/lib/autoproj/test.rb +13 -14
- data/lib/autoproj/variable_expansion.rb +4 -2
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +5 -1
- data/manifest.xml +20 -0
- metadata +73 -87
- data/.gemtest +0 -0
- data/Manifest.txt +0 -105
- data/test/data/empty_manifest.xml +0 -2
- data/test/data/full_manifest.xml +0 -19
- data/test/data/invalid_manifest.xml +0 -3
- data/test/data/os_release.with_complex_version_field +0 -3
- data/test/data/os_release.with_duplicate_values +0 -3
- data/test/data/os_release.with_missing_optional_fields +0 -2
- data/test/data/os_release.with_quoted_and_unquoted_fields +0 -2
- data/test/data/test_manifest/autoproj/local_set/local.autobuild +0 -0
- data/test/data/test_manifest/autoproj/local_set/source.yml +0 -1
- data/test/data/test_manifest/autoproj/manifest +0 -7
- data/test/ops/test_configuration.rb +0 -20
- data/test/ops/test_snapshot.rb +0 -26
- data/test/package_managers/apt-dpkg-status +0 -41
- data/test/package_managers/apt-dpkg-status.installed-last +0 -27
- data/test/package_managers/apt-dpkg-status.noninstalled-last +0 -12
- data/test/package_managers/test_apt_dpkg_manager.rb +0 -41
- data/test/package_managers/test_gem.rb +0 -156
- data/test/package_managers/test_pip.rb +0 -42
- data/test/test_manifest.rb +0 -48
- data/test/test_os_dependencies.rb +0 -586
- data/test/test_package.rb +0 -30
- data/test/test_package_manifest.rb +0 -65
- data/test/test_vcs_definition.rb +0 -46
@@ -110,7 +110,7 @@ def each_os_dependency(modes = Array.new, &block)
|
|
110
110
|
return each_dependency(modes, &block)
|
111
111
|
end
|
112
112
|
|
113
|
-
def each_package_dependency(modes = Array.new)
|
113
|
+
def each_package_dependency(modes = Array.new, &block)
|
114
114
|
Autoproj.warn "PackageManifest#each_os_dependency called, fix your code"
|
115
115
|
return each_dependency(modes, &block)
|
116
116
|
end
|
data/lib/autoproj/test.rb
CHANGED
@@ -3,19 +3,21 @@
|
|
3
3
|
if ENV['TEST_ENABLE_COVERAGE'] == '1'
|
4
4
|
begin
|
5
5
|
require 'simplecov'
|
6
|
-
SimpleCov.start
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter "/test/"
|
8
|
+
end
|
7
9
|
rescue LoadError
|
8
|
-
require '
|
10
|
+
require 'autoproj'
|
9
11
|
Autoproj.warn "coverage is disabled because the 'simplecov' gem cannot be loaded"
|
10
12
|
rescue Exception => e
|
11
|
-
require '
|
13
|
+
require 'autoproj'
|
12
14
|
Autoproj.warn "coverage is disabled: #{e.message}"
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
18
|
+
require 'minitest/autorun'
|
16
19
|
require 'autoproj'
|
17
|
-
|
18
|
-
require 'flexmock/test_unit'
|
20
|
+
require 'flexmock/minitest'
|
19
21
|
require 'minitest/spec'
|
20
22
|
|
21
23
|
if ENV['TEST_ENABLE_PRY'] != '0'
|
@@ -38,13 +40,14 @@ module Autoproj
|
|
38
40
|
# end
|
39
41
|
#
|
40
42
|
module SelfTest
|
41
|
-
|
42
|
-
include FlexMock::ArgumentTypes
|
43
|
-
include FlexMock::MockContainer
|
44
|
-
end
|
43
|
+
attr_reader :ws
|
45
44
|
|
46
45
|
def setup
|
47
46
|
@tmpdir = Array.new
|
47
|
+
@ws = Workspace.new('/test/dir')
|
48
|
+
ws.config = Configuration.new
|
49
|
+
Autoproj.workspace = ws
|
50
|
+
|
48
51
|
super
|
49
52
|
end
|
50
53
|
|
@@ -53,14 +56,10 @@ def create_bootstrap
|
|
53
56
|
@tmpdir << dir
|
54
57
|
require 'autoproj/ops/main_config_switcher'
|
55
58
|
FileUtils.cp_r Ops::MainConfigSwitcher::MAIN_CONFIGURATION_TEMPLATE, File.join(dir, 'autoproj')
|
56
|
-
|
57
|
-
Autoproj.manifest = Manifest.load(File.join(dir, 'autoproj', 'manifest'))
|
59
|
+
Workspace.new(dir)
|
58
60
|
end
|
59
61
|
|
60
62
|
def teardown
|
61
|
-
if defined? FlexMock
|
62
|
-
flexmock_teardown
|
63
|
-
end
|
64
63
|
super
|
65
64
|
@tmpdir.each do |dir|
|
66
65
|
FileUtils.remove_entry_secure dir
|
@@ -53,7 +53,9 @@ def self.expand_environment(value)
|
|
53
53
|
#
|
54
54
|
# If the values listed in +definitions+ also contain configuration
|
55
55
|
# variables, they do not get expanded
|
56
|
-
def self.single_expansion(data, definitions)
|
56
|
+
def self.single_expansion(data, definitions, options = Hash.new)
|
57
|
+
options = Kernel.validate_options options, config: Autoproj.config
|
58
|
+
|
57
59
|
if !data.respond_to?(:to_str)
|
58
60
|
return data
|
59
61
|
end
|
@@ -71,7 +73,7 @@ def self.single_expansion(data, definitions)
|
|
71
73
|
end
|
72
74
|
|
73
75
|
if !(value = definitions[constant_name])
|
74
|
-
if !(value = config.get(constant_name))
|
76
|
+
if !(value = options[:config].get(constant_name))
|
75
77
|
if !block_given? || !(value = yield(constant_name))
|
76
78
|
raise ArgumentError, "cannot find a definition for $#{constant_name}"
|
77
79
|
end
|
data/lib/autoproj/version.rb
CHANGED
data/lib/autoproj/workspace.rb
CHANGED
@@ -4,7 +4,7 @@ module Autoproj
|
|
4
4
|
class Workspace < Ops::Loader
|
5
5
|
attr_reader :root_dir
|
6
6
|
|
7
|
-
|
7
|
+
attr_accessor :config
|
8
8
|
attr_reader :env
|
9
9
|
attr_reader :manifest
|
10
10
|
attr_reader :loader
|
@@ -170,6 +170,9 @@ def setup
|
|
170
170
|
Autobuild.prefix = prefix_dir
|
171
171
|
Autobuild.srcdir = root_dir
|
172
172
|
Autobuild.logdir = log_dir
|
173
|
+
if cache_dir = config.importer_cache_dir
|
174
|
+
Autobuild::Importer.default_cache_dirs = cache_dir
|
175
|
+
end
|
173
176
|
env.prepare(root_dir)
|
174
177
|
Autoproj::OSDependencies::PACKAGE_HANDLERS.each do |pkg_mng|
|
175
178
|
pkg_mng.initialize_environment(env, manifest, root_dir)
|
@@ -560,6 +563,7 @@ def self.workspace
|
|
560
563
|
|
561
564
|
def self.workspace=(ws)
|
562
565
|
@workspace = ws
|
566
|
+
self.root_dir = ws.root_dir
|
563
567
|
end
|
564
568
|
|
565
569
|
def self.env
|
data/manifest.xml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
<package>
|
2
|
+
<description brief="project-level build tool">
|
3
|
+
Autoproj allows to easily install and maintain software that is under
|
4
|
+
source code form (usually from a version control system). It has been
|
5
|
+
designed to support a package-oriented development process, where each
|
6
|
+
package can have its own version control repository (think "distributed
|
7
|
+
version control"). It also provides an easy integration of the local
|
8
|
+
operating system (Debian, Ubuntu, Fedora, maybe MacOSX at some point).
|
9
|
+
</description>
|
10
|
+
<maintainer>Sylvain Joyeux/sylvain.joyeux@m4x.org</maintainer>
|
11
|
+
<license>LGPLv3 or later</license>
|
12
|
+
<url>http://rock-robotics.org</url>
|
13
|
+
|
14
|
+
<depend package="autobuild" />
|
15
|
+
<depend package="thor" />
|
16
|
+
<depend package="utilrb" />
|
17
|
+
<depend package="concurrent-ruby" />
|
18
|
+
<test_depend package="flexmock" />
|
19
|
+
<test_depend package="minitest" />
|
20
|
+
</package>
|
metadata
CHANGED
@@ -1,160 +1,155 @@
|
|
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.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: autobuild
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.9'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
19
|
+
version: 1.10.0.a
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.9'
|
30
24
|
- - ">="
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
26
|
+
version: 1.10.0.a
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: utilrb
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.0'
|
40
31
|
- - ">="
|
41
32
|
- !ruby/object:Gem::Version
|
42
|
-
version: 2.0
|
33
|
+
version: '2.0'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.0'
|
50
38
|
- - ">="
|
51
39
|
- !ruby/object:Gem::Version
|
52
|
-
version: 2.0
|
40
|
+
version: '2.0'
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
42
|
+
name: thor
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
44
|
requirements:
|
57
45
|
- - "~>"
|
58
46
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
47
|
+
version: 0.19.0
|
60
48
|
- - ">="
|
61
49
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
50
|
+
version: 0.19.1
|
63
51
|
type: :runtime
|
64
52
|
prerelease: false
|
65
53
|
version_requirements: !ruby/object:Gem::Requirement
|
66
54
|
requirements:
|
67
55
|
- - "~>"
|
68
56
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
57
|
+
version: 0.19.0
|
70
58
|
- - ">="
|
71
59
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
60
|
+
version: 0.19.1
|
73
61
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
62
|
+
name: concurrent-ruby
|
75
63
|
requirement: !ruby/object:Gem::Requirement
|
76
64
|
requirements:
|
77
|
-
- - "~>"
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: 0.19.0
|
80
65
|
- - ">="
|
81
66
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
67
|
+
version: '0'
|
83
68
|
type: :runtime
|
84
69
|
prerelease: false
|
85
70
|
version_requirements: !ruby/object:Gem::Requirement
|
86
71
|
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.19.0
|
90
72
|
- - ">="
|
91
73
|
- !ruby/object:Gem::Version
|
92
|
-
version: 0
|
74
|
+
version: '0'
|
93
75
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
76
|
+
name: flexmock
|
95
77
|
requirement: !ruby/object:Gem::Requirement
|
96
78
|
requirements:
|
97
79
|
- - ">="
|
98
80
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
100
|
-
type: :
|
81
|
+
version: 2.0.0
|
82
|
+
type: :development
|
101
83
|
prerelease: false
|
102
84
|
version_requirements: !ruby/object:Gem::Requirement
|
103
85
|
requirements:
|
104
86
|
- - ">="
|
105
87
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
88
|
+
version: 2.0.0
|
107
89
|
- !ruby/object:Gem::Dependency
|
108
|
-
name:
|
90
|
+
name: minitest
|
109
91
|
requirement: !ruby/object:Gem::Requirement
|
110
92
|
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '5.0'
|
111
96
|
- - "~>"
|
112
97
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
98
|
+
version: '5.0'
|
114
99
|
type: :development
|
115
100
|
prerelease: false
|
116
101
|
version_requirements: !ruby/object:Gem::Requirement
|
117
102
|
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '5.0'
|
118
106
|
- - "~>"
|
119
107
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
108
|
+
version: '5.0'
|
121
109
|
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
110
|
+
name: fakefs
|
123
111
|
requirement: !ruby/object:Gem::Requirement
|
124
112
|
requirements:
|
125
|
-
- - "
|
113
|
+
- - ">="
|
126
114
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
115
|
+
version: '0'
|
128
116
|
type: :development
|
129
117
|
prerelease: false
|
130
118
|
version_requirements: !ruby/object:Gem::Requirement
|
131
119
|
requirements:
|
132
|
-
- - "
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: simplecov
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
133
135
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
136
|
+
version: '0'
|
135
137
|
description: autoproj is a manager for sets of software packages. It allows the user
|
136
138
|
to import and build packages from source, still using the underlying distribution's
|
137
139
|
native package manager for software that is available on it.
|
138
140
|
email: sylvain.joyeux@m4x.org
|
139
|
-
executables:
|
140
|
-
- alocate
|
141
|
-
- amake
|
142
|
-
- aup
|
143
|
-
- autoproj
|
144
|
-
- autoproj_bootstrap
|
145
|
-
- autoproj_bootstrap.in
|
141
|
+
executables: []
|
146
142
|
extensions: []
|
147
|
-
extra_rdoc_files:
|
148
|
-
- History.txt
|
149
|
-
- Manifest.txt
|
150
|
-
- README.md
|
151
|
-
- samples/autoproj/README.txt
|
143
|
+
extra_rdoc_files: []
|
152
144
|
files:
|
153
|
-
- ".
|
145
|
+
- ".gitattributes"
|
146
|
+
- ".gitignore"
|
147
|
+
- ".travis.yml"
|
148
|
+
- Gemfile
|
154
149
|
- History.txt
|
155
|
-
- Manifest.txt
|
156
150
|
- README.md
|
157
151
|
- Rakefile
|
152
|
+
- autoproj.gemspec
|
158
153
|
- bin/alocate
|
159
154
|
- bin/amake
|
160
155
|
- bin/aup
|
@@ -195,6 +190,7 @@ files:
|
|
195
190
|
- lib/autoproj/default.osdeps
|
196
191
|
- lib/autoproj/environment.rb
|
197
192
|
- lib/autoproj/exceptions.rb
|
193
|
+
- lib/autoproj/git_server_configuration.rb
|
198
194
|
- lib/autoproj/gitorious.rb
|
199
195
|
- lib/autoproj/installation_manifest.rb
|
200
196
|
- lib/autoproj/manifest.rb
|
@@ -210,6 +206,19 @@ files:
|
|
210
206
|
- lib/autoproj/options.rb
|
211
207
|
- lib/autoproj/osdeps.rb
|
212
208
|
- lib/autoproj/package_definition.rb
|
209
|
+
- lib/autoproj/package_managers/apt_dpkg_manager.rb
|
210
|
+
- lib/autoproj/package_managers/emerge_manager.rb
|
211
|
+
- lib/autoproj/package_managers/gem_manager.rb
|
212
|
+
- lib/autoproj/package_managers/homebrew_manager.rb
|
213
|
+
- lib/autoproj/package_managers/manager.rb
|
214
|
+
- lib/autoproj/package_managers/pacman_manager.rb
|
215
|
+
- lib/autoproj/package_managers/pip_manager.rb
|
216
|
+
- lib/autoproj/package_managers/pkg_manager.rb
|
217
|
+
- lib/autoproj/package_managers/port_manager.rb
|
218
|
+
- lib/autoproj/package_managers/shell_script_manager.rb
|
219
|
+
- lib/autoproj/package_managers/unknown_os_manager.rb
|
220
|
+
- lib/autoproj/package_managers/yum_manager.rb
|
221
|
+
- lib/autoproj/package_managers/zypper_manager.rb
|
213
222
|
- lib/autoproj/package_manifest.rb
|
214
223
|
- lib/autoproj/package_selection.rb
|
215
224
|
- lib/autoproj/package_set.rb
|
@@ -223,6 +232,7 @@ files:
|
|
223
232
|
- lib/autoproj/vcs_definition.rb
|
224
233
|
- lib/autoproj/version.rb
|
225
234
|
- lib/autoproj/workspace.rb
|
235
|
+
- manifest.xml
|
226
236
|
- samples/autoproj/README.txt
|
227
237
|
- samples/autoproj/init.rb
|
228
238
|
- samples/autoproj/manifest
|
@@ -233,44 +243,19 @@ files:
|
|
233
243
|
- shell/autoproj_bash
|
234
244
|
- shell/autoproj_sh
|
235
245
|
- shell/autoproj_zsh
|
236
|
-
-
|
237
|
-
- test/data/full_manifest.xml
|
238
|
-
- test/data/invalid_manifest.xml
|
239
|
-
- test/data/os_release.with_complex_version_field
|
240
|
-
- test/data/os_release.with_duplicate_values
|
241
|
-
- test/data/os_release.with_missing_optional_fields
|
242
|
-
- test/data/os_release.with_quoted_and_unquoted_fields
|
243
|
-
- test/data/test_manifest/autoproj/local_set/local.autobuild
|
244
|
-
- test/data/test_manifest/autoproj/local_set/source.yml
|
245
|
-
- test/data/test_manifest/autoproj/manifest
|
246
|
-
- test/ops/test_configuration.rb
|
247
|
-
- test/ops/test_snapshot.rb
|
248
|
-
- test/package_managers/apt-dpkg-status
|
249
|
-
- test/package_managers/apt-dpkg-status.installed-last
|
250
|
-
- test/package_managers/apt-dpkg-status.noninstalled-last
|
251
|
-
- test/package_managers/test_apt_dpkg_manager.rb
|
252
|
-
- test/package_managers/test_gem.rb
|
253
|
-
- test/package_managers/test_pip.rb
|
254
|
-
- test/test_manifest.rb
|
255
|
-
- test/test_os_dependencies.rb
|
256
|
-
- test/test_package.rb
|
257
|
-
- test/test_package_manifest.rb
|
258
|
-
- test/test_vcs_definition.rb
|
259
|
-
homepage: http://rock-robotics.org/documentation/autoproj
|
246
|
+
homepage: http://rock-robotics.org
|
260
247
|
licenses:
|
261
248
|
- BSD
|
262
249
|
metadata: {}
|
263
250
|
post_install_message:
|
264
|
-
rdoc_options:
|
265
|
-
- "--main"
|
266
|
-
- README.md
|
251
|
+
rdoc_options: []
|
267
252
|
require_paths:
|
268
253
|
- lib
|
269
254
|
required_ruby_version: !ruby/object:Gem::Requirement
|
270
255
|
requirements:
|
271
256
|
- - ">="
|
272
257
|
- !ruby/object:Gem::Version
|
273
|
-
version:
|
258
|
+
version: '0'
|
274
259
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
260
|
requirements:
|
276
261
|
- - ">"
|
@@ -278,8 +263,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
278
263
|
version: 1.3.1
|
279
264
|
requirements: []
|
280
265
|
rubyforge_project:
|
281
|
-
rubygems_version: 2.2.
|
266
|
+
rubygems_version: 2.2.3
|
282
267
|
signing_key:
|
283
268
|
specification_version: 4
|
284
269
|
summary: Easy installation and management of sets of software packages
|
285
270
|
test_files: []
|
271
|
+
has_rdoc:
|