autoproj 1.7.12.rc2 → 1.7.12
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 +16 -0
- data/Manifest.txt +3 -0
- data/bin/autoproj-locate +84 -0
- data/bin/autoproj-query +73 -0
- data/lib/autoproj/manifest.rb +0 -1
- data/lib/autoproj/query.rb +124 -0
- data/lib/autoproj/version.rb +1 -1
- metadata +13 -12
data/History.txt
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
* fixed error if config.yml is empty
|
|
4
4
|
* fixed issues with implicitly selecting ignored or excluded packages on the
|
|
5
5
|
command line
|
|
6
|
+
* fixed handling of overrides that change the VCS type
|
|
7
|
+
If a package 'A' is normally under git and has an explicit branch, as e.g.
|
|
8
|
+
|
|
9
|
+
- test:
|
|
10
|
+
type: git
|
|
11
|
+
url: my/url.git
|
|
12
|
+
branch: master
|
|
13
|
+
|
|
14
|
+
Then an override of
|
|
15
|
+
|
|
16
|
+
- test:
|
|
17
|
+
type: archive
|
|
18
|
+
url: http://other/url.tar.bz2
|
|
19
|
+
|
|
20
|
+
would fail as the 'branch' git option was passed to the archive importer.
|
|
21
|
+
This is handled well now.
|
|
6
22
|
* added metapackage support. One can now "group" packages under a certain name,
|
|
7
23
|
said name being used in the manifest' layout, exclude_packgaes and/or
|
|
8
24
|
ignore_packages.
|
data/Manifest.txt
CHANGED
|
@@ -6,6 +6,8 @@ bin/amake
|
|
|
6
6
|
bin/aup
|
|
7
7
|
bin/autolocate
|
|
8
8
|
bin/autoproj
|
|
9
|
+
bin/autoproj-locate
|
|
10
|
+
bin/autoproj-query
|
|
9
11
|
bin/autoproj_bootstrap
|
|
10
12
|
bin/autoproj_stress_test
|
|
11
13
|
lib/autoproj.rb
|
|
@@ -17,6 +19,7 @@ lib/autoproj/gitorious.rb
|
|
|
17
19
|
lib/autoproj/manifest.rb
|
|
18
20
|
lib/autoproj/options.rb
|
|
19
21
|
lib/autoproj/osdeps.rb
|
|
22
|
+
lib/autoproj/query.rb
|
|
20
23
|
lib/autoproj/system.rb
|
|
21
24
|
lib/autoproj/version.rb
|
|
22
25
|
samples/autoproj/README.txt
|
data/bin/autoproj-locate
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'autoproj'
|
|
4
|
+
require 'autoproj/cmdline'
|
|
5
|
+
|
|
6
|
+
Autoproj.silent = true
|
|
7
|
+
root_dir = Autoproj::CmdLine.initialize_root_directory
|
|
8
|
+
selection = Autoproj::CmdLine.initialize_and_load(ARGV)
|
|
9
|
+
if selection.empty?
|
|
10
|
+
puts root_dir
|
|
11
|
+
exit 0
|
|
12
|
+
elsif selection.size > 1
|
|
13
|
+
STDERR.puts Autoproj.console.color("more than one name given on the command line", :red)
|
|
14
|
+
exit 1
|
|
15
|
+
end
|
|
16
|
+
selection = selection.first
|
|
17
|
+
|
|
18
|
+
selection_rx = Regexp.new(Regexp.quote(selection))
|
|
19
|
+
candidates = []
|
|
20
|
+
Autoproj.manifest.each_package do |pkg|
|
|
21
|
+
name = pkg.name
|
|
22
|
+
next if !Autoproj.manifest.package_enabled?(name)
|
|
23
|
+
|
|
24
|
+
srcdir = Autobuild::Package[name].srcdir
|
|
25
|
+
if name == selection
|
|
26
|
+
puts srcdir
|
|
27
|
+
exit(0)
|
|
28
|
+
elsif name =~ selection_rx
|
|
29
|
+
candidates << srcdir
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
if candidates.empty?
|
|
34
|
+
# Try harder. Match directory prefixes
|
|
35
|
+
directories = selection.split('/')
|
|
36
|
+
rx = directories.
|
|
37
|
+
map { |d| "#{Regexp.quote(d)}\\w*" }.
|
|
38
|
+
join("/")
|
|
39
|
+
rx = Regexp.new(rx)
|
|
40
|
+
|
|
41
|
+
rx_strict = directories[0..-2].
|
|
42
|
+
map { |d| "#{Regexp.quote(d)}\\w*" }.
|
|
43
|
+
join("/")
|
|
44
|
+
rx_strict = Regexp.new("#{rx_strict}/#{Regexp.quote(directories.last)}$")
|
|
45
|
+
|
|
46
|
+
candidates_strict = []
|
|
47
|
+
Autoproj.manifest.each_package do |pkg|
|
|
48
|
+
name = pkg.name
|
|
49
|
+
next if !Autoproj.manifest.package_enabled?(name)
|
|
50
|
+
|
|
51
|
+
srcdir = Autobuild::Package[name].srcdir
|
|
52
|
+
if name =~ rx
|
|
53
|
+
candidates << srcdir
|
|
54
|
+
end
|
|
55
|
+
if name =~ rx_strict
|
|
56
|
+
candidates_strict << srcdir
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if candidates.size > 1 && candidates_strict.size == 1
|
|
61
|
+
candidates = candidates_strict
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
if candidates.size > 1
|
|
66
|
+
# If there is more than one candidate, check if there are some that are not
|
|
67
|
+
# present on disk
|
|
68
|
+
present = candidates.find_all { |dir| File.directory?(dir) }
|
|
69
|
+
if present.size == 1
|
|
70
|
+
candidates = present
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
if candidates.empty?
|
|
75
|
+
STDERR.puts Autoproj.console.color("cannot find #{selection} in the current autoproj installation", :bold, :red)
|
|
76
|
+
exit 1
|
|
77
|
+
elsif candidates.size > 1
|
|
78
|
+
STDERR.puts Autoproj.console.color("multiple packages match #{selection} in the current autoproj installation: #{candidates.join(", ")}", :bold, :red)
|
|
79
|
+
exit 1
|
|
80
|
+
else
|
|
81
|
+
puts candidates.first
|
|
82
|
+
exit(0)
|
|
83
|
+
end
|
|
84
|
+
|
data/bin/autoproj-query
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'autoproj'
|
|
4
|
+
require 'autoproj/cmdline'
|
|
5
|
+
|
|
6
|
+
Autoproj.silent = true
|
|
7
|
+
display_all = false
|
|
8
|
+
display_format = "$NAME"
|
|
9
|
+
search_all = false
|
|
10
|
+
|
|
11
|
+
parser = OptionParser.new do |opt|
|
|
12
|
+
opt.banner = "autoproj query <query_string>
|
|
13
|
+
Finds packages that match query_string and displays information about them (one per line)
|
|
14
|
+
By default, only the package name is displayed. It can be customized with the --format option
|
|
15
|
+
|
|
16
|
+
FORMAT SPECIFICATION
|
|
17
|
+
|
|
18
|
+
The format is a string in which special values can be expanded using a $VARNAME format. The following variables are accepted:
|
|
19
|
+
NAME: the package name
|
|
20
|
+
SRCDIR: the full path to the package source directory
|
|
21
|
+
PREFIX: the full path to the package installation directory"
|
|
22
|
+
|
|
23
|
+
opt.on('--search-all', "search in all defined packages instead of only in those selected selected in the layout") do
|
|
24
|
+
search_all = true
|
|
25
|
+
end
|
|
26
|
+
opt.on('--format FORMAT', String, "customize what should be displayed. See FORMAT SPECIFICATION above") do |format|
|
|
27
|
+
display_format = format
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
remaining = parser.parse(ARGV)
|
|
31
|
+
|
|
32
|
+
root_dir = Autoproj::CmdLine.initialize_root_directory
|
|
33
|
+
selection = Autoproj::CmdLine.initialize_and_load(remaining)
|
|
34
|
+
if selection.empty?
|
|
35
|
+
STDERR.puts Autoproj.console.color("no query given on the command line", :red)
|
|
36
|
+
exit 1
|
|
37
|
+
elsif selection.size > 1
|
|
38
|
+
STDERR.puts Autoproj.console.color("more than one query given on the command line", :red)
|
|
39
|
+
exit 1
|
|
40
|
+
end
|
|
41
|
+
selection = selection.first
|
|
42
|
+
query = Autoproj::Query.parse_query(selection)
|
|
43
|
+
|
|
44
|
+
packages =
|
|
45
|
+
if search_all
|
|
46
|
+
Autoproj.manifest.packages.find_all do |name, pkg_def|
|
|
47
|
+
!Autoproj.manifest.package_selected?(name)
|
|
48
|
+
end
|
|
49
|
+
else
|
|
50
|
+
Autoproj.manifest.all_selected_packages.map do |pkg_name|
|
|
51
|
+
[pkg_name, Autoproj.manifest.packages[pkg_name]]
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
matches = packages.map do |name, pkg_def|
|
|
56
|
+
if priority = query.match(pkg_def)
|
|
57
|
+
[priority, name]
|
|
58
|
+
end
|
|
59
|
+
end.compact
|
|
60
|
+
|
|
61
|
+
fields = Hash.new
|
|
62
|
+
matches = matches.sort
|
|
63
|
+
matches.each do |priority, name|
|
|
64
|
+
pkg = Autobuild::Package[name]
|
|
65
|
+
fields['SRCDIR'] = pkg.srcdir
|
|
66
|
+
fields['PREFIX'] = pkg.prefix
|
|
67
|
+
fields['NAME'] = name
|
|
68
|
+
fields['PRIORITY'] = priority
|
|
69
|
+
|
|
70
|
+
value = Autoproj.expand(display_format, fields)
|
|
71
|
+
puts value
|
|
72
|
+
end
|
|
73
|
+
|
data/lib/autoproj/manifest.rb
CHANGED
|
@@ -411,7 +411,6 @@ module Autoproj
|
|
|
411
411
|
# dependencies that are provided by the operating system (.osdeps file).
|
|
412
412
|
class PackageSet
|
|
413
413
|
attr_reader :manifest
|
|
414
|
-
|
|
415
414
|
# The VCSDefinition object that defines the version control holding
|
|
416
415
|
# information for this source. Local package sets (i.e. the ones that are not
|
|
417
416
|
# under version control) use the 'local' version control name. For them,
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
module Autoproj
|
|
2
|
+
class Query
|
|
3
|
+
ALLOWED_FIELDS = [
|
|
4
|
+
'autobuild.name',
|
|
5
|
+
'autobuild.srcdir',
|
|
6
|
+
'autobuild.class.name',
|
|
7
|
+
'vcs.type',
|
|
8
|
+
'vcs.url',
|
|
9
|
+
'package_set.name'
|
|
10
|
+
]
|
|
11
|
+
DEFAULT_FIELDS = {
|
|
12
|
+
'class' => 'autobuild.class.name',
|
|
13
|
+
'autobuild' => 'autobuild.name',
|
|
14
|
+
'vcs' => 'vcs.url',
|
|
15
|
+
'package_set' => 'package_set.name'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
# Match priorities
|
|
19
|
+
EXACT = 4
|
|
20
|
+
PARTIAL = 3
|
|
21
|
+
DIR_PREFIX_STRONG = 2
|
|
22
|
+
DIR_PREFIX_WEAK = 1
|
|
23
|
+
|
|
24
|
+
attr_reader :fields
|
|
25
|
+
attr_reader :value
|
|
26
|
+
attr_predicate :use_dir_prefix?
|
|
27
|
+
|
|
28
|
+
def initialize(fields, value)
|
|
29
|
+
@fields = fields
|
|
30
|
+
@value = value
|
|
31
|
+
@value_rx = Regexp.new(Regexp.quote(value), true)
|
|
32
|
+
|
|
33
|
+
directories = value.split('/')
|
|
34
|
+
if !directories.empty?
|
|
35
|
+
@use_dir_prefix = true
|
|
36
|
+
rx = directories.
|
|
37
|
+
map { |d| "#{Regexp.quote(d)}\\w*" }.
|
|
38
|
+
join("/")
|
|
39
|
+
rx = Regexp.new(rx, true)
|
|
40
|
+
@dir_prefix_weak_rx = rx
|
|
41
|
+
|
|
42
|
+
rx_strict = directories[0..-2].
|
|
43
|
+
map { |d| "#{Regexp.quote(d)}\\w*" }.
|
|
44
|
+
join("/")
|
|
45
|
+
rx_strict = Regexp.new("#{rx_strict}/#{Regexp.quote(directories.last)}$", true)
|
|
46
|
+
@dir_prefix_strong_rx = rx_strict
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def match(pkg)
|
|
51
|
+
pkg_value = fields.inject(pkg) { |v, field_name| v.send(field_name) }
|
|
52
|
+
pkg_value = pkg_value.to_s
|
|
53
|
+
|
|
54
|
+
if pkg_value == value
|
|
55
|
+
return EXACT
|
|
56
|
+
elsif pkg_value =~ @value_rx
|
|
57
|
+
return PARTIAL
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Special match for directories: match directory prefixes
|
|
61
|
+
if use_dir_prefix?
|
|
62
|
+
if pkg_value =~ @dir_prefix_strong_rx
|
|
63
|
+
return DIR_PREFIX_STRONG
|
|
64
|
+
elsif pkg_value =~ @dir_prefix_weak_rx
|
|
65
|
+
return DIR_PREFIX_WEAK
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def self.parse(str)
|
|
71
|
+
field, value = str.split('=')
|
|
72
|
+
if DEFAULT_FIELDS[field]
|
|
73
|
+
field = DEFAULT_FIELDS[field]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Validate the query key
|
|
77
|
+
if !ALLOWED_FIELDS.include?(field)
|
|
78
|
+
raise ArgumentError, "#{field} is not a known query key"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
fields = field.split('.')
|
|
82
|
+
new(fields, value)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def self.parse_query(query)
|
|
86
|
+
query = query.split(':')
|
|
87
|
+
query = query.map do |str|
|
|
88
|
+
if str !~ /=/
|
|
89
|
+
match_name = Query.parse("autobuild.name=#{str}")
|
|
90
|
+
match_dir = Query.parse("autobuild.srcdir=#{str}")
|
|
91
|
+
Or.new([match_name, match_dir])
|
|
92
|
+
else
|
|
93
|
+
Query.parse(str)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
And.new(query)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
class Or
|
|
101
|
+
def initialize(submatches)
|
|
102
|
+
@submatches = submatches
|
|
103
|
+
end
|
|
104
|
+
def match(pkg)
|
|
105
|
+
@submatches.map { |m| m.match(pkg) }.compact.max
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
class And
|
|
110
|
+
def initialize(submatches)
|
|
111
|
+
@submatches = submatches
|
|
112
|
+
end
|
|
113
|
+
def match(pkg)
|
|
114
|
+
matches = @submatches.map do |m|
|
|
115
|
+
if p = m.match(pkg)
|
|
116
|
+
p
|
|
117
|
+
else return
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
matches.min
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: autoproj
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 19
|
|
5
|
+
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 7
|
|
9
9
|
- 12
|
|
10
|
-
|
|
11
|
-
- 2
|
|
12
|
-
version: 1.7.12.rc2
|
|
10
|
+
version: 1.7.12
|
|
13
11
|
platform: ruby
|
|
14
12
|
authors:
|
|
15
13
|
- Sylvain Joyeux
|
|
@@ -17,7 +15,7 @@ autorequire:
|
|
|
17
15
|
bindir: bin
|
|
18
16
|
cert_chain: []
|
|
19
17
|
|
|
20
|
-
date: 2011-08-
|
|
18
|
+
date: 2011-08-08 00:00:00 Z
|
|
21
19
|
dependencies:
|
|
22
20
|
- !ruby/object:Gem::Dependency
|
|
23
21
|
name: autobuild
|
|
@@ -179,6 +177,8 @@ executables:
|
|
|
179
177
|
- aup
|
|
180
178
|
- autolocate
|
|
181
179
|
- autoproj
|
|
180
|
+
- autoproj-locate
|
|
181
|
+
- autoproj-query
|
|
182
182
|
- autoproj_bootstrap
|
|
183
183
|
- autoproj_stress_test
|
|
184
184
|
extensions: []
|
|
@@ -197,6 +197,8 @@ files:
|
|
|
197
197
|
- bin/aup
|
|
198
198
|
- bin/autolocate
|
|
199
199
|
- bin/autoproj
|
|
200
|
+
- bin/autoproj-locate
|
|
201
|
+
- bin/autoproj-query
|
|
200
202
|
- bin/autoproj_bootstrap
|
|
201
203
|
- bin/autoproj_stress_test
|
|
202
204
|
- lib/autoproj.rb
|
|
@@ -208,6 +210,7 @@ files:
|
|
|
208
210
|
- lib/autoproj/manifest.rb
|
|
209
211
|
- lib/autoproj/options.rb
|
|
210
212
|
- lib/autoproj/osdeps.rb
|
|
213
|
+
- lib/autoproj/query.rb
|
|
211
214
|
- lib/autoproj/system.rb
|
|
212
215
|
- lib/autoproj/version.rb
|
|
213
216
|
- samples/autoproj/README.txt
|
|
@@ -244,14 +247,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
244
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
248
|
none: false
|
|
246
249
|
requirements:
|
|
247
|
-
- - "
|
|
250
|
+
- - ">="
|
|
248
251
|
- !ruby/object:Gem::Version
|
|
249
|
-
hash:
|
|
252
|
+
hash: 3
|
|
250
253
|
segments:
|
|
251
|
-
-
|
|
252
|
-
|
|
253
|
-
- 1
|
|
254
|
-
version: 1.3.1
|
|
254
|
+
- 0
|
|
255
|
+
version: "0"
|
|
255
256
|
requirements: []
|
|
256
257
|
|
|
257
258
|
rubyforge_project: autobuild
|