autoproj 1.7.14.rc2 → 1.7.14.rc4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/autoproj-query +8 -0
- data/bin/autoproj_bootstrap +31 -8
- data/lib/autoproj/autobuild.rb +6 -67
- data/lib/autoproj/default.osdeps +0 -2
- data/lib/autoproj/gitorious.rb +0 -1
- data/lib/autoproj/manifest.rb +115 -3
- data/lib/autoproj/osdeps.rb +30 -6
- data/lib/autoproj/version.rb +1 -1
- metadata +4 -4
data/bin/autoproj-query
CHANGED
@@ -13,6 +13,14 @@ parser = OptionParser.new do |opt|
|
|
13
13
|
Finds packages that match query_string and displays information about them (one per line)
|
14
14
|
By default, only the package name is displayed. It can be customized with the --format option
|
15
15
|
|
16
|
+
QUERY KEYS
|
17
|
+
autobuild.name: the package name
|
18
|
+
autobuild.srcdir: the package source directory
|
19
|
+
autobuild.class.name: the package class
|
20
|
+
vcs.type: the VCS type (as used in the source.yml files)
|
21
|
+
vcs.url: the URL from the VCS. The exact semantic of it depends on the VCS type
|
22
|
+
package_set.name: the name of the package set that defines the package
|
23
|
+
|
16
24
|
FORMAT SPECIFICATION
|
17
25
|
|
18
26
|
The format is a string in which special values can be expanded using a $VARNAME format. The following variables are accepted:
|
data/bin/autoproj_bootstrap
CHANGED
@@ -116,8 +116,10 @@ module Autoproj
|
|
116
116
|
attr_reader :aliases
|
117
117
|
attr_accessor :force_osdeps
|
118
118
|
attr_accessor :gem_with_prerelease
|
119
|
+
attr_accessor :gem_doc
|
119
120
|
end
|
120
121
|
@aliases = Hash.new
|
122
|
+
@gem_doc = false
|
121
123
|
|
122
124
|
attr_writer :silent
|
123
125
|
def silent?; @silent end
|
@@ -474,12 +476,30 @@ fi
|
|
474
476
|
|
475
477
|
# If data is a hash, it means we have to check the OS version as well
|
476
478
|
if data.kind_of?(Hash)
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
479
|
+
# Look in +data+ for specific version. We look, in order, in the
|
480
|
+
# os_versions field (detected OS versions), and return the first
|
481
|
+
# matching entry
|
482
|
+
version_entry = nil
|
483
|
+
# First, look for an exact match
|
484
|
+
found = os_versions.find do |os_ver|
|
485
|
+
version_entry = data.find do |version_list, _|
|
486
|
+
version_list.to_s.split(',').
|
487
|
+
map(&:downcase).
|
488
|
+
any? { |v| v == os_ver }
|
489
|
+
end
|
490
|
+
end
|
491
|
+
if !found
|
492
|
+
# Then relax the matching ...
|
493
|
+
found = os_versions.find do |os_ver|
|
494
|
+
version_entry = data.find do |version_list, _|
|
495
|
+
version_list.to_s.split(',').
|
496
|
+
map(&:downcase).
|
497
|
+
any? { |v| Regexp.new(v) =~ os_ver }
|
482
498
|
end
|
499
|
+
end
|
500
|
+
end
|
501
|
+
if Autoproj.verbose
|
502
|
+
Autoproj.progress "selected OS version #{found} for osdep #{name}: #{version_entry.inspect}"
|
483
503
|
end
|
484
504
|
|
485
505
|
if !version_entry
|
@@ -499,7 +519,7 @@ fi
|
|
499
519
|
# Single package
|
500
520
|
return [PACKAGES, [data.to_str]]
|
501
521
|
else
|
502
|
-
raise ConfigError.new, "invalid package
|
522
|
+
raise ConfigError.new, "invalid package specification #{data} in #{source_of(name)}"
|
503
523
|
end
|
504
524
|
end
|
505
525
|
|
@@ -1026,6 +1046,10 @@ So, what do you want ? (all, ruby, os or none)
|
|
1026
1046
|
guess_gem_program
|
1027
1047
|
|
1028
1048
|
base_cmdline = [Autobuild.tool('gem'), 'install']
|
1049
|
+
if !OSDependencies.gem_doc
|
1050
|
+
base_cmdline << '--no-rdoc' << '--no-ri'
|
1051
|
+
end
|
1052
|
+
|
1029
1053
|
if Autoproj::OSDependencies.gem_with_prerelease
|
1030
1054
|
base_cmdline << "--prerelease"
|
1031
1055
|
end
|
@@ -1534,7 +1558,6 @@ libxslt:
|
|
1534
1558
|
arch: libxslt
|
1535
1559
|
gentoo: dev-libs/libxslt
|
1536
1560
|
debian,ubuntu: libxslt1-dev
|
1537
|
-
rdoc: gem
|
1538
1561
|
|
1539
1562
|
EODEFS
|
1540
1563
|
|
@@ -1565,7 +1588,7 @@ rescue Autoproj::ConfigError => e
|
|
1565
1588
|
end
|
1566
1589
|
|
1567
1590
|
# Now try to find out the name of the gem binary
|
1568
|
-
PACKAGES = %w{
|
1591
|
+
PACKAGES = %w{autobuild libxml2 libxslt zlib build-essential lsb_release}
|
1569
1592
|
|
1570
1593
|
ENV['RUBYOPT'] = "-rubygems"
|
1571
1594
|
require 'rubygems'
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -98,77 +98,16 @@ module Autobuild
|
|
98
98
|
def depends_on(name)
|
99
99
|
if Autoproj::CmdLine.ignore_dependencies?
|
100
100
|
return
|
101
|
-
elsif Autoproj.manifest.ignored?(name)
|
102
|
-
return
|
103
101
|
end
|
104
102
|
|
105
103
|
@os_packages ||= Set.new
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
explicit_selection = Autoproj.manifest.explicitly_selected_package?(name)
|
113
|
-
osdeps_availability = Autoproj.osdeps.availability_of(name)
|
114
|
-
available_as_source = Autobuild::Package[name]
|
115
|
-
|
116
|
-
osdeps_overrides = Autoproj.manifest.osdeps_overrides[name]
|
117
|
-
if osdeps_overrides
|
118
|
-
source_packages = osdeps_overrides[:packages]
|
119
|
-
if source_packages.empty?
|
120
|
-
source_packages << name
|
121
|
-
end
|
122
|
-
force_source_usage = osdeps_overrides[:force]
|
123
|
-
available_as_source = true
|
124
|
-
end
|
125
|
-
|
126
|
-
# Prefer OS packages to source packages
|
127
|
-
if force_source_usage && !source_packages.any? { |pkg_name| Autoproj.manifest.excluded?(pkg_name) }
|
128
|
-
source_packages.each do |pkg_name|
|
129
|
-
__depends_on__(pkg_name)
|
104
|
+
Autoproj.manifest.resolve_package_name(name).each do |type, pkg|
|
105
|
+
if type == :osdeps
|
106
|
+
@os_packages << pkg
|
107
|
+
elsif type == :package
|
108
|
+
__depends_on__(pkg)
|
109
|
+
else raise Autoproj::InternalError, "expected package type to be either :osdeps or :package, got #{type.inspect}"
|
130
110
|
end
|
131
|
-
elsif !explicit_selection
|
132
|
-
if osdeps_availability == Autoproj::OSDependencies::AVAILABLE
|
133
|
-
@os_packages << name
|
134
|
-
return
|
135
|
-
elsif osdeps_availability == Autoproj::OSDependencies::IGNORE
|
136
|
-
return
|
137
|
-
end
|
138
|
-
|
139
|
-
if osdeps_availability == Autoproj::OSDependencies::UNKNOWN_OS
|
140
|
-
# If we can't handle that OS, but other OSes have a
|
141
|
-
# definition for it, we assume that it can be installed as
|
142
|
-
# an external package. However, if it is also available as a
|
143
|
-
# source package, prompt the user
|
144
|
-
if !available_as_source || explicit_osdeps_selection(name)
|
145
|
-
@os_packages << name
|
146
|
-
return
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
|
151
|
-
if !available_as_source
|
152
|
-
begin
|
153
|
-
# Call osdeps to get a proper error message
|
154
|
-
osdeps, gems = Autoproj.osdeps.partition_packages([name].to_set, name => [self.name])
|
155
|
-
Autoproj.osdeps.resolve_os_dependencies(osdeps)
|
156
|
-
rescue Autoproj::ConfigError => e
|
157
|
-
if osdeps_availability != Autoproj::OSDependencies::NO_PACKAGE && !Autoproj.osdeps.installs_os_packages?
|
158
|
-
Autoproj.warn "in #{File.join(srcdir, 'manifest.xml')}: #{e.message}"
|
159
|
-
Autoproj.warn "this osdeps dependency is simply ignored as you asked autoproj to not install osdeps packages"
|
160
|
-
@ignored_os_dependencies << name
|
161
|
-
# We are not asked to install OS packages, just ignore
|
162
|
-
return
|
163
|
-
end
|
164
|
-
raise
|
165
|
-
end
|
166
|
-
# Should never reach further than that
|
167
|
-
end
|
168
|
-
__depends_on__(name) # to get the error message
|
169
|
-
else
|
170
|
-
# Normal dependency
|
171
|
-
__depends_on__(name)
|
172
111
|
end
|
173
112
|
end
|
174
113
|
|
data/lib/autoproj/default.osdeps
CHANGED
data/lib/autoproj/gitorious.rb
CHANGED
@@ -53,7 +53,6 @@ module Autoproj
|
|
53
53
|
if Autobuild::Importer.respond_to?(:fallback) && options[:fallback_to_http]
|
54
54
|
Autobuild::Importer.fallback do |package, importer|
|
55
55
|
root_rx = /^(?:http:\/\/git\.|git:\/\/|git@)#{Regexp.quote(base_url)}:?/
|
56
|
-
|
57
56
|
if importer.kind_of?(Autobuild::Git) && importer.repository =~ root_rx && importer.repository !~ /^http/
|
58
57
|
Autoproj.warn "import from #{importer.repository} failed, falling back to using http for all packages on #{base_url}"
|
59
58
|
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -1057,6 +1057,7 @@ module Autoproj
|
|
1057
1057
|
@moved_packages = Hash.new
|
1058
1058
|
@osdeps_overrides = Hash.new
|
1059
1059
|
@metapackages = Hash.new
|
1060
|
+
@ignored_os_dependencies = Set.new
|
1060
1061
|
|
1061
1062
|
@constant_definitions = Hash.new
|
1062
1063
|
if Autoproj.has_config_key?('manifest_source')
|
@@ -1595,6 +1596,117 @@ module Autoproj
|
|
1595
1596
|
set
|
1596
1597
|
end
|
1597
1598
|
|
1599
|
+
# Exception raised when a caller requires to use an excluded package
|
1600
|
+
class ExcludedPackage < ConfigError
|
1601
|
+
attr_reader :name
|
1602
|
+
def initialize(name)
|
1603
|
+
@name = name
|
1604
|
+
end
|
1605
|
+
end
|
1606
|
+
|
1607
|
+
# Resolves the given +name+, where +name+ can either be the name of a
|
1608
|
+
# source or the name of a package.
|
1609
|
+
#
|
1610
|
+
# The returned value is a list of pairs:
|
1611
|
+
#
|
1612
|
+
# [type, package_name]
|
1613
|
+
#
|
1614
|
+
# where +type+ can either be :package or :osdeps (as symbols)
|
1615
|
+
#
|
1616
|
+
# The returned array can be empty if +name+ is an ignored package
|
1617
|
+
def resolve_package_name(name)
|
1618
|
+
if pkg_set = find_metapackage(name)
|
1619
|
+
if !pkg_set
|
1620
|
+
raise ConfigError.new, "#{name} is neither a package nor a package set name. Packages in autoproj must be declared in an autobuild file."
|
1621
|
+
end
|
1622
|
+
pkg_names = pkg_set.each_package.map(&:name)
|
1623
|
+
else
|
1624
|
+
pkg_names = [name]
|
1625
|
+
end
|
1626
|
+
|
1627
|
+
result = []
|
1628
|
+
pkg_names.each do |pkg|
|
1629
|
+
result.concat(resolve_single_package_name(pkg))
|
1630
|
+
end
|
1631
|
+
result
|
1632
|
+
end
|
1633
|
+
|
1634
|
+
# Resolves a package name, where +name+ cannot be resolved as a
|
1635
|
+
# metapackage
|
1636
|
+
#
|
1637
|
+
# This is a helper method for #resolve_package_name. Do not use
|
1638
|
+
# directly
|
1639
|
+
def resolve_single_package_name(name) # :nodoc:
|
1640
|
+
if ignored?(name)
|
1641
|
+
return []
|
1642
|
+
end
|
1643
|
+
|
1644
|
+
explicit_selection = explicitly_selected_package?(name)
|
1645
|
+
osdeps_availability = Autoproj.osdeps.availability_of(name)
|
1646
|
+
available_as_source = Autobuild::Package[name]
|
1647
|
+
|
1648
|
+
osdeps_overrides = Autoproj.manifest.osdeps_overrides[name]
|
1649
|
+
if osdeps_overrides
|
1650
|
+
source_packages = osdeps_overrides[:packages].dup
|
1651
|
+
force_source_usage = osdeps_overrides[:force]
|
1652
|
+
begin
|
1653
|
+
source_packages = source_packages.inject([]) do |result, src_pkg_name|
|
1654
|
+
result.concat(resolve_package_name(src_pkg_name))
|
1655
|
+
end.uniq
|
1656
|
+
available_as_source = true
|
1657
|
+
rescue ExcludedPackage
|
1658
|
+
force_source_usage = false
|
1659
|
+
available_as_source = false
|
1660
|
+
end
|
1661
|
+
|
1662
|
+
if source_packages.empty?
|
1663
|
+
source_packages << [:package, name]
|
1664
|
+
end
|
1665
|
+
end
|
1666
|
+
|
1667
|
+
if force_source_usage
|
1668
|
+
return source_packages
|
1669
|
+
elsif !explicit_selection
|
1670
|
+
if osdeps_availability == Autoproj::OSDependencies::AVAILABLE
|
1671
|
+
return [[:osdeps, name]]
|
1672
|
+
elsif osdeps_availability == Autoproj::OSDependencies::IGNORE
|
1673
|
+
return []
|
1674
|
+
end
|
1675
|
+
|
1676
|
+
if osdeps_availability == Autoproj::OSDependencies::UNKNOWN_OS
|
1677
|
+
# If we can't handle that OS, but other OSes have a
|
1678
|
+
# definition for it, we assume that it can be installed as
|
1679
|
+
# an external package. However, if it is also available as a
|
1680
|
+
# source package, prompt the user
|
1681
|
+
if !available_as_source || explicit_osdeps_selection(name)
|
1682
|
+
return [[:osdeps, name]]
|
1683
|
+
end
|
1684
|
+
end
|
1685
|
+
|
1686
|
+
# No source, no osdeps. Call osdeps again, but this time to get
|
1687
|
+
# a proper error message.
|
1688
|
+
if !available_as_source
|
1689
|
+
begin
|
1690
|
+
osdeps, gems = Autoproj.osdeps.partition_packages([name].to_set, name => [self.name])
|
1691
|
+
Autoproj.osdeps.resolve_os_dependencies(osdeps)
|
1692
|
+
rescue Autoproj::ConfigError => e
|
1693
|
+
if osdeps_availability != Autoproj::OSDependencies::NO_PACKAGE && !Autoproj.osdeps.installs_os_packages?
|
1694
|
+
Autoproj.warn "in #{File.join(srcdir, 'manifest.xml')}: #{e.message}"
|
1695
|
+
Autoproj.warn "this osdeps dependency is simply ignored as you asked autoproj to not install osdeps packages"
|
1696
|
+
@ignored_os_dependencies << name
|
1697
|
+
# We are not asked to install OS packages, just ignore
|
1698
|
+
return []
|
1699
|
+
end
|
1700
|
+
raise
|
1701
|
+
end
|
1702
|
+
# Should never reach further than that
|
1703
|
+
end
|
1704
|
+
elsif !available_as_source
|
1705
|
+
raise ConfigError, "cannot resolve #{name}: it is not a package, not a metapackage and not an osdeps"
|
1706
|
+
end
|
1707
|
+
return [[:package, name]]
|
1708
|
+
end
|
1709
|
+
|
1598
1710
|
# +name+ can either be the name of a source or the name of a package. In
|
1599
1711
|
# the first case, we return all packages defined by that source. In the
|
1600
1712
|
# latter case, we return the singleton array [name]
|
@@ -1933,16 +2045,16 @@ module Autoproj
|
|
1933
2045
|
# First, remove packages that are directly referenced by name or by
|
1934
2046
|
# package set names
|
1935
2047
|
selection.each do |sel|
|
1936
|
-
|
2048
|
+
match_pkg_name = Regexp.new(Regexp.quote(sel))
|
1937
2049
|
|
1938
2050
|
packages = all_layout_packages.
|
1939
|
-
find_all { |pkg_name| pkg_name =~
|
2051
|
+
find_all { |pkg_name| pkg_name =~ match_pkg_name }.
|
1940
2052
|
to_set
|
1941
2053
|
matches[sel] = packages
|
1942
2054
|
expanded_packages |= packages
|
1943
2055
|
|
1944
2056
|
each_metapackage do |pkg|
|
1945
|
-
if pkg.name =~
|
2057
|
+
if pkg.name =~ match_pkg_name
|
1946
2058
|
packages = resolve_package_set(pkg.name).to_set
|
1947
2059
|
packages = (packages & all_layout_packages)
|
1948
2060
|
matches[sel] |= packages
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -17,8 +17,10 @@ module Autoproj
|
|
17
17
|
attr_reader :aliases
|
18
18
|
attr_accessor :force_osdeps
|
19
19
|
attr_accessor :gem_with_prerelease
|
20
|
+
attr_accessor :gem_doc
|
20
21
|
end
|
21
22
|
@aliases = Hash.new
|
23
|
+
@gem_doc = false
|
22
24
|
|
23
25
|
attr_writer :silent
|
24
26
|
def silent?; @silent end
|
@@ -375,12 +377,30 @@ fi
|
|
375
377
|
|
376
378
|
# If data is a hash, it means we have to check the OS version as well
|
377
379
|
if data.kind_of?(Hash)
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
380
|
+
# Look in +data+ for specific version. We look, in order, in the
|
381
|
+
# os_versions field (detected OS versions), and return the first
|
382
|
+
# matching entry
|
383
|
+
version_entry = nil
|
384
|
+
# First, look for an exact match
|
385
|
+
found = os_versions.find do |os_ver|
|
386
|
+
version_entry = data.find do |version_list, _|
|
387
|
+
version_list.to_s.split(',').
|
388
|
+
map(&:downcase).
|
389
|
+
any? { |v| v == os_ver }
|
390
|
+
end
|
391
|
+
end
|
392
|
+
if !found
|
393
|
+
# Then relax the matching ...
|
394
|
+
found = os_versions.find do |os_ver|
|
395
|
+
version_entry = data.find do |version_list, _|
|
396
|
+
version_list.to_s.split(',').
|
397
|
+
map(&:downcase).
|
398
|
+
any? { |v| Regexp.new(v) =~ os_ver }
|
383
399
|
end
|
400
|
+
end
|
401
|
+
end
|
402
|
+
if Autoproj.verbose
|
403
|
+
Autoproj.progress "selected OS version #{found} for osdep #{name}: #{version_entry.inspect}"
|
384
404
|
end
|
385
405
|
|
386
406
|
if !version_entry
|
@@ -400,7 +420,7 @@ fi
|
|
400
420
|
# Single package
|
401
421
|
return [PACKAGES, [data.to_str]]
|
402
422
|
else
|
403
|
-
raise ConfigError.new, "invalid package
|
423
|
+
raise ConfigError.new, "invalid package specification #{data} in #{source_of(name)}"
|
404
424
|
end
|
405
425
|
end
|
406
426
|
|
@@ -927,6 +947,10 @@ So, what do you want ? (all, ruby, os or none)
|
|
927
947
|
guess_gem_program
|
928
948
|
|
929
949
|
base_cmdline = [Autobuild.tool('gem'), 'install']
|
950
|
+
if !OSDependencies.gem_doc
|
951
|
+
base_cmdline << '--no-rdoc' << '--no-ri'
|
952
|
+
end
|
953
|
+
|
930
954
|
if Autoproj::OSDependencies.gem_with_prerelease
|
931
955
|
base_cmdline << "--prerelease"
|
932
956
|
end
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15424061
|
5
5
|
prerelease: 7
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 7
|
9
9
|
- 14
|
10
10
|
- rc
|
11
|
-
-
|
12
|
-
version: 1.7.14.
|
11
|
+
- 4
|
12
|
+
version: 1.7.14.rc4
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Sylvain Joyeux
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-10-
|
20
|
+
date: 2011-10-24 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: autobuild
|