autoproj 1.5.6 → 1.5.7
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/bin/autoproj +0 -1
- data/doc/guide/src/autoproj_bootstrap +1 -1
- data/lib/autoproj/autobuild.rb +0 -1
- data/lib/autoproj/cmdline.rb +15 -7
- data/lib/autoproj/manifest.rb +66 -44
- data/lib/autoproj/osdeps.rb +1 -0
- data/lib/autoproj/version.rb +1 -1
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
= Version 1.5.7
|
2
|
+
* allow using options and constants in the manifest as well
|
3
|
+
This is so that we can use variables in the VCS definition for package sets.
|
4
|
+
* display a status message before we access the RubyGems server. Ruby may block
|
5
|
+
there in some cases, and it therefore gives a clue at what is actually
|
6
|
+
failing.
|
7
|
+
* fix autoproj status with remote sources: display the source name instead of
|
8
|
+
the URL
|
9
|
+
* fix symlink in autoproj/remotes after a checkout. The URL was used instead of
|
10
|
+
the source name. Further updates were fixing it.
|
11
|
+
|
1
12
|
= Version 1.5.6
|
2
13
|
* quickfix stupid bug in 1.5.5
|
3
14
|
|
data/bin/autoproj
CHANGED
@@ -278,7 +278,7 @@ module Autoproj
|
|
278
278
|
|
279
279
|
|
280
280
|
def generate_os_script(dependencies)
|
281
|
-
os_name, os_version = operating_system
|
281
|
+
os_name, os_version = OSDependencies.operating_system
|
282
282
|
os_packages, shell_snippets = resolve_os_dependencies(dependencies)
|
283
283
|
|
284
284
|
"#! /bin/bash\n" +
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -328,7 +328,6 @@ def not_on(*architectures)
|
|
328
328
|
|
329
329
|
os = OSDependencies.operating_system
|
330
330
|
matching_archs = architectures.find_all { |arch| arch[0] == os[0] }
|
331
|
-
STDERR.puts matching_archs.inspect
|
332
331
|
if matching_archs.empty?
|
333
332
|
return yield
|
334
333
|
elsif matching_archs.all? { |arch| arch[1] && !os[1].include?(arch[1].downcase) }
|
data/lib/autoproj/cmdline.rb
CHANGED
@@ -37,6 +37,12 @@ module Autoproj
|
|
37
37
|
Autoproj.env_add 'PATH', bindir
|
38
38
|
end
|
39
39
|
|
40
|
+
# We load the local init.rb first so that the manifest loading
|
41
|
+
# process can use options defined there for the autoproj version
|
42
|
+
# control information (for instance)
|
43
|
+
local_source = LocalSource.new
|
44
|
+
Autoproj.load_if_present(local_source, local_source.local_dir, "init.rb")
|
45
|
+
|
40
46
|
manifest_path = File.join(Autoproj.config_dir, 'manifest')
|
41
47
|
Autoproj.manifest = Manifest.load(manifest_path)
|
42
48
|
|
@@ -604,6 +610,12 @@ where 'mode' is one of:
|
|
604
610
|
packages.each do |pkg|
|
605
611
|
lines = []
|
606
612
|
|
613
|
+
pkg_name =
|
614
|
+
if pkg.respond_to?(:text_name)
|
615
|
+
pkg.text_name
|
616
|
+
else pkg.autoproj_name
|
617
|
+
end
|
618
|
+
|
607
619
|
if !pkg.importer.respond_to?(:status)
|
608
620
|
lines << color(" the #{pkg.importer.class.name.gsub(/.*::/, '')} importer does not support status display", :bold, :red)
|
609
621
|
elsif !File.directory?(pkg.srcdir)
|
@@ -618,9 +630,9 @@ where 'mode' is one of:
|
|
618
630
|
when Autobuild::Importer::Status::UP_TO_DATE
|
619
631
|
if !status.uncommitted_code
|
620
632
|
if last_was_in_sync
|
621
|
-
STDERR.print ", #{
|
633
|
+
STDERR.print ", #{pkg_name}"
|
622
634
|
else
|
623
|
-
STDERR.print
|
635
|
+
STDERR.print pkg_name
|
624
636
|
end
|
625
637
|
last_was_in_sync = true
|
626
638
|
next
|
@@ -655,11 +667,7 @@ where 'mode' is one of:
|
|
655
667
|
end
|
656
668
|
|
657
669
|
last_was_in_sync = false
|
658
|
-
|
659
|
-
STDERR.print "#{pkg.text_name}:"
|
660
|
-
else
|
661
|
-
STDERR.print "#{pkg.autoproj_name}:"
|
662
|
-
end
|
670
|
+
STDERR.print "#{pkg_name}:"
|
663
671
|
|
664
672
|
if lines.size == 1
|
665
673
|
STDERR.puts lines.first
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -166,13 +166,59 @@ module Autoproj
|
|
166
166
|
if !data.respond_to?(:to_str)
|
167
167
|
return data
|
168
168
|
end
|
169
|
-
|
170
|
-
|
171
|
-
|
169
|
+
definitions = { 'HOME' => ENV['HOME'] }.merge(definitions)
|
170
|
+
|
171
|
+
data = data.gsub /\$(\w+)/ do |constant_name|
|
172
|
+
constant_name = constant_name[1..-1]
|
173
|
+
if !(value = definitions[constant_name])
|
174
|
+
if !(value = Autoproj.user_config(constant_name))
|
175
|
+
if !block_given? || !(value = yield(constant_name))
|
176
|
+
raise ArgumentError, "cannot find a definition for $#{constant_name}"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
value
|
172
181
|
end
|
173
182
|
data
|
174
183
|
end
|
175
184
|
|
185
|
+
def self.expand(value, definitions = Hash.new)
|
186
|
+
if value.respond_to?(:to_hash)
|
187
|
+
value.dup.each do |name, definition|
|
188
|
+
value[name] = expand(definition, definitions)
|
189
|
+
end
|
190
|
+
value
|
191
|
+
else
|
192
|
+
value = single_expansion(value, definitions)
|
193
|
+
if contains_expansion?(value)
|
194
|
+
raise ConfigError, "some expansions are not defined in #{value.inspect}"
|
195
|
+
end
|
196
|
+
value
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# True if the given string contains expansions
|
201
|
+
def self.contains_expansion?(string); string =~ /\$/ end
|
202
|
+
|
203
|
+
def self.resolve_one_constant(name, value, result, definitions)
|
204
|
+
result[name] = single_expansion(value, result) do |missing_name|
|
205
|
+
result[missing_name] = resolve_one_constant(missing_name, definitions.delete(missing_name), definitions)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def self.resolve_constant_definitions(constants)
|
210
|
+
constants = constants.dup
|
211
|
+
constants['HOME'] = ENV['HOME']
|
212
|
+
|
213
|
+
result = Hash.new
|
214
|
+
while !constants.empty?
|
215
|
+
name = constants.keys.first
|
216
|
+
value = constants.delete(name)
|
217
|
+
resolve_one_constant(name, value, result, constants)
|
218
|
+
end
|
219
|
+
result
|
220
|
+
end
|
221
|
+
|
176
222
|
# A source is a version control repository which contains general source
|
177
223
|
# information with package version control information (source.yml file),
|
178
224
|
# package definitions (.autobuild files), and finally definition of
|
@@ -314,43 +360,21 @@ module Autoproj
|
|
314
360
|
@source_definition = raw_description_file
|
315
361
|
load_name
|
316
362
|
|
363
|
+
|
317
364
|
# Compute the definition of constants
|
318
365
|
begin
|
319
366
|
constants = source_definition['constants'] || Hash.new
|
320
|
-
|
321
|
-
|
322
|
-
redo_expansion = true
|
323
|
-
@constants_definitions = constants
|
324
|
-
while redo_expansion
|
325
|
-
redo_expansion = false
|
326
|
-
constants.dup.each do |name, url|
|
327
|
-
# Extract all expansions in the url
|
328
|
-
if url =~ /\$(\w+)/
|
329
|
-
expansion_name = $1
|
330
|
-
|
331
|
-
if constants[expansion_name]
|
332
|
-
constants[name] = single_expansion(url)
|
333
|
-
else
|
334
|
-
begin constants[name] = single_expansion(url,
|
335
|
-
expansion_name => Autoproj.user_config(expansion_name))
|
336
|
-
rescue ConfigError => e
|
337
|
-
raise ConfigError, "constant '#{expansion_name}', used in the definition of '#{name}' is defined nowhere"
|
338
|
-
end
|
339
|
-
end
|
340
|
-
redo_expansion = true
|
341
|
-
end
|
342
|
-
end
|
343
|
-
end
|
367
|
+
@constants_definitions = Autoproj.resolve_constant_definitions(constants)
|
344
368
|
|
345
369
|
rescue ConfigError => e
|
346
370
|
raise ConfigError, "#{File.join(local_dir, "source.yml")}: #{e.message}", e.backtrace
|
347
371
|
end
|
348
372
|
end
|
349
373
|
|
350
|
-
# True if the given string contains expansions
|
351
|
-
def contains_expansion?(string); string =~ /\$/ end
|
352
|
-
|
353
374
|
def single_expansion(data, additional_expansions = Hash.new)
|
375
|
+
if !source_definition
|
376
|
+
load_description_file
|
377
|
+
end
|
354
378
|
Autoproj.single_expansion(data, additional_expansions.merge(constants_definitions))
|
355
379
|
end
|
356
380
|
|
@@ -361,19 +385,7 @@ module Autoproj
|
|
361
385
|
if !source_definition
|
362
386
|
load_description_file
|
363
387
|
end
|
364
|
-
|
365
|
-
if data.respond_to?(:to_hash)
|
366
|
-
data.dup.each do |name, value|
|
367
|
-
data[name] = expand(value, additional_expansions)
|
368
|
-
end
|
369
|
-
else
|
370
|
-
data = single_expansion(data, additional_expansions)
|
371
|
-
if contains_expansion?(data)
|
372
|
-
raise ConfigError, "some expansions are not defined in #{data.inspect}"
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
data
|
388
|
+
Autoproj.expand(data, additional_expansions.merge(constants_definitions))
|
377
389
|
end
|
378
390
|
|
379
391
|
# Returns the default importer definition for this package set, as a
|
@@ -610,16 +622,24 @@ module Autoproj
|
|
610
622
|
!!data['auto_update']
|
611
623
|
end
|
612
624
|
|
625
|
+
attr_reader :constant_definitions
|
626
|
+
|
613
627
|
def initialize(file, data)
|
614
628
|
@file = file
|
615
629
|
@data = data
|
616
630
|
@packages = Hash.new
|
617
631
|
@package_manifests = Hash.new
|
618
632
|
@automatic_exclusions = Hash.new
|
633
|
+
@constants_definitions = Hash.new
|
619
634
|
|
620
635
|
if Autoproj.has_config_key?('manifest_source')
|
621
636
|
@vcs = Autoproj.normalize_vcs_definition(Autoproj.user_config('manifest_source'))
|
622
637
|
end
|
638
|
+
if data['constants']
|
639
|
+
@constant_definitions = Autoproj.resolve_constant_definitions(data['constants'])
|
640
|
+
else
|
641
|
+
@constant_definitions = Hash.new
|
642
|
+
end
|
623
643
|
end
|
624
644
|
|
625
645
|
# True if the given package should not be built, with the packages that
|
@@ -741,6 +761,7 @@ module Autoproj
|
|
741
761
|
# either vcs_type:url or just url. In the latter case, we expect
|
742
762
|
# 'url' to be a path to a local directory
|
743
763
|
vcs_def = begin
|
764
|
+
spec = Autoproj.expand(spec, constant_definitions)
|
744
765
|
Autoproj.normalize_vcs_definition(spec)
|
745
766
|
rescue ConfigError => e
|
746
767
|
raise ConfigError, "in #{file}: #{e.message}"
|
@@ -901,8 +922,9 @@ module Autoproj
|
|
901
922
|
FileUtils.rm_rf remotes_symlinks_dir
|
902
923
|
FileUtils.mkdir remotes_symlinks_dir
|
903
924
|
# Create symbolic links from .remotes/weird_url to
|
904
|
-
# autoproj/remotes/name
|
925
|
+
# autoproj/remotes/name. Explicitely load the source name first
|
905
926
|
each_remote_source(false) do |source|
|
927
|
+
source.load_name
|
906
928
|
FileUtils.ln_sf source.raw_local_dir, File.join(remotes_symlinks_dir, source.name)
|
907
929
|
end
|
908
930
|
end
|
data/lib/autoproj/osdeps.rb
CHANGED
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 1.5.
|
8
|
+
- 7
|
9
|
+
version: 1.5.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sylvain Joyeux
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-07-08 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|