autoproj 1.1.1 → 1.1.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 +5 -0
- data/Rakefile +10 -0
- data/bin/autoproj +7 -0
- data/doc/guide/src/autoproj_bootstrap +46 -20
- data/lib/autoproj/default.osdeps +13 -12
- data/lib/autoproj/osdeps.rb +32 -7
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
= Version 1.1.2
|
2
|
+
* fix version detection on Debian, lsb-release cannot be trusted there.
|
3
|
+
* update already installed Gem
|
4
|
+
* update autobuild and autoproj themselves if needed
|
5
|
+
|
1
6
|
= Version 1.1.1
|
2
7
|
* better general error reporting
|
3
8
|
* small fixes w.r.t. bootstrapping
|
data/Rakefile
CHANGED
@@ -25,6 +25,16 @@ begin
|
|
25
25
|
['rdoc', '>= 2.4.0']
|
26
26
|
end
|
27
27
|
|
28
|
+
Rake.clear_tasks(/dist:publish_docs/)
|
29
|
+
task 'publish_docs' => 'doc' do
|
30
|
+
if !system('doc/update_github')
|
31
|
+
raise "cannot update the gh-pages branch for GitHub"
|
32
|
+
end
|
33
|
+
if !system('git', 'push', 'origin', 'gh-pages')
|
34
|
+
raise "cannot push the documentation"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
28
38
|
desc "generate the bootstrap script"
|
29
39
|
task 'bootstrap' do
|
30
40
|
osdeps_code = File.read(File.join(Dir.pwd, 'lib', 'autoproj', 'osdeps.rb'))
|
data/bin/autoproj
CHANGED
@@ -297,6 +297,13 @@ begin
|
|
297
297
|
Autobuild::Reporting << MailReporter.new(mail_config)
|
298
298
|
end
|
299
299
|
|
300
|
+
# First things first, see if we need to update ourselves
|
301
|
+
osdeps = Autoproj::OSDependencies.load_default
|
302
|
+
if osdeps.install(%w{autobuild autoproj})
|
303
|
+
# We updated autobuild or autoproj themselves ... Restart !
|
304
|
+
exec($0, *ARGV)
|
305
|
+
end
|
306
|
+
|
300
307
|
manifest_path = File.join(Autoproj.config_dir, 'manifest')
|
301
308
|
# Load the installation's manifest a first time, to check if we should
|
302
309
|
# update it ... We assume that the OS dependencies for this VCS is already
|
@@ -63,8 +63,14 @@ module Autoproj
|
|
63
63
|
if @operating_system
|
64
64
|
return @operating_system
|
65
65
|
elsif data = os_from_lsb
|
66
|
-
|
67
|
-
|
66
|
+
if data[0] != "debian"
|
67
|
+
# Fall back to reading debian_version, as
|
68
|
+
# sid is listed as lenny by lsb-release
|
69
|
+
@operating_system = data
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
if !@operating_system
|
68
74
|
# Need to do some heuristics unfortunately
|
69
75
|
@operating_system =
|
70
76
|
if File.exists?('/etc/debian_version')
|
@@ -84,9 +90,9 @@ module Autoproj
|
|
84
90
|
def os_from_lsb
|
85
91
|
distributor = `lsb_release -i -s`
|
86
92
|
return unless $?.success?
|
87
|
-
distributor = distributor.chomp
|
88
|
-
codename = `lsb_release -c -s`.chomp
|
89
|
-
version = `lsb_release -r -s`.chomp
|
93
|
+
distributor = distributor.chomp.downcase
|
94
|
+
codename = `lsb_release -c -s`.chomp.downcase
|
95
|
+
version = `lsb_release -r -s`.chomp.downcase
|
90
96
|
|
91
97
|
return [distributor, [codename, version]]
|
92
98
|
end
|
@@ -184,6 +190,8 @@ module Autoproj
|
|
184
190
|
def install(packages)
|
185
191
|
osdeps, gems = partition_packages(packages)
|
186
192
|
|
193
|
+
did_something = false
|
194
|
+
|
187
195
|
# Ideally, we would feed the OS dependencies to rosdep.
|
188
196
|
# Unfortunately, this is C++ code and I don't want to install the
|
189
197
|
# whole ROS stack just for rosdep ...
|
@@ -200,18 +208,31 @@ module Autoproj
|
|
200
208
|
File.open('osdeps.sh', 'w') do |file|
|
201
209
|
file.write shell_script
|
202
210
|
end
|
211
|
+
Autobuild.progress "installing/updating OS dependencies: #{osdeps.join(", ")}"
|
203
212
|
begin
|
204
213
|
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'bash', './osdeps.sh'
|
205
214
|
ensure
|
206
215
|
FileUtils.rm_f 'osdeps.sh'
|
207
216
|
end
|
217
|
+
did_something ||= true
|
208
218
|
end
|
209
219
|
|
210
220
|
# Don't install gems that are already there ...
|
211
221
|
gems.delete_if do |name|
|
212
222
|
version_requirements = Gem::Requirement.default
|
213
|
-
|
214
|
-
!
|
223
|
+
installed = Gem.source_index.find_name(name, version_requirements)
|
224
|
+
if !installed.empty? && Autobuild.do_update
|
225
|
+
# Look if we can update the package ...
|
226
|
+
dep = Gem::Dependency.new(name, version_requirements)
|
227
|
+
remote = Gem::SpecFetcher.fetcher
|
228
|
+
available = remote.find_matching(dep)
|
229
|
+
installed_version = installed.map(&:version).max
|
230
|
+
available_version = available.map { |(name, v), source| v }.max
|
231
|
+
needs_update = (available_version > installed_version)
|
232
|
+
!needs_update
|
233
|
+
else
|
234
|
+
!installed.empty?
|
235
|
+
end
|
215
236
|
end
|
216
237
|
|
217
238
|
# Now install what is left
|
@@ -220,8 +241,12 @@ module Autoproj
|
|
220
241
|
STDERR.puts "Installing rubygems dependencies with"
|
221
242
|
STDERR.puts "gem install #{gems.join(" ")}"
|
222
243
|
end
|
244
|
+
Autobuild.progress "installing/updating RubyGems dependencies: #{gems.join(", ")}"
|
223
245
|
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'gem', 'install', *gems
|
246
|
+
did_something ||= true
|
224
247
|
end
|
248
|
+
|
249
|
+
did_something
|
225
250
|
end
|
226
251
|
end
|
227
252
|
end
|
@@ -232,45 +257,46 @@ DEFS = <<EODEFS
|
|
232
257
|
# The following definitions are needed to bootstrap autoproj
|
233
258
|
ruby:
|
234
259
|
debian,ubuntu:
|
235
|
-
9.04,
|
260
|
+
9.04,squeeze/sid:
|
236
261
|
- ruby1.8-dev
|
237
262
|
- ruby1.8
|
238
263
|
- libopenssl-ruby1.8
|
239
264
|
|
240
265
|
build-essential:
|
241
266
|
debian,ubuntu:
|
242
|
-
9.04,
|
267
|
+
9.04,squeeze/sid: build-essential
|
243
268
|
|
244
269
|
libxml2:
|
245
270
|
debian,ubuntu:
|
246
|
-
9.04,
|
271
|
+
9.04,squeeze/sid: libxml2-dev
|
247
272
|
libxslt:
|
248
273
|
debian,ubuntu:
|
249
|
-
9.04,
|
274
|
+
9.04,squeeze/sid: libxslt1-dev
|
250
275
|
|
276
|
+
autobuild: gem
|
251
277
|
autoproj: gem
|
252
278
|
|
253
279
|
# The following definitions are for the VCS and build systems
|
254
280
|
git:
|
255
|
-
debian,ubuntu:
|
256
|
-
9.04,lenny: git-core
|
281
|
+
debian,ubuntu: git-core
|
257
282
|
|
258
283
|
svn:
|
259
|
-
debian,ubuntu:
|
260
|
-
9.04,lenny: svn
|
284
|
+
debian,ubuntu: svn
|
261
285
|
|
262
286
|
cmake:
|
263
|
-
debian,ubuntu:
|
264
|
-
9.04,lenny: cmake
|
287
|
+
debian,ubuntu: cmake
|
265
288
|
|
266
289
|
autotools:
|
267
|
-
debian,ubuntu:
|
268
|
-
|
290
|
+
debian,ubuntu: [automake1.9, autoconf]
|
291
|
+
|
292
|
+
lsb_release:
|
293
|
+
debian,ubuntu: lsb-release
|
294
|
+
|
269
295
|
|
270
296
|
|
271
297
|
EODEFS
|
272
298
|
|
273
|
-
PACKAGES = %w{ruby libxml2 libxslt build-essential}
|
299
|
+
PACKAGES = %w{ruby libxml2 libxslt build-essential lsb_release}
|
274
300
|
USER_PACKAGES = %w{autoproj}
|
275
301
|
|
276
302
|
packages = PACKAGES.dup
|
data/lib/autoproj/default.osdeps
CHANGED
@@ -1,38 +1,39 @@
|
|
1
1
|
# The following definitions are needed to bootstrap autoproj
|
2
2
|
ruby:
|
3
3
|
debian,ubuntu:
|
4
|
-
9.04,
|
4
|
+
9.04,squeeze/sid:
|
5
5
|
- ruby1.8-dev
|
6
6
|
- ruby1.8
|
7
7
|
- libopenssl-ruby1.8
|
8
8
|
|
9
9
|
build-essential:
|
10
10
|
debian,ubuntu:
|
11
|
-
9.04,
|
11
|
+
9.04,squeeze/sid: build-essential
|
12
12
|
|
13
13
|
libxml2:
|
14
14
|
debian,ubuntu:
|
15
|
-
9.04,
|
15
|
+
9.04,squeeze/sid: libxml2-dev
|
16
16
|
libxslt:
|
17
17
|
debian,ubuntu:
|
18
|
-
9.04,
|
18
|
+
9.04,squeeze/sid: libxslt1-dev
|
19
19
|
|
20
|
+
autobuild: gem
|
20
21
|
autoproj: gem
|
21
22
|
|
22
23
|
# The following definitions are for the VCS and build systems
|
23
24
|
git:
|
24
|
-
debian,ubuntu:
|
25
|
-
9.04,lenny: git-core
|
25
|
+
debian,ubuntu: git-core
|
26
26
|
|
27
27
|
svn:
|
28
|
-
debian,ubuntu:
|
29
|
-
9.04,lenny: svn
|
28
|
+
debian,ubuntu: svn
|
30
29
|
|
31
30
|
cmake:
|
32
|
-
debian,ubuntu:
|
33
|
-
9.04,lenny: cmake
|
31
|
+
debian,ubuntu: cmake
|
34
32
|
|
35
33
|
autotools:
|
36
|
-
debian,ubuntu:
|
37
|
-
|
34
|
+
debian,ubuntu: [automake1.9, autoconf]
|
35
|
+
|
36
|
+
lsb_release:
|
37
|
+
debian,ubuntu: lsb-release
|
38
|
+
|
38
39
|
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -29,8 +29,14 @@ module Autoproj
|
|
29
29
|
if @operating_system
|
30
30
|
return @operating_system
|
31
31
|
elsif data = os_from_lsb
|
32
|
-
|
33
|
-
|
32
|
+
if data[0] != "debian"
|
33
|
+
# Fall back to reading debian_version, as
|
34
|
+
# sid is listed as lenny by lsb-release
|
35
|
+
@operating_system = data
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
if !@operating_system
|
34
40
|
# Need to do some heuristics unfortunately
|
35
41
|
@operating_system =
|
36
42
|
if File.exists?('/etc/debian_version')
|
@@ -50,9 +56,9 @@ module Autoproj
|
|
50
56
|
def os_from_lsb
|
51
57
|
distributor = `lsb_release -i -s`
|
52
58
|
return unless $?.success?
|
53
|
-
distributor = distributor.chomp
|
54
|
-
codename = `lsb_release -c -s`.chomp
|
55
|
-
version = `lsb_release -r -s`.chomp
|
59
|
+
distributor = distributor.chomp.downcase
|
60
|
+
codename = `lsb_release -c -s`.chomp.downcase
|
61
|
+
version = `lsb_release -r -s`.chomp.downcase
|
56
62
|
|
57
63
|
return [distributor, [codename, version]]
|
58
64
|
end
|
@@ -150,6 +156,8 @@ module Autoproj
|
|
150
156
|
def install(packages)
|
151
157
|
osdeps, gems = partition_packages(packages)
|
152
158
|
|
159
|
+
did_something = false
|
160
|
+
|
153
161
|
# Ideally, we would feed the OS dependencies to rosdep.
|
154
162
|
# Unfortunately, this is C++ code and I don't want to install the
|
155
163
|
# whole ROS stack just for rosdep ...
|
@@ -166,18 +174,31 @@ module Autoproj
|
|
166
174
|
File.open('osdeps.sh', 'w') do |file|
|
167
175
|
file.write shell_script
|
168
176
|
end
|
177
|
+
Autobuild.progress "installing/updating OS dependencies: #{osdeps.join(", ")}"
|
169
178
|
begin
|
170
179
|
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'bash', './osdeps.sh'
|
171
180
|
ensure
|
172
181
|
FileUtils.rm_f 'osdeps.sh'
|
173
182
|
end
|
183
|
+
did_something ||= true
|
174
184
|
end
|
175
185
|
|
176
186
|
# Don't install gems that are already there ...
|
177
187
|
gems.delete_if do |name|
|
178
188
|
version_requirements = Gem::Requirement.default
|
179
|
-
|
180
|
-
!
|
189
|
+
installed = Gem.source_index.find_name(name, version_requirements)
|
190
|
+
if !installed.empty? && Autobuild.do_update
|
191
|
+
# Look if we can update the package ...
|
192
|
+
dep = Gem::Dependency.new(name, version_requirements)
|
193
|
+
remote = Gem::SpecFetcher.fetcher
|
194
|
+
available = remote.find_matching(dep)
|
195
|
+
installed_version = installed.map(&:version).max
|
196
|
+
available_version = available.map { |(name, v), source| v }.max
|
197
|
+
needs_update = (available_version > installed_version)
|
198
|
+
!needs_update
|
199
|
+
else
|
200
|
+
!installed.empty?
|
201
|
+
end
|
181
202
|
end
|
182
203
|
|
183
204
|
# Now install what is left
|
@@ -186,8 +207,12 @@ module Autoproj
|
|
186
207
|
STDERR.puts "Installing rubygems dependencies with"
|
187
208
|
STDERR.puts "gem install #{gems.join(" ")}"
|
188
209
|
end
|
210
|
+
Autobuild.progress "installing/updating RubyGems dependencies: #{gems.join(", ")}"
|
189
211
|
Autobuild::Subprocess.run 'autoproj', 'osdeps', 'gem', 'install', *gems
|
212
|
+
did_something ||= true
|
190
213
|
end
|
214
|
+
|
215
|
+
did_something
|
191
216
|
end
|
192
217
|
end
|
193
218
|
end
|
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.1.
|
4
|
+
version: 1.1.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: 2009-10-
|
12
|
+
date: 2009-10-20 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|