autoproj 1.3.3 → 1.3.4
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.
- data/History.txt +10 -0
- data/bin/autoproj +18 -7
- data/doc/guide/src/autoproj_bootstrap +30 -17
- data/lib/autoproj/manifest.rb +13 -4
- data/lib/autoproj/osdeps.rb +11 -1
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
= Version 1.3.4
|
2
|
+
* Improve the RubyGems support
|
3
|
+
- a given osdeps name can refer to a mixture of RubyGems and OS packages
|
4
|
+
- the osdeps name can be different from the RubyGems package name
|
5
|
+
* Fix: Autobuild::Package#depends_on_os_package(name) was not taken into
|
6
|
+
account
|
7
|
+
* Fix: the autoproj/ directory was deleted if "autoproj switch-config" fails.
|
8
|
+
Fix that for the common case. It can still happen if the VCS is not
|
9
|
+
accessible.
|
10
|
+
|
1
11
|
= Version 1.3.3
|
2
12
|
* Fix: some configuration options were not properly saved
|
3
13
|
* Fix: env.sh was messed up by partial builds (builds where a directory and/or
|
data/bin/autoproj
CHANGED
@@ -228,13 +228,18 @@ def switch_config(*args)
|
|
228
228
|
|
229
229
|
if vcs && (vcs.type == args[0] && vcs.url == args[1])
|
230
230
|
# Don't need to do much: simply change the options and save the config
|
231
|
-
# file, the VCS handler will take care of
|
231
|
+
# file, the VCS handler will take care of the actual switching
|
232
232
|
else
|
233
233
|
# We will have to delete the current autoproj directory. Ask the user.
|
234
|
-
opt = Autoproj::BuildOption.new("delete current config", "boolean",
|
234
|
+
opt = Autoproj::BuildOption.new("delete current config", "boolean",
|
235
|
+
Hash[:default => "false",
|
236
|
+
:doc => "delete the current configuration ? (required to switch)"], nil)
|
237
|
+
|
235
238
|
return if !opt.ask(nil)
|
236
|
-
|
237
|
-
|
239
|
+
|
240
|
+
Dir.chdir(Autoproj.root_dir) do
|
241
|
+
do_switch_config(true, *args)
|
242
|
+
end
|
238
243
|
end
|
239
244
|
|
240
245
|
# And now save the options: note that we keep the current option set even
|
@@ -254,7 +259,7 @@ def switch_config(*args)
|
|
254
259
|
Autoproj.save_config
|
255
260
|
end
|
256
261
|
|
257
|
-
def do_switch_config(*args)
|
262
|
+
def do_switch_config(delete_current, *args)
|
258
263
|
vcs_def = Hash.new
|
259
264
|
vcs_def[:type] = args.shift
|
260
265
|
vcs_def[:url] = args.shift
|
@@ -268,7 +273,13 @@ def do_switch_config(*args)
|
|
268
273
|
# Install the OS dependencies required for this VCS
|
269
274
|
osdeps = Autoproj::OSDependencies.load_default
|
270
275
|
osdeps.install([vcs.type])
|
271
|
-
|
276
|
+
|
277
|
+
# Now check out the actual configuration
|
278
|
+
config_dir = File.join(Dir.pwd, "autoproj")
|
279
|
+
if delete_current
|
280
|
+
FileUtils.rm_rf config_dir
|
281
|
+
end
|
282
|
+
Autoproj::Manifest.update_source(vcs, "autoproj main configuration", 'autoproj_config', config_dir)
|
272
283
|
|
273
284
|
# Now write it in the config file
|
274
285
|
File.open(File.join(Autoproj.config_dir, "config.yml"), "a") do |io|
|
@@ -318,7 +329,7 @@ def do_bootstrap(*args)
|
|
318
329
|
end
|
319
330
|
|
320
331
|
elsif args.size >= 2 # is a VCS definition for the manifest itself ...
|
321
|
-
do_switch_config(*args)
|
332
|
+
do_switch_config(false, *args)
|
322
333
|
end
|
323
334
|
|
324
335
|
# Finally, generate an env.sh script
|
@@ -59,12 +59,14 @@ module Autoproj
|
|
59
59
|
end
|
60
60
|
AUTOPROJ_OSDEPS = File.join(File.expand_path(File.dirname(__FILE__)), 'default.osdeps')
|
61
61
|
def self.load_default
|
62
|
-
OSDependencies.load(AUTOPROJ_OSDEPS)
|
62
|
+
@default_osdeps ||= OSDependencies.load(AUTOPROJ_OSDEPS)
|
63
63
|
end
|
64
64
|
|
65
65
|
attr_reader :definitions
|
66
|
+
attr_reader :gem_fetcher
|
66
67
|
def initialize(defs = Hash.new)
|
67
68
|
@definitions = defs.to_hash
|
69
|
+
@gem_fetcher = Gem::SpecFetcher.fetcher
|
68
70
|
end
|
69
71
|
|
70
72
|
def merge(info)
|
@@ -203,6 +205,8 @@ module Autoproj
|
|
203
205
|
raise ConfigError, msg
|
204
206
|
end
|
205
207
|
|
208
|
+
pkg_def = pkg_def.dup
|
209
|
+
|
206
210
|
if pkg_def.respond_to?(:to_str)
|
207
211
|
case(pkg_def.to_str)
|
208
212
|
when "ignore" then
|
@@ -212,7 +216,15 @@ module Autoproj
|
|
212
216
|
raise ConfigError, "unknown OS-independent package management type #{pkg_def} for #{name}"
|
213
217
|
end
|
214
218
|
else
|
215
|
-
|
219
|
+
pkg_def.delete_if do |distrib_name, defs|
|
220
|
+
if distrib_name == "gem"
|
221
|
+
gems.concat([*defs])
|
222
|
+
true
|
223
|
+
end
|
224
|
+
end
|
225
|
+
if !pkg_def.empty?
|
226
|
+
osdeps << name
|
227
|
+
end
|
216
228
|
end
|
217
229
|
end
|
218
230
|
return osdeps, gems
|
@@ -249,21 +261,22 @@ module Autoproj
|
|
249
261
|
did_something ||= true
|
250
262
|
end
|
251
263
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
264
|
+
if !gems.empty?
|
265
|
+
# Don't install gems that are already there ...
|
266
|
+
gems.delete_if do |name|
|
267
|
+
version_requirements = Gem::Requirement.default
|
268
|
+
installed = Gem.source_index.find_name(name, version_requirements)
|
269
|
+
if !installed.empty? && Autobuild.do_update
|
270
|
+
# Look if we can update the package ...
|
271
|
+
dep = Gem::Dependency.new(name, version_requirements)
|
272
|
+
available = @gem_fetcher.find_matching(dep)
|
273
|
+
installed_version = installed.map(&:version).max
|
274
|
+
available_version = available.map { |(name, v), source| v }.max
|
275
|
+
needs_update = (available_version > installed_version)
|
276
|
+
!needs_update
|
277
|
+
else
|
278
|
+
!installed.empty?
|
279
|
+
end
|
267
280
|
end
|
268
281
|
end
|
269
282
|
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -145,6 +145,10 @@ module Autoproj
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def self.single_expansion(data, definitions)
|
148
|
+
if !data.respond_to?(:to_str)
|
149
|
+
return data
|
150
|
+
end
|
151
|
+
|
148
152
|
definitions.each do |name, expanded|
|
149
153
|
data = data.gsub /\$#{Regexp.quote(name)}\b/, expanded
|
150
154
|
end
|
@@ -922,16 +926,21 @@ module Autoproj
|
|
922
926
|
end
|
923
927
|
|
924
928
|
def install_os_dependencies(packages)
|
925
|
-
|
926
929
|
required_os_packages = Set.new
|
927
930
|
package_os_deps = Hash.new { |h, k| h[k] = Array.new }
|
928
931
|
packages.each do |pkg_name|
|
929
932
|
if manifest = package_manifests[pkg_name]
|
930
|
-
|
931
|
-
|
933
|
+
manifest.each_os_dependency.each do |osdep_name|
|
934
|
+
package_os_deps[osdep_name] << pkg_name
|
935
|
+
required_os_packages << osdep_name
|
936
|
+
end
|
937
|
+
end
|
938
|
+
|
939
|
+
if pkg = Autobuild::Package[pkg_name]
|
940
|
+
pkg.os_packages.each do |osdep_name|
|
932
941
|
package_os_deps[osdep_name] << pkg_name
|
942
|
+
required_os_packages << osdep_name
|
933
943
|
end
|
934
|
-
required_os_packages |= pkg_osdeps
|
935
944
|
end
|
936
945
|
end
|
937
946
|
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -159,6 +159,8 @@ module Autoproj
|
|
159
159
|
raise ConfigError, msg
|
160
160
|
end
|
161
161
|
|
162
|
+
pkg_def = pkg_def.dup
|
163
|
+
|
162
164
|
if pkg_def.respond_to?(:to_str)
|
163
165
|
case(pkg_def.to_str)
|
164
166
|
when "ignore" then
|
@@ -168,7 +170,15 @@ module Autoproj
|
|
168
170
|
raise ConfigError, "unknown OS-independent package management type #{pkg_def} for #{name}"
|
169
171
|
end
|
170
172
|
else
|
171
|
-
|
173
|
+
pkg_def.delete_if do |distrib_name, defs|
|
174
|
+
if distrib_name == "gem"
|
175
|
+
gems.concat([*defs])
|
176
|
+
true
|
177
|
+
end
|
178
|
+
end
|
179
|
+
if !pkg_def.empty?
|
180
|
+
osdeps << name
|
181
|
+
end
|
172
182
|
end
|
173
183
|
end
|
174
184
|
return osdeps, gems
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-14 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|