autoproj 1.13.1 → 1.13.2.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +2 -2
- data/bin/autoproj_bootstrap +57 -9
- data/lib/autoproj/cmdline.rb +16 -2
- data/lib/autoproj/configuration.rb +8 -0
- data/lib/autoproj/default.osdeps +15 -4
- data/lib/autoproj/gitorious.rb +1 -1
- data/lib/autoproj/manifest.rb +2 -1
- data/lib/autoproj/ops/configuration.rb +29 -10
- data/lib/autoproj/ops/main_config_switcher.rb +3 -2
- data/lib/autoproj/ops/snapshot.rb +18 -1
- data/lib/autoproj/osdeps.rb +34 -6
- data/lib/autoproj/test.rb +14 -1
- data/lib/autoproj/version.rb +1 -1
- metadata +16 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21b0b71092d73116445ddc3b3d6e3d9f88334e6e
|
4
|
+
data.tar.gz: 6e80ccfdc1c89fc078ee2f769c8975a3ee20902f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cf05bee34dbb299d93acccfaf9c727d3406d3866f823abab726be19d07d84f704d2a5a84827a77b2c239723c8ebe0f8d612270a108cb6b460ded8518c30594a
|
7
|
+
data.tar.gz: 8a232a9d04fe59d6408ef10669e2bf8b30c9091436ef7119b3b35ad11c419a2ba1f4808f552b9bb6e01d9ed3f0b22969eaec50bcc10f079e2a7c42e46721dfbe
|
data/Rakefile
CHANGED
@@ -18,8 +18,8 @@ Utilrb::Rake.hoe do
|
|
18
18
|
license 'BSD'
|
19
19
|
|
20
20
|
extra_deps <<
|
21
|
-
['autobuild', '>= 1.9.0
|
22
|
-
['utilrb', '>=
|
21
|
+
['autobuild', '>= 1.9.0', '< 1.10.0'] <<
|
22
|
+
['utilrb', '>= 2.0.0', '< 3.0.0'] <<
|
23
23
|
['highline', '>= 1.5.0']
|
24
24
|
end
|
25
25
|
end
|
data/bin/autoproj_bootstrap
CHANGED
@@ -358,6 +358,14 @@ module Autoproj
|
|
358
358
|
end
|
359
359
|
end
|
360
360
|
|
361
|
+
def import_log_enabled?
|
362
|
+
get('import_log_enabled', true)
|
363
|
+
end
|
364
|
+
|
365
|
+
def import_log_enabled=(value)
|
366
|
+
set('import_log_enabled', !!value)
|
367
|
+
end
|
368
|
+
|
361
369
|
def ruby_executable
|
362
370
|
@ruby_executable ||= OSDependencies.autodetect_ruby_program
|
363
371
|
end
|
@@ -870,6 +878,15 @@ fi
|
|
870
878
|
"emerge --noreplace '%s'")
|
871
879
|
end
|
872
880
|
end
|
881
|
+
# Package manager interface for systems that use pkg (i.e. FreeBSD) as
|
882
|
+
# their package manager
|
883
|
+
class PkgManager < ShellScriptManager
|
884
|
+
def initialize
|
885
|
+
super(['pkg'], true,
|
886
|
+
"pkg install -y '%s'",
|
887
|
+
"pkg install -y '%s'")
|
888
|
+
end
|
889
|
+
end
|
873
890
|
|
874
891
|
#Package manger for OpenSuse and Suse (untested)
|
875
892
|
class ZypperManager < ShellScriptManager
|
@@ -1483,7 +1500,8 @@ fi
|
|
1483
1500
|
PackageManagers::YumManager,
|
1484
1501
|
PackageManagers::PortManager,
|
1485
1502
|
PackageManagers::ZypperManager,
|
1486
|
-
PackageManagers::PipManager
|
1503
|
+
PackageManagers::PipManager ,
|
1504
|
+
PackageManagers::PkgManager]
|
1487
1505
|
|
1488
1506
|
# Mapping from OS name to package manager name
|
1489
1507
|
#
|
@@ -1503,7 +1521,8 @@ fi
|
|
1503
1521
|
'fedora' => 'yum',
|
1504
1522
|
'macos-port' => 'macports',
|
1505
1523
|
'macos-brew' => 'brew',
|
1506
|
-
'opensuse' => 'zypper'
|
1524
|
+
'opensuse' => 'zypper',
|
1525
|
+
'freebsd' => 'pkg'
|
1507
1526
|
}
|
1508
1527
|
|
1509
1528
|
# The information contained in the OSdeps files, as a hash
|
@@ -1710,6 +1729,9 @@ fi
|
|
1710
1729
|
version =~/.*VERSION\s+=\s+([^\s]+)/
|
1711
1730
|
version = $1
|
1712
1731
|
[['opensuse'], [version.strip]]
|
1732
|
+
elsif Autobuild.freebsd?
|
1733
|
+
version = `uname -r`.strip.split("-")[0]
|
1734
|
+
[['freebsd'],[version]]
|
1713
1735
|
end
|
1714
1736
|
end
|
1715
1737
|
|
@@ -1858,6 +1880,20 @@ fi
|
|
1858
1880
|
|
1859
1881
|
class InvalidRecursiveStatement < Autobuild::Exception; end
|
1860
1882
|
|
1883
|
+
# Return the path to the osdeps name for a given package name while
|
1884
|
+
# accounting for package aliases
|
1885
|
+
#
|
1886
|
+
# returns an array contain the path starting with name and
|
1887
|
+
# ending at the resolved name
|
1888
|
+
def self.resolve_name(name)
|
1889
|
+
path = [ name ]
|
1890
|
+
while OSDependencies.aliases.has_key?(name)
|
1891
|
+
name = OSDependencies.aliases[name]
|
1892
|
+
path << name
|
1893
|
+
end
|
1894
|
+
path
|
1895
|
+
end
|
1896
|
+
|
1861
1897
|
# Return the list of packages that should be installed for +name+
|
1862
1898
|
#
|
1863
1899
|
# The following two simple return values are possible:
|
@@ -1876,9 +1912,8 @@ fi
|
|
1876
1912
|
# name and version. The package list might be empty even if status ==
|
1877
1913
|
# FOUND_PACKAGES, for instance if the ignore keyword is used.
|
1878
1914
|
def resolve_package(name)
|
1879
|
-
|
1880
|
-
|
1881
|
-
end
|
1915
|
+
path = OSDependencies.resolve_name(name)
|
1916
|
+
name = path.last
|
1882
1917
|
|
1883
1918
|
os_names, os_versions = OSDependencies.operating_system
|
1884
1919
|
os_names = os_names.dup
|
@@ -2099,7 +2134,8 @@ fi
|
|
2099
2134
|
dependencies.each do |name|
|
2100
2135
|
result = resolve_package(name)
|
2101
2136
|
if !result
|
2102
|
-
|
2137
|
+
path = OSDependencies.resolve_name(name)
|
2138
|
+
raise MissingOSDep.new, "there is no osdeps definition for #{path.last} (search tree: #{path.join("->")})"
|
2103
2139
|
end
|
2104
2140
|
|
2105
2141
|
if result.empty?
|
@@ -2929,11 +2965,12 @@ build-essential:
|
|
2929
2965
|
opensuse:
|
2930
2966
|
- "@devel_C_C++"
|
2931
2967
|
- gcc-c++
|
2968
|
+
default: clang
|
2932
2969
|
autobuild:
|
2933
|
-
- gem: autobuild
|
2970
|
+
- gem: autobuild<1.10
|
2934
2971
|
- osdep: readline
|
2935
2972
|
autoproj:
|
2936
|
-
- gem: autoproj
|
2973
|
+
- gem: autoproj<2.0
|
2937
2974
|
- osdep: readline
|
2938
2975
|
readline:
|
2939
2976
|
debian,ubuntu: libreadline-dev
|
@@ -2950,9 +2987,10 @@ git:
|
|
2950
2987
|
gentoo: dev-vcs/git
|
2951
2988
|
arch: git
|
2952
2989
|
fedora: git
|
2953
|
-
macos-port: git
|
2990
|
+
macos-port: git
|
2954
2991
|
macos-brew: git
|
2955
2992
|
opensuse: git
|
2993
|
+
freebsd: git
|
2956
2994
|
hg:
|
2957
2995
|
debian,ubuntu: mercurial
|
2958
2996
|
gentoo: dev-vcs/mercurial
|
@@ -2960,6 +2998,7 @@ hg:
|
|
2960
2998
|
fedora: mercurial
|
2961
2999
|
darwin: mercurial
|
2962
3000
|
opensuse: mercurial
|
3001
|
+
freebsd: mercurial
|
2963
3002
|
svn:
|
2964
3003
|
debian,ubuntu: subversion
|
2965
3004
|
gentoo: dev-util/subversion
|
@@ -2967,6 +3006,7 @@ svn:
|
|
2967
3006
|
fedora: subversion
|
2968
3007
|
darwin: subversion
|
2969
3008
|
opensuse: subversion
|
3009
|
+
freebsd: subversion
|
2970
3010
|
cmake:
|
2971
3011
|
debian,ubuntu: cmake
|
2972
3012
|
gentoo: dev-util/cmake
|
@@ -2974,6 +3014,7 @@ cmake:
|
|
2974
3014
|
fedora: cmake
|
2975
3015
|
darwin: cmake
|
2976
3016
|
opensuse: cmake
|
3017
|
+
freebsd: cmake
|
2977
3018
|
autotools:
|
2978
3019
|
debian,ubuntu:
|
2979
3020
|
- automake
|
@@ -2993,6 +3034,9 @@ autotools:
|
|
2993
3034
|
opensuse:
|
2994
3035
|
- automake
|
2995
3036
|
- autoconf
|
3037
|
+
freebsd:
|
3038
|
+
- automake
|
3039
|
+
- autoconf
|
2996
3040
|
archive:
|
2997
3041
|
debian,ubuntu:
|
2998
3042
|
- tar
|
@@ -3014,18 +3058,22 @@ archive:
|
|
3014
3058
|
opensuse:
|
3015
3059
|
- tar
|
3016
3060
|
- unzip
|
3061
|
+
default: ignore
|
3017
3062
|
cvs:
|
3018
3063
|
debian,ubuntu: cvs
|
3019
3064
|
fedora: cvs
|
3020
3065
|
darwin: cvs
|
3021
3066
|
arch: cvs
|
3022
3067
|
opensuse: cvs
|
3068
|
+
freebsd: cvs
|
3023
3069
|
pip:
|
3024
3070
|
debian,ubuntu: python-pip
|
3025
3071
|
arch: python2-pip
|
3026
3072
|
opensuse: python-pip
|
3027
3073
|
fedora: python-pip
|
3074
|
+
freebsd: pip
|
3028
3075
|
sudo:
|
3076
|
+
macos-brew: ignore
|
3029
3077
|
default: sudo
|
3030
3078
|
|
3031
3079
|
EODEFS
|
data/lib/autoproj/cmdline.rb
CHANGED
@@ -537,6 +537,16 @@ module Autoproj
|
|
537
537
|
# Returns the set of packages that are actually selected based on what
|
538
538
|
# the user gave on the command line
|
539
539
|
def self.resolve_user_selection(selected_packages, options = Hash.new)
|
540
|
+
if all_known_package?
|
541
|
+
result = PackageSelection.new
|
542
|
+
names = manifest.all_packages
|
543
|
+
names.delete_if { |pkg_name| manifest.excluded?(pkg_name) || manifest.ignored?(pkg_name) }
|
544
|
+
names.each do |pkg_name|
|
545
|
+
result.select(pkg_name, pkg_name)
|
546
|
+
end
|
547
|
+
return result
|
548
|
+
#return manifest.metapackages#.collect {|m| m[0] }
|
549
|
+
end
|
540
550
|
if selected_packages.empty?
|
541
551
|
return manifest.default_packages
|
542
552
|
end
|
@@ -773,13 +783,12 @@ module Autoproj
|
|
773
783
|
return all_enabled_packages
|
774
784
|
|
775
785
|
ensure
|
776
|
-
if !updated_packages.empty?
|
786
|
+
if Autoproj.config.import_log_enabled? && !updated_packages.empty? && Autoproj::Ops::Snapshot.update_log_available?(manifest)
|
777
787
|
failure_message =
|
778
788
|
if $!
|
779
789
|
" (#{$!.message.split("\n").first})"
|
780
790
|
end
|
781
791
|
ops = Ops::Snapshot.new(manifest, keep_going: true)
|
782
|
-
|
783
792
|
ops.update_package_import_state(
|
784
793
|
"#{$0} #{argv.join(" ")}#{failure_message}",
|
785
794
|
updated_packages)
|
@@ -831,6 +840,7 @@ module Autoproj
|
|
831
840
|
def self.manifest; Autoproj.manifest end
|
832
841
|
def self.only_status?; !!@only_status end
|
833
842
|
def self.only_local?; !!@only_local end
|
843
|
+
def self.all_known_package?; !!@all_known_package end
|
834
844
|
def self.reset?; !!@reset end
|
835
845
|
def self.check?; !!@check end
|
836
846
|
def self.manifest_update?; !!@manifest_update end
|
@@ -887,6 +897,7 @@ module Autoproj
|
|
887
897
|
def self.parse_arguments(args, with_mode = true, &additional_options)
|
888
898
|
@only_status = false
|
889
899
|
@only_local = false
|
900
|
+
@all_known_package = false
|
890
901
|
@show_osdeps = false
|
891
902
|
@status_exit_code = false
|
892
903
|
@revshow_osdeps = false
|
@@ -1054,6 +1065,9 @@ where 'mode' is one of:
|
|
1054
1065
|
opts.on("--local", "in status and update modes, do not access the network") do
|
1055
1066
|
@only_local = true
|
1056
1067
|
end
|
1068
|
+
opts.on("--all-known-packages", "handle all known packages that are defined by package-sets") do
|
1069
|
+
@all_known_package = true
|
1070
|
+
end
|
1057
1071
|
opts.on("--reset", "in update mode, reset the repositories to the state requested by the VCS configuration") do
|
1058
1072
|
@reset = true
|
1059
1073
|
end
|
@@ -167,6 +167,14 @@ module Autoproj
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
+
def import_log_enabled?
|
171
|
+
get('import_log_enabled', true)
|
172
|
+
end
|
173
|
+
|
174
|
+
def import_log_enabled=(value)
|
175
|
+
set('import_log_enabled', !!value)
|
176
|
+
end
|
177
|
+
|
170
178
|
def ruby_executable
|
171
179
|
@ruby_executable ||= OSDependencies.autodetect_ruby_program
|
172
180
|
end
|
data/lib/autoproj/default.osdeps
CHANGED
@@ -87,12 +87,13 @@ build-essential:
|
|
87
87
|
fedora: ["gcc-c++", make, glibc-devel]
|
88
88
|
darwin: ignore
|
89
89
|
opensuse: ["@devel_C_C++", "gcc-c++"]
|
90
|
+
default: clang
|
90
91
|
|
91
92
|
autobuild:
|
92
|
-
- gem: autobuild
|
93
|
+
- gem: autobuild<1.10
|
93
94
|
- osdep: readline
|
94
95
|
autoproj:
|
95
|
-
- gem: autoproj
|
96
|
+
- gem: autoproj<2.0
|
96
97
|
- osdep: readline
|
97
98
|
|
98
99
|
readline:
|
@@ -112,9 +113,10 @@ git:
|
|
112
113
|
gentoo: dev-vcs/git
|
113
114
|
arch: git
|
114
115
|
fedora: git
|
115
|
-
macos-port: git
|
116
|
+
macos-port: git
|
116
117
|
macos-brew: git
|
117
118
|
opensuse: git
|
119
|
+
freebsd: git
|
118
120
|
|
119
121
|
hg:
|
120
122
|
debian,ubuntu: mercurial
|
@@ -123,6 +125,7 @@ hg:
|
|
123
125
|
fedora: mercurial
|
124
126
|
darwin: mercurial
|
125
127
|
opensuse: mercurial
|
128
|
+
freebsd: mercurial
|
126
129
|
|
127
130
|
svn:
|
128
131
|
debian,ubuntu: subversion
|
@@ -131,6 +134,7 @@ svn:
|
|
131
134
|
fedora: subversion
|
132
135
|
darwin: subversion
|
133
136
|
opensuse: subversion
|
137
|
+
freebsd: subversion
|
134
138
|
|
135
139
|
cmake:
|
136
140
|
debian,ubuntu: cmake
|
@@ -139,6 +143,7 @@ cmake:
|
|
139
143
|
fedora: cmake
|
140
144
|
darwin: cmake
|
141
145
|
opensuse: cmake
|
146
|
+
freebsd: cmake
|
142
147
|
|
143
148
|
autotools:
|
144
149
|
debian,ubuntu:
|
@@ -159,6 +164,9 @@ autotools:
|
|
159
164
|
opensuse:
|
160
165
|
- automake
|
161
166
|
- autoconf
|
167
|
+
freebsd:
|
168
|
+
- automake
|
169
|
+
- autoconf
|
162
170
|
|
163
171
|
archive:
|
164
172
|
debian,ubuntu:
|
@@ -181,6 +189,7 @@ archive:
|
|
181
189
|
opensuse:
|
182
190
|
- tar
|
183
191
|
- unzip
|
192
|
+
default: ignore
|
184
193
|
|
185
194
|
cvs:
|
186
195
|
debian,ubuntu: cvs
|
@@ -188,15 +197,17 @@ cvs:
|
|
188
197
|
darwin: cvs
|
189
198
|
arch: cvs
|
190
199
|
opensuse: cvs
|
200
|
+
freebsd: cvs
|
191
201
|
|
192
202
|
pip:
|
193
203
|
debian,ubuntu: python-pip
|
194
204
|
arch: python2-pip
|
195
205
|
opensuse: python-pip
|
196
206
|
fedora: python-pip
|
207
|
+
freebsd: pip
|
197
208
|
|
198
209
|
sudo:
|
210
|
+
macos-brew: ignore
|
199
211
|
default: sudo
|
200
212
|
|
201
213
|
# vim: expandtab
|
202
|
-
|
data/lib/autoproj/gitorious.rb
CHANGED
@@ -52,7 +52,7 @@ module Autoproj
|
|
52
52
|
elsif !access_methods.has_key?(value)
|
53
53
|
raise Autoproj::InputError, "#{value} is not a known access method"
|
54
54
|
elsif disabled_methods.include?(value)
|
55
|
-
raise Autoproj::InputError, "#{
|
55
|
+
raise Autoproj::InputError, "#{value} is disabled on #{base_url}"
|
56
56
|
end
|
57
57
|
|
58
58
|
value
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -113,7 +113,7 @@ module Autoproj
|
|
113
113
|
attr_reader :metapackages
|
114
114
|
|
115
115
|
# The VCS object for the main configuration itself
|
116
|
-
|
116
|
+
attr_accessor :vcs
|
117
117
|
|
118
118
|
# The definition of all OS packages available on this installation
|
119
119
|
attr_reader :osdeps
|
@@ -141,6 +141,7 @@ module Autoproj
|
|
141
141
|
if Autoproj.has_config_key?('manifest_source')
|
142
142
|
@vcs = VCSDefinition.from_raw(Autoproj.user_config('manifest_source'))
|
143
143
|
end
|
144
|
+
@package_sets << LocalPackageSet.new(self, vcs)
|
144
145
|
end
|
145
146
|
|
146
147
|
|
@@ -209,6 +209,9 @@ module Autoproj
|
|
209
209
|
by_repository_id = Hash.new
|
210
210
|
by_name = Hash.new
|
211
211
|
|
212
|
+
required_remotes_dirs = Array.new
|
213
|
+
required_user_dirs = Array.new
|
214
|
+
|
212
215
|
queue = queue_auto_imports_if_needed(Array.new, root_pkg_set, root_pkg_set)
|
213
216
|
while !queue.empty?
|
214
217
|
vcs, options, imported_from = queue.shift
|
@@ -227,17 +230,28 @@ module Autoproj
|
|
227
230
|
end
|
228
231
|
by_repository_id[repository_id] = [vcs, imported_from]
|
229
232
|
|
233
|
+
# Make sure the package set has been already checked out to
|
234
|
+
# retrieve the actual name of the package set
|
230
235
|
if !vcs.local?
|
231
236
|
update_remote_package_set(vcs, only_local)
|
232
|
-
|
237
|
+
raw_local_dir = PackageSet.raw_local_dir_of(vcs)
|
238
|
+
required_remotes_dirs << raw_local_dir
|
233
239
|
end
|
234
|
-
|
235
240
|
name = PackageSet.name_of(manifest, vcs)
|
241
|
+
|
242
|
+
required_user_dirs = by_name.collect { |k,v| k }
|
243
|
+
Autoproj.debug "Trying to load package_set: #{name} from definition #{repository_id}"
|
244
|
+
Autoproj.debug "Already loaded package_sets are: #{required_user_dirs}"
|
245
|
+
|
236
246
|
if already_loaded = by_name[name]
|
237
247
|
already_loaded_pkg_set, already_loaded_vcs = *already_loaded
|
238
248
|
if already_loaded_vcs != vcs
|
239
249
|
if imported_from
|
240
|
-
Autoproj.warn "
|
250
|
+
Autoproj.warn "redundant auto-import by #{imported_from.name} for package set '#{name}'."
|
251
|
+
Autoproj.warn " A package set with the same name (#{name}) has already been imported from"
|
252
|
+
Autoproj.warn " #{already_loaded_vcs}"
|
253
|
+
Autoproj.warn " Skipping the following one: "
|
254
|
+
Autoproj.warn " #{vcs}"
|
241
255
|
else
|
242
256
|
Autoproj.warn "the manifest refers to a package set from #{vcs}, but a package set with the same name (#{name}) has already been imported from #{already_loaded_vcs}, I am skipping this one"
|
243
257
|
end
|
@@ -248,6 +262,8 @@ module Autoproj
|
|
248
262
|
imported_from.imports << already_loaded_pkg_set
|
249
263
|
end
|
250
264
|
next
|
265
|
+
else
|
266
|
+
create_remote_set_user_dir(vcs)
|
251
267
|
end
|
252
268
|
|
253
269
|
pkg_set = load_package_set(vcs, options, imported_from)
|
@@ -260,18 +276,20 @@ module Autoproj
|
|
260
276
|
queue_auto_imports_if_needed(queue, pkg_set, root_pkg_set)
|
261
277
|
end
|
262
278
|
|
263
|
-
cleanup_remotes_dir(package_sets)
|
264
|
-
cleanup_remotes_user_dir(package_sets)
|
279
|
+
cleanup_remotes_dir(package_sets, required_remotes_dirs)
|
280
|
+
cleanup_remotes_user_dir(package_sets, required_user_dirs)
|
265
281
|
package_sets
|
266
282
|
end
|
267
283
|
|
268
284
|
# Removes from {remotes_dir} the directories that do not match a package
|
269
285
|
# set
|
270
|
-
def cleanup_remotes_dir(package_sets = manifest.package_sets)
|
286
|
+
def cleanup_remotes_dir(package_sets = manifest.package_sets, required_remotes_dirs = Array.new)
|
271
287
|
# Cleanup the .remotes and remotes_symlinks_dir directories
|
272
288
|
Dir.glob(File.join(remotes_dir, '*')).each do |dir|
|
273
289
|
dir = File.expand_path(dir)
|
274
|
-
|
290
|
+
# Once a package set has been checked out during the process,
|
291
|
+
# keep it -- so that it won't be checked out again
|
292
|
+
if File.directory?(dir) && !required_remotes_dirs.include?(dir)
|
275
293
|
FileUtils.rm_rf dir
|
276
294
|
end
|
277
295
|
end
|
@@ -279,10 +297,11 @@ module Autoproj
|
|
279
297
|
|
280
298
|
# Removes from {remotes_user_dir} the directories that do not match a
|
281
299
|
# package set
|
282
|
-
def cleanup_remotes_user_dir(package_sets = manifest.package_sets)
|
300
|
+
def cleanup_remotes_user_dir(package_sets = manifest.package_sets, required_user_dirs = Array.new)
|
283
301
|
Dir.glob(File.join(remotes_user_dir, '*')).each do |file|
|
284
302
|
file = File.expand_path(file)
|
285
|
-
|
303
|
+
user_dir = File.basename(file)
|
304
|
+
if File.symlink?(file) && !required_user_dirs.include?(user_dir)
|
286
305
|
FileUtils.rm_f file
|
287
306
|
end
|
288
307
|
end
|
@@ -340,7 +359,7 @@ module Autoproj
|
|
340
359
|
Tools.load_main_initrb(manifest)
|
341
360
|
manifest.load(manifest_path)
|
342
361
|
|
343
|
-
root_pkg_set =
|
362
|
+
root_pkg_set = manifest.local_package_set
|
344
363
|
root_pkg_set.load_description_file
|
345
364
|
root_pkg_set.explicit = true
|
346
365
|
package_sets = load_and_update_package_sets(root_pkg_set, only_local)
|
@@ -88,6 +88,8 @@ module Autoproj
|
|
88
88
|
return args, reuse
|
89
89
|
end
|
90
90
|
|
91
|
+
MAIN_CONFIGURATION_TEMPLATE = File.expand_path(File.join("..", "..", "..", "samples", 'autoproj'), File.dirname(__FILE__))
|
92
|
+
|
91
93
|
def bootstrap(*args)
|
92
94
|
check_root_dir_empty
|
93
95
|
args, reuse = handle_bootstrap_options(args)
|
@@ -113,8 +115,7 @@ module Autoproj
|
|
113
115
|
# If we are not getting the installation setup from a VCS, copy the template
|
114
116
|
# files
|
115
117
|
if args.empty? || args.size == 1
|
116
|
-
|
117
|
-
FileUtils.cp_r File.join(sample_dir, "autoproj"), "autoproj"
|
118
|
+
FileUtils.cp_r MAIN_CONFIGURATION_TEMPLATE, "autoproj"
|
118
119
|
end
|
119
120
|
|
120
121
|
if args.size == 1 # the user asks us to download a manifest
|
@@ -30,6 +30,13 @@ module Autoproj
|
|
30
30
|
result
|
31
31
|
end
|
32
32
|
|
33
|
+
def self.update_log_available?(manifest)
|
34
|
+
new(manifest).import_state_log_package
|
35
|
+
true
|
36
|
+
rescue ArgumentError
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
33
40
|
def sort_versions(versions)
|
34
41
|
pkg_sets, pkgs = versions.partition { |vcs| vcs.keys.first =~ /^pkg_set:/ }
|
35
42
|
pkg_sets.sort_by { |vcs| vcs.keys.first } +
|
@@ -145,7 +152,17 @@ module Autoproj
|
|
145
152
|
# @return [Autobuild::Package] a package whose importer is
|
146
153
|
# {Autobuild::Git}
|
147
154
|
def import_state_log_package
|
148
|
-
manifest.main_package_set.create_autobuild_package
|
155
|
+
pkg = manifest.main_package_set.create_autobuild_package
|
156
|
+
if !pkg.importer
|
157
|
+
if Autobuild::Git.can_handle?(pkg.srcdir)
|
158
|
+
pkg.importer = Autobuild.git(pkg.srcdir)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
if !pkg.importer.kind_of?(Autobuild::Git)
|
163
|
+
raise ArgumentError, "cannot use autoproj auto-import feature if the main configuration is not managed under git"
|
164
|
+
end
|
165
|
+
pkg
|
149
166
|
end
|
150
167
|
|
151
168
|
def import_state_log_ref
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -355,6 +355,15 @@ fi
|
|
355
355
|
"emerge --noreplace '%s'")
|
356
356
|
end
|
357
357
|
end
|
358
|
+
# Package manager interface for systems that use pkg (i.e. FreeBSD) as
|
359
|
+
# their package manager
|
360
|
+
class PkgManager < ShellScriptManager
|
361
|
+
def initialize
|
362
|
+
super(['pkg'], true,
|
363
|
+
"pkg install -y '%s'",
|
364
|
+
"pkg install -y '%s'")
|
365
|
+
end
|
366
|
+
end
|
358
367
|
|
359
368
|
#Package manger for OpenSuse and Suse (untested)
|
360
369
|
class ZypperManager < ShellScriptManager
|
@@ -968,7 +977,8 @@ fi
|
|
968
977
|
PackageManagers::YumManager,
|
969
978
|
PackageManagers::PortManager,
|
970
979
|
PackageManagers::ZypperManager,
|
971
|
-
PackageManagers::PipManager
|
980
|
+
PackageManagers::PipManager ,
|
981
|
+
PackageManagers::PkgManager]
|
972
982
|
|
973
983
|
# Mapping from OS name to package manager name
|
974
984
|
#
|
@@ -988,7 +998,8 @@ fi
|
|
988
998
|
'fedora' => 'yum',
|
989
999
|
'macos-port' => 'macports',
|
990
1000
|
'macos-brew' => 'brew',
|
991
|
-
'opensuse' => 'zypper'
|
1001
|
+
'opensuse' => 'zypper',
|
1002
|
+
'freebsd' => 'pkg'
|
992
1003
|
}
|
993
1004
|
|
994
1005
|
# The information contained in the OSdeps files, as a hash
|
@@ -1195,6 +1206,9 @@ fi
|
|
1195
1206
|
version =~/.*VERSION\s+=\s+([^\s]+)/
|
1196
1207
|
version = $1
|
1197
1208
|
[['opensuse'], [version.strip]]
|
1209
|
+
elsif Autobuild.freebsd?
|
1210
|
+
version = `uname -r`.strip.split("-")[0]
|
1211
|
+
[['freebsd'],[version]]
|
1198
1212
|
end
|
1199
1213
|
end
|
1200
1214
|
|
@@ -1343,6 +1357,20 @@ fi
|
|
1343
1357
|
|
1344
1358
|
class InvalidRecursiveStatement < Autobuild::Exception; end
|
1345
1359
|
|
1360
|
+
# Return the path to the osdeps name for a given package name while
|
1361
|
+
# accounting for package aliases
|
1362
|
+
#
|
1363
|
+
# returns an array contain the path starting with name and
|
1364
|
+
# ending at the resolved name
|
1365
|
+
def self.resolve_name(name)
|
1366
|
+
path = [ name ]
|
1367
|
+
while OSDependencies.aliases.has_key?(name)
|
1368
|
+
name = OSDependencies.aliases[name]
|
1369
|
+
path << name
|
1370
|
+
end
|
1371
|
+
path
|
1372
|
+
end
|
1373
|
+
|
1346
1374
|
# Return the list of packages that should be installed for +name+
|
1347
1375
|
#
|
1348
1376
|
# The following two simple return values are possible:
|
@@ -1361,9 +1389,8 @@ fi
|
|
1361
1389
|
# name and version. The package list might be empty even if status ==
|
1362
1390
|
# FOUND_PACKAGES, for instance if the ignore keyword is used.
|
1363
1391
|
def resolve_package(name)
|
1364
|
-
|
1365
|
-
|
1366
|
-
end
|
1392
|
+
path = OSDependencies.resolve_name(name)
|
1393
|
+
name = path.last
|
1367
1394
|
|
1368
1395
|
os_names, os_versions = OSDependencies.operating_system
|
1369
1396
|
os_names = os_names.dup
|
@@ -1584,7 +1611,8 @@ fi
|
|
1584
1611
|
dependencies.each do |name|
|
1585
1612
|
result = resolve_package(name)
|
1586
1613
|
if !result
|
1587
|
-
|
1614
|
+
path = OSDependencies.resolve_name(name)
|
1615
|
+
raise MissingOSDep.new, "there is no osdeps definition for #{path.last} (search tree: #{path.join("->")})"
|
1588
1616
|
end
|
1589
1617
|
|
1590
1618
|
if result.empty?
|
data/lib/autoproj/test.rb
CHANGED
@@ -44,7 +44,17 @@ module Autoproj
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def setup
|
47
|
-
|
47
|
+
@tmpdir = Array.new
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_bootstrap
|
52
|
+
dir = Dir.mktmpdir
|
53
|
+
@tmpdir << dir
|
54
|
+
require 'autoproj/ops/main_config_switcher'
|
55
|
+
FileUtils.cp_r Ops::MainConfigSwitcher::MAIN_CONFIGURATION_TEMPLATE, File.join(dir, 'autoproj')
|
56
|
+
Autoproj.root_dir = dir
|
57
|
+
Autoproj.manifest = Manifest.load(File.join(dir, 'autoproj', 'manifest'))
|
48
58
|
end
|
49
59
|
|
50
60
|
def teardown
|
@@ -52,6 +62,9 @@ module Autoproj
|
|
52
62
|
flexmock_teardown
|
53
63
|
end
|
54
64
|
super
|
65
|
+
@tmpdir.each do |dir|
|
66
|
+
FileUtils.remove_entry_secure dir
|
67
|
+
end
|
55
68
|
Autobuild::Package.clear
|
56
69
|
end
|
57
70
|
end
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.2.b1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rock Core Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: autobuild
|
@@ -16,34 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.9.0
|
19
|
+
version: 1.9.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 1.10.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.9.0
|
29
|
+
version: 1.9.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 1.10.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: utilrb
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 2.0.0
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 3.0.0
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
47
|
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 2.0.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 3.0.0
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: highline
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,9 +247,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
241
247
|
version: 1.9.2
|
242
248
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
243
249
|
requirements:
|
244
|
-
- - "
|
250
|
+
- - ">"
|
245
251
|
- !ruby/object:Gem::Version
|
246
|
-
version:
|
252
|
+
version: 1.3.1
|
247
253
|
requirements: []
|
248
254
|
rubyforge_project:
|
249
255
|
rubygems_version: 2.2.2
|