autoproj 1.4.1 → 1.4.2
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 +25 -2
- data/doc/guide/src/package_sets/importers.page +7 -8
- data/lib/autoproj/autobuild.rb +7 -7
- data/lib/autoproj/manifest.rb +24 -18
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
= Version 1.4.2
|
2
|
+
* change the order in which package sets are considered for version control
|
3
|
+
information in the manifest. The package set list needs now to be defined
|
4
|
+
from the most generic to the least generic
|
5
|
+
* define a shell script called 'ruby' in prefix/bin to call the right ruby
|
6
|
+
interpreter. This makes the "#! /usr/bin/env ruby" she-bang line working
|
7
|
+
on interpreters that are not called 'ruby'.
|
8
|
+
* the package directories (prefix, srcdir, builddir, ...) can be used by other
|
9
|
+
packages for their configuration now.
|
10
|
+
|
1
11
|
= Version 1.4.1
|
2
12
|
* add the envsh build mode: only update env.sh
|
3
13
|
* rebuild <package> and force-build <package> only apply by default on the
|
data/bin/autoproj
CHANGED
@@ -469,6 +469,7 @@ report(debug) do
|
|
469
469
|
raise ConfigError, "RubyGems is already loaded with a different GEM_HOME, make sure you are loading the right env.sh script !"
|
470
470
|
end
|
471
471
|
end
|
472
|
+
|
472
473
|
# Set up some important autobuild parameters
|
473
474
|
Autoproj.env_inherit 'PATH', 'PKG_CONFIG_PATH', 'RUBYLIB', 'LD_LIBRARY_PATH'
|
474
475
|
Autoproj.env_set 'GEM_HOME', Autoproj.gem_home
|
@@ -481,6 +482,20 @@ report(debug) do
|
|
481
482
|
Autobuild::Reporting << Autobuild::MailReporter.new(mail_config)
|
482
483
|
end
|
483
484
|
|
485
|
+
|
486
|
+
ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
487
|
+
if ruby != 'ruby'
|
488
|
+
bindir = File.join(Autoproj.build_dir, 'bin')
|
489
|
+
FileUtils.mkdir_p bindir
|
490
|
+
File.open(File.join(bindir, 'ruby'), 'w') do |io|
|
491
|
+
io.puts "#! /bin/sh"
|
492
|
+
io.puts "exec #{ruby} \"$@\""
|
493
|
+
end
|
494
|
+
FileUtils.chmod 0755, File.join(bindir, 'ruby')
|
495
|
+
|
496
|
+
Autoproj.env_add 'PATH', bindir
|
497
|
+
end
|
498
|
+
|
484
499
|
# First things first, see if we need to update ourselves
|
485
500
|
osdeps = Autoproj::OSDependencies.load_default
|
486
501
|
if osdeps.install(%w{autobuild autoproj})
|
@@ -556,8 +571,8 @@ report(debug) do
|
|
556
571
|
if Autoproj.verbose
|
557
572
|
# List defined packages, and in which autobuild files they are defined
|
558
573
|
STDERR.puts "Available packages:"
|
559
|
-
manifest.packages.each_value do |
|
560
|
-
STDERR.puts " #{
|
574
|
+
manifest.packages.each_value do |pkg|
|
575
|
+
STDERR.puts " #{pkg.autobuild.name}: #{pkg.file} from #{pkg.package_set.name}"
|
561
576
|
end
|
562
577
|
end
|
563
578
|
|
@@ -656,6 +671,14 @@ report(debug) do
|
|
656
671
|
seen |= packages
|
657
672
|
end
|
658
673
|
|
674
|
+
# Now call the blocks that the user defined in the autobuild files. We do it
|
675
|
+
# now so that the various package directories are properly setup
|
676
|
+
manifest.packages.each_value do |pkg|
|
677
|
+
if pkg.user_block
|
678
|
+
pkg.user_block[pkg.autobuild]
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
659
682
|
if only_do_status
|
660
683
|
STDERR.puts
|
661
684
|
all_packages = Set.new
|
@@ -18,9 +18,8 @@ version_control:
|
|
18
18
|
Autoproj follows the following rules to find the importer definition for a given
|
19
19
|
package:
|
20
20
|
|
21
|
-
- it looks *in order* in the package sets listed in the manifest file,
|
22
|
-
take the definition from the *first* package set that has
|
23
|
-
the package.
|
21
|
+
- it looks *in reverse order* in the package sets listed in the manifest file,
|
22
|
+
and will take the definition from the *first* package set that has one.
|
24
23
|
- in the source.yml file, it will match the package's name with the
|
25
24
|
package\_name fields. It will consider every matching block (i.e. every
|
26
25
|
package\_name that matches), overriding earlier options by later ones.
|
@@ -29,19 +28,19 @@ As an example, let's consider the following manifest:
|
|
29
28
|
|
30
29
|
{coderay:: ruby}
|
31
30
|
package_sets:
|
32
|
-
- rubim.drivers
|
33
|
-
- rubim.orocos
|
34
31
|
- rubim.base
|
32
|
+
- rubim.orocos
|
33
|
+
- rubim.drivers
|
35
34
|
{coderay}
|
36
35
|
|
37
36
|
Now, let's assume that the rubim.orocos package set has a source.yml file with:
|
38
37
|
|
39
38
|
{coderay:: ruby}
|
40
39
|
version_control:
|
41
|
-
orocos/:
|
40
|
+
- orocos/:
|
42
41
|
type: git
|
43
42
|
url: git://github.com/$PACKAGE.git
|
44
|
-
orocos/orocos.rb:
|
43
|
+
- orocos/orocos.rb:
|
45
44
|
branch: roby
|
46
45
|
{coderay}
|
47
46
|
|
@@ -49,7 +48,7 @@ Finally, the rubim.drivers package set has:
|
|
49
48
|
|
50
49
|
{coderay:: ruby}
|
51
50
|
version_control:
|
52
|
-
orocos/logger:
|
51
|
+
- orocos/logger:
|
53
52
|
type: git
|
54
53
|
url: git://github.com/$PACKAGE.git
|
55
54
|
branch: perf
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -46,8 +46,9 @@ module Autoproj
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.define(package_type, spec, &block)
|
49
|
-
package = Autobuild.send(package_type, spec
|
50
|
-
Autoproj.manifest.register_package package, *current_file
|
49
|
+
package = Autobuild.send(package_type, spec)
|
50
|
+
Autoproj.manifest.register_package package, block, *current_file
|
51
|
+
package
|
51
52
|
end
|
52
53
|
|
53
54
|
@loaded_autobuild_files = Set.new
|
@@ -90,7 +91,7 @@ def ruby_doc(pkg, target = 'doc')
|
|
90
91
|
end
|
91
92
|
|
92
93
|
# Common setup for packages
|
93
|
-
def package_common(package_type, spec) # :nodoc:
|
94
|
+
def package_common(package_type, spec, &block) # :nodoc:
|
94
95
|
package_name = Autoproj.package_name_from_options(spec)
|
95
96
|
|
96
97
|
begin
|
@@ -105,10 +106,9 @@ def package_common(package_type, spec) # :nodoc:
|
|
105
106
|
return Autoproj.define(:dummy, spec)
|
106
107
|
end
|
107
108
|
|
108
|
-
Autoproj.define(package_type, spec)
|
109
|
-
|
110
|
-
|
111
|
-
end
|
109
|
+
pkg = Autoproj.define(package_type, spec, &block)
|
110
|
+
pkg.srcdir = pkg.name
|
111
|
+
pkg
|
112
112
|
end
|
113
113
|
|
114
114
|
def import_package(options, &block)
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -420,9 +420,9 @@ module Autoproj
|
|
420
420
|
return enum_for(:each_package)
|
421
421
|
end
|
422
422
|
|
423
|
-
Autoproj.manifest.packages.
|
424
|
-
if
|
425
|
-
yield(pkg)
|
423
|
+
Autoproj.manifest.packages.each_value do |pkg|
|
424
|
+
if pkg.package_set.name == name
|
425
|
+
yield(pkg.autobuild)
|
426
426
|
end
|
427
427
|
end
|
428
428
|
end
|
@@ -455,6 +455,8 @@ module Autoproj
|
|
455
455
|
end
|
456
456
|
end
|
457
457
|
|
458
|
+
PackageDefinition = Struct.new :autobuild, :user_block, :package_set, :file
|
459
|
+
|
458
460
|
class Manifest
|
459
461
|
FakePackage = Struct.new :text_name, :name, :srcdir, :importer
|
460
462
|
class FakePackage
|
@@ -665,15 +667,15 @@ module Autoproj
|
|
665
667
|
end
|
666
668
|
|
667
669
|
# Register a new package
|
668
|
-
def register_package(package, source, file)
|
669
|
-
@packages[package.name] =
|
670
|
+
def register_package(package, block, source, file)
|
671
|
+
@packages[package.name] = PackageDefinition.new(package, block, source, file)
|
670
672
|
end
|
671
673
|
|
672
674
|
def definition_source(package_name)
|
673
|
-
@packages[package_name]
|
675
|
+
@packages[package_name].package_set
|
674
676
|
end
|
675
677
|
def definition_file(package_name)
|
676
|
-
@packages[package_name]
|
678
|
+
@packages[package_name].file
|
677
679
|
end
|
678
680
|
|
679
681
|
# Lists all defined packages and where they have been defined
|
@@ -681,7 +683,7 @@ module Autoproj
|
|
681
683
|
if !block_given?
|
682
684
|
return enum_for(:each_package)
|
683
685
|
end
|
684
|
-
packages.each_value { |
|
686
|
+
packages.each_value { |pkg| yield(pkg.autobuild) }
|
685
687
|
end
|
686
688
|
|
687
689
|
# The VCS object for the main configuration itself
|
@@ -736,10 +738,12 @@ module Autoproj
|
|
736
738
|
|
737
739
|
def importer_definition_for(package_name, package_source = nil)
|
738
740
|
if !package_source
|
739
|
-
|
741
|
+
package_source = packages.values.
|
742
|
+
find { |pkg| pkg.autobuild.name == package_name }.
|
743
|
+
package_set
|
740
744
|
end
|
741
745
|
|
742
|
-
each_source.each do |source|
|
746
|
+
each_source.to_a.reverse.each do |source|
|
743
747
|
vcs = source.importer_definition_for(package_name)
|
744
748
|
if vcs
|
745
749
|
return vcs
|
@@ -767,14 +771,14 @@ module Autoproj
|
|
767
771
|
# * S0 can have a VCS line for P, which would override the one defined
|
768
772
|
# by S1
|
769
773
|
def load_importers
|
770
|
-
packages.each_value do |
|
771
|
-
vcs = importer_definition_for(
|
774
|
+
packages.each_value do |pkg|
|
775
|
+
vcs = importer_definition_for(pkg.autobuild.name, pkg.package_set)
|
772
776
|
|
773
777
|
if vcs
|
774
778
|
Autoproj.add_build_system_dependency vcs.type
|
775
|
-
|
779
|
+
pkg.autobuild.importer = vcs.create_autobuild_importer
|
776
780
|
else
|
777
|
-
raise ConfigError, "source #{
|
781
|
+
raise ConfigError, "source #{pkg.package_set.name} defines #{pkg.autobuild.name}, but does not provide a version control definition for it"
|
778
782
|
end
|
779
783
|
end
|
780
784
|
end
|
@@ -790,8 +794,9 @@ module Autoproj
|
|
790
794
|
if !source
|
791
795
|
raise ConfigError, "#{name} is neither a package nor a source"
|
792
796
|
end
|
793
|
-
packages.values.
|
794
|
-
map { |pkg
|
797
|
+
packages.values.
|
798
|
+
map { |pkg| pkg.autobuild.name if pkg.package_set.name == source.name }.
|
799
|
+
compact
|
795
800
|
end
|
796
801
|
end
|
797
802
|
|
@@ -904,8 +909,9 @@ module Autoproj
|
|
904
909
|
# Right now, the absence of a manifest makes autoproj only issue a
|
905
910
|
# warning. This will later be changed into an error.
|
906
911
|
def load_package_manifest(pkg_name)
|
907
|
-
|
908
|
-
find { |
|
912
|
+
pkg = packages.values.
|
913
|
+
find { |pkg| pkg.autobuild.name == pkg_name }
|
914
|
+
package, source, file = pkg.autobuild, pkg.package_set, pkg.file
|
909
915
|
|
910
916
|
if !pkg_name
|
911
917
|
raise ArgumentError, "package #{pkg_name} is not defined"
|
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.4.
|
4
|
+
version: 1.4.2
|
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-02
|
12
|
+
date: 2010-03-02 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|