autoproj 1.5.4 → 1.5.5
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 +27 -0
- data/doc/guide/src/autoproj_bootstrap +19 -8
- data/doc/guide/src/customization.page +9 -6
- data/doc/guide/src/error_messages.page +21 -1
- data/doc/guide/src/package_sets/autobuild.page +38 -0
- data/lib/autoproj/autobuild.rb +35 -0
- data/lib/autoproj/cmdline.rb +11 -2
- data/lib/autoproj/manifest.rb +80 -4
- data/lib/autoproj/osdeps.rb +19 -8
- data/lib/autoproj/version.rb +1 -1
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
= Version 1.5.5
|
2
|
+
* allow to exclude some packages on some architectures
|
3
|
+
|
4
|
+
Autobuild files can now contain
|
5
|
+
not_on 'os_name1', 'os_name2' do
|
6
|
+
...
|
7
|
+
end
|
8
|
+
statements that will exclude any package defined in
|
9
|
+
the do ... end block if the OS is listed in the OS
|
10
|
+
names
|
11
|
+
|
12
|
+
os_name is either a plain string, in which case it has to be the main
|
13
|
+
operating system name (e.g. 'unbuntu', 'debian', ...) or a [name, version]
|
14
|
+
array.
|
15
|
+
|
16
|
+
For instance:
|
17
|
+
|
18
|
+
not_on 'ubuntu', ['debian', 'squeeze'] do
|
19
|
+
cmake_package 'not_on_ubuntu_and_debian_testing'
|
20
|
+
end
|
21
|
+
|
22
|
+
If the user tries to build one of the disabled packages, he will get a proper
|
23
|
+
error message.
|
24
|
+
|
25
|
+
* Debian unstable is now recognized by 'sid' and/or 'unstable'. It previously
|
26
|
+
had to be called 'squeeze/sid' (for the current unstable)
|
27
|
+
|
1
28
|
= Version 1.5.4
|
2
29
|
* better error message when a dependency does not exist
|
3
30
|
|
@@ -140,7 +140,17 @@ module Autoproj
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
-
|
143
|
+
# Autodetects the operating system name and version
|
144
|
+
#
|
145
|
+
# +osname+ is the operating system name, all in lowercase (e.g. ubuntu,
|
146
|
+
# arch, gentoo, debian)
|
147
|
+
#
|
148
|
+
# +versions+ is a set of names that describe the OS version. It includes
|
149
|
+
# both the version number (as a string) and/or the codename if there is
|
150
|
+
# one.
|
151
|
+
#
|
152
|
+
# Examples: ['debian', ['sid', 'unstable']] or ['ubuntu', ['lucid lynx', '10.04']]
|
153
|
+
def self.operating_system
|
144
154
|
if @operating_system
|
145
155
|
return @operating_system
|
146
156
|
elsif data = os_from_lsb
|
@@ -155,17 +165,18 @@ module Autoproj
|
|
155
165
|
# Need to do some heuristics unfortunately
|
156
166
|
@operating_system =
|
157
167
|
if File.exists?('/etc/debian_version')
|
158
|
-
codename = File.read('/etc/debian_version').strip
|
159
|
-
|
168
|
+
codename = [File.read('/etc/debian_version').strip]
|
169
|
+
if codename.first =~ /sid/
|
170
|
+
codename << "unstable" << "sid"
|
171
|
+
end
|
172
|
+
['debian', codename]
|
160
173
|
elsif File.exists?('/etc/gentoo-release')
|
161
174
|
release_string = File.read('/etc/gentoo-release').strip
|
162
175
|
release_string =~ /^.*([^\s]+)$/
|
163
176
|
version = $1
|
164
177
|
['gentoo', [version]]
|
165
178
|
elsif File.exists?('/etc/arch-release')
|
166
|
-
|
167
|
-
puts "Found Arch"
|
168
|
-
['arch', [codename]]
|
179
|
+
['arch', []]
|
169
180
|
else
|
170
181
|
raise ConfigError, "Unknown operating system"
|
171
182
|
end
|
@@ -177,7 +188,7 @@ module Autoproj
|
|
177
188
|
@operating_system[1].map(&:downcase)]
|
178
189
|
end
|
179
190
|
|
180
|
-
def os_from_lsb
|
191
|
+
def self.os_from_lsb
|
181
192
|
has_lsb_release = `which lsb_release`
|
182
193
|
return unless $?.success?
|
183
194
|
|
@@ -209,7 +220,7 @@ module Autoproj
|
|
209
220
|
#
|
210
221
|
# Raises ConfigError if some packages can't be found
|
211
222
|
def resolve_os_dependencies(dependencies)
|
212
|
-
os_name, os_version = operating_system
|
223
|
+
os_name, os_version = OSDependencies.operating_system
|
213
224
|
if !OS_PACKAGE_INSTALL.has_key?(os_name)
|
214
225
|
raise ConfigError, "I don't know how to install packages on #{os_name}"
|
215
226
|
end
|
@@ -61,7 +61,7 @@ line, instead of package names:
|
|
61
61
|
autoproj build lib
|
62
62
|
{: .commandline}
|
63
63
|
|
64
|
-
Removing packages from the build
|
64
|
+
Removing packages from the build (<tt>exclude_packages</tt>) {#exclude_packages}
|
65
65
|
--------------------------------
|
66
66
|
Instead of having to list all packages that you do want to build, it is possible
|
67
67
|
to list the packages that you don't want to build. Simply list them in the
|
@@ -76,7 +76,10 @@ exclude_packages:
|
|
76
76
|
- pocosim-log
|
77
77
|
{coderay}
|
78
78
|
|
79
|
-
|
79
|
+
If another package, that should be built, depends on an excluded package, [an
|
80
|
+
error is generated](error_messages.html#exclusions)
|
81
|
+
|
82
|
+
Using packages that are already installed (<tt>ignore_packages</tt>)
|
80
83
|
-----------------------------------------
|
81
84
|
|
82
85
|
If some packages are already installed elsewhere, and you want to use that
|
@@ -95,10 +98,10 @@ ignore_packages:
|
|
95
98
|
- orocos/rtt
|
96
99
|
{coderay}
|
97
100
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
101
|
+
Unlike with <tt>exclude_packages</tt>, no error is generated for ignored
|
102
|
+
packages that are depended-upon by other packages in the build. This is because
|
103
|
+
ignore_packages is meant to list packages that are already installed outside of
|
104
|
+
autoproj, while exclude_packages lists what you do **not** want to have at all.
|
102
105
|
|
103
106
|
Local overrides of version control information
|
104
107
|
----------------------------------------------
|
@@ -1,6 +1,6 @@
|
|
1
1
|
---
|
2
2
|
title: Understanding autoproj error messages
|
3
|
-
sort_info:
|
3
|
+
sort_info: 90
|
4
4
|
---
|
5
5
|
|
6
6
|
I know nothing about a prepackaged package called 'XXXX', ...
|
@@ -15,3 +15,23 @@ manifest.xml](package_sets/manifest-xml.html) file. (ii)
|
|
15
15
|
the package should depend on it and you should list the OS package in [the
|
16
16
|
relevant osdeps file](package_sets/osdeps.html)
|
17
17
|
|
18
|
+
XXX depends on YYY, which is excluded from the build {#exclusions}
|
19
|
+
----------------------------------------------------
|
20
|
+
|
21
|
+
The layout requires the XXX package to be built, but this package depends on YYY
|
22
|
+
and YYY has explicitely been excluded from the build.
|
23
|
+
|
24
|
+
There are two cases.
|
25
|
+
|
26
|
+
In the first case, the package has been listed in [the exclude_packages section
|
27
|
+
of autoproj/manifest](customization.html#exclude_packages). So, you will have to
|
28
|
+
find out why and either remove it from there, or add XXX to the same section.
|
29
|
+
|
30
|
+
In the second case, the package is disabled on your operating system version.
|
31
|
+
This is done in the package set's autobuild files by using the [not_on and
|
32
|
+
only_on statements](package_sets/autobuild.html#not_on_and_only_on). You will
|
33
|
+
have to either exclude the XXX package as well (either by including it in the
|
34
|
+
same not_on/only_on block, or by adding it to [the exclude_packages section
|
35
|
+
of autoproj/manifest](customization.html#exclude_packages)), or to make it so
|
36
|
+
that YYY builds on your OS, an thus remove it from the not_on/only_on block.
|
37
|
+
|
@@ -112,6 +112,44 @@ The 'pkg' variable in the example above is an instance of
|
|
112
112
|
[Autobuild::Orogen](http://doudou.github.com/autobuild/Autobuild/Orogen.html)
|
113
113
|
{: .block}
|
114
114
|
|
115
|
+
OS-specific bits (<tt>not_on</tt> and <tt>only_on</tt>) {#not_on_and_only_on}
|
116
|
+
----------------
|
117
|
+
It is possible to have some parts of the autobuild file be OS-specific. Two
|
118
|
+
calls are made available for that.
|
119
|
+
|
120
|
+
First, if you know that some packages should not be built on some operating
|
121
|
+
systems, you should enclose their declaration in a 'not_on' statement. For
|
122
|
+
instance:
|
123
|
+
|
124
|
+
{coderay:: ruby}
|
125
|
+
not_on 'debian' do
|
126
|
+
cmake_package 'excluded_package'
|
127
|
+
end
|
128
|
+
{coderay}
|
129
|
+
|
130
|
+
It is additionally possible to select specific versions
|
131
|
+
|
132
|
+
{coderay:: ruby}
|
133
|
+
not_on 'debian', ['ubuntu', '10.04'] do
|
134
|
+
cmake_package 'excluded_package'
|
135
|
+
end
|
136
|
+
{coderay}
|
137
|
+
|
138
|
+
If, on the other hand, you want some bits to be available only **on** a specific
|
139
|
+
OS, use the only_on statement:
|
140
|
+
|
141
|
+
{coderay:: ruby}
|
142
|
+
only_on ['ubuntu', '10.04'] do
|
143
|
+
cmake_package 'only_ubuntu'
|
144
|
+
end
|
145
|
+
{coderay}
|
146
|
+
|
147
|
+
If the user tries to build a package that is excluded on his architecture, he
|
148
|
+
will get the following error message:
|
149
|
+
|
150
|
+
modules/dynamixel depends on drivers/dynamixel, which is excluded from the build: drivers/dynamixel is disabled on this operating system
|
151
|
+
{: .cmdline}
|
152
|
+
|
115
153
|
Custom package building
|
116
154
|
-----------------------
|
117
155
|
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -312,6 +312,41 @@ def orogen_package(options, &block)
|
|
312
312
|
end
|
313
313
|
end
|
314
314
|
|
315
|
+
# Declare that the packages declared in the block should not be built in the
|
316
|
+
# given operating system. OS descriptions are space-separated strings containing
|
317
|
+
# OS name and version.
|
318
|
+
#
|
319
|
+
# An error will occur if the user tries to build it on one of those
|
320
|
+
# architectures
|
321
|
+
def not_on(*architectures)
|
322
|
+
architectures = architectures.map do |name|
|
323
|
+
if name.respond_to?(:to_str)
|
324
|
+
[name]
|
325
|
+
else name
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
os = OSDependencies.operating_system
|
330
|
+
matching_archs = architectures.find_all { |arch| arch[0] == os[0] }
|
331
|
+
STDERR.puts matching_archs.inspect
|
332
|
+
if matching_archs.empty?
|
333
|
+
return yield
|
334
|
+
elsif matching_archs.all? { |arch| arch[1] && !os[1].include?(arch[1].downcase) }
|
335
|
+
return yield
|
336
|
+
end
|
337
|
+
|
338
|
+
# Simply get the current list of packages, yield the block, and exclude all
|
339
|
+
# packages that have been added
|
340
|
+
current_packages = Autobuild::Package.each(true).map(&:last).map(&:name).to_set
|
341
|
+
yield
|
342
|
+
new_packages = Autobuild::Package.each(true).map(&:last).map(&:name).to_set -
|
343
|
+
current_packages
|
344
|
+
|
345
|
+
new_packages.each do |pkg_name|
|
346
|
+
Autoproj.manifest.add_exclusion(pkg_name, "#{pkg_name} is disabled on this operating system")
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
315
350
|
# Defines an import-only package, i.e. a package that is simply checked out but
|
316
351
|
# not built in any way
|
317
352
|
def source_package(options)
|
data/lib/autoproj/cmdline.rb
CHANGED
@@ -304,8 +304,8 @@ module Autoproj
|
|
304
304
|
# them to the selected_packages set so that they get
|
305
305
|
# imported as well
|
306
306
|
pkg.dependencies.each do |dep_name|
|
307
|
-
if Autoproj.manifest.
|
308
|
-
raise ConfigError, "#{pkg.name} depends on #{dep_name}, which is
|
307
|
+
if reason = Autoproj.manifest.exclusion_reason(dep_name)
|
308
|
+
raise ConfigError, "#{pkg.name} depends on #{dep_name}, which is excluded from the build: #{reason}"
|
309
309
|
end
|
310
310
|
dep_pkg = Autobuild::Package[dep_name]
|
311
311
|
if !dep_pkg
|
@@ -440,6 +440,15 @@ where 'mode' is one of:
|
|
440
440
|
opts.on("--[no-]update", "[do not] update already checked-out packages (build modes only)") do |value|
|
441
441
|
do_update = value
|
442
442
|
end
|
443
|
+
opts.on("--os", "displays the operating system as detected by autoproj") do
|
444
|
+
os = OSDependencies.operating_system
|
445
|
+
puts "name: #{os[0]}"
|
446
|
+
puts "version:"
|
447
|
+
os[1].each do |version_name|
|
448
|
+
puts " #{version_name}"
|
449
|
+
end
|
450
|
+
exit 0
|
451
|
+
end
|
443
452
|
|
444
453
|
opts.on("--[no-]osdeps", "[do not] install prepackaged dependencies (build and update modes only)") do |value|
|
445
454
|
update_os_dependencies = value
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -204,6 +204,13 @@ module Autoproj
|
|
204
204
|
!File.exists?(File.join(raw_local_dir, "init.rb"))
|
205
205
|
end
|
206
206
|
|
207
|
+
# Remote sources can be accessed through a hidden directory in
|
208
|
+
# $AUTOPROJ_ROOT/.remotes, or through a symbolic link in
|
209
|
+
# autoproj/remotes/
|
210
|
+
#
|
211
|
+
# This returns the former. See #user_local_dir for the latter.
|
212
|
+
#
|
213
|
+
# For local sources, is simply returns the path to the source directory.
|
207
214
|
def raw_local_dir
|
208
215
|
if local?
|
209
216
|
return vcs.url
|
@@ -212,6 +219,13 @@ module Autoproj
|
|
212
219
|
end
|
213
220
|
end
|
214
221
|
|
222
|
+
# Remote sources can be accessed through a hidden directory in
|
223
|
+
# $AUTOPROJ_ROOT/.remotes, or through a symbolic link in
|
224
|
+
# autoproj/remotes/
|
225
|
+
#
|
226
|
+
# This returns the latter. See #raw_local_dir for the former.
|
227
|
+
#
|
228
|
+
# For local sources, is simply returns the path to the source directory.
|
215
229
|
def user_local_dir
|
216
230
|
if local?
|
217
231
|
return vcs.url
|
@@ -247,6 +261,10 @@ module Autoproj
|
|
247
261
|
end
|
248
262
|
end
|
249
263
|
|
264
|
+
# Loads the source.yml file, validates it and returns it as a hash
|
265
|
+
#
|
266
|
+
# Raises InternalError if the source has not been checked out yet (it
|
267
|
+
# should have), and ConfigError if the source.yml file is not valid.
|
250
268
|
def raw_description_file
|
251
269
|
if !present?
|
252
270
|
raise InternalError, "source #{vcs} has not been fetched yet, cannot load description for it"
|
@@ -284,6 +302,7 @@ module Autoproj
|
|
284
302
|
rescue InternalError
|
285
303
|
end
|
286
304
|
|
305
|
+
# Path to the source.yml file
|
287
306
|
def source_file
|
288
307
|
File.join(local_dir, 'source.yml')
|
289
308
|
end
|
@@ -357,7 +376,8 @@ module Autoproj
|
|
357
376
|
data
|
358
377
|
end
|
359
378
|
|
360
|
-
# Returns the default importer for this package set
|
379
|
+
# Returns the default importer definition for this package set, as a
|
380
|
+
# VCSDefinition instance
|
361
381
|
def default_importer
|
362
382
|
importer_definition_for('default')
|
363
383
|
end
|
@@ -452,13 +472,19 @@ module Autoproj
|
|
452
472
|
raise ConfigError, "#{e.message} in #{source_file}", e.backtrace
|
453
473
|
end
|
454
474
|
|
475
|
+
# Returns the VCS definition for +package_name+ as defined in this
|
476
|
+
# source, or nil if the source does not have any.
|
477
|
+
#
|
478
|
+
# The definition is an instance of VCSDefinition
|
455
479
|
def importer_definition_for(package_name)
|
456
|
-
vcs_spec = version_control_field(package_name, '
|
480
|
+
vcs_spec = version_control_field(package_name, 'version_control')
|
457
481
|
if vcs_spec
|
458
482
|
Autoproj.normalize_vcs_definition(vcs_spec)
|
459
483
|
end
|
460
484
|
end
|
461
485
|
|
486
|
+
# Enumerates the Autobuild::Package instances that are defined in this
|
487
|
+
# source
|
462
488
|
def each_package
|
463
489
|
if !block_given?
|
464
490
|
return enum_for(:each_package)
|
@@ -472,6 +498,7 @@ module Autoproj
|
|
472
498
|
end
|
473
499
|
end
|
474
500
|
|
501
|
+
# Specialization of the Source class for the overrides listed in autoproj/
|
475
502
|
class LocalSource < Source
|
476
503
|
def initialize
|
477
504
|
super(Autoproj.normalize_vcs_definition(:type => 'local', :url => Autoproj.config_dir))
|
@@ -511,8 +538,16 @@ module Autoproj
|
|
511
538
|
|
512
539
|
PackageDefinition = Struct.new :autobuild, :user_block, :package_set, :file
|
513
540
|
|
541
|
+
# The Manifest class represents the information included in the main
|
542
|
+
# manifest file, and allows to manipulate it
|
514
543
|
class Manifest
|
515
544
|
FakePackage = Struct.new :text_name, :name, :srcdir, :importer, :updated
|
545
|
+
|
546
|
+
# Data structure used to use autobuild importers without a package, to
|
547
|
+
# import configuration data.
|
548
|
+
#
|
549
|
+
# It has to match the interface of Autobuild::Package that is relevant
|
550
|
+
# for importers
|
516
551
|
class FakePackage
|
517
552
|
def autoproj_name; name end
|
518
553
|
def import
|
@@ -543,6 +578,8 @@ module Autoproj
|
|
543
578
|
explicit_selection && explicit_selection.include?(pkg_name)
|
544
579
|
end
|
545
580
|
|
581
|
+
# Loads the manifest file located at +file+ and returns the Manifest
|
582
|
+
# instance that represents it
|
546
583
|
def self.load(file)
|
547
584
|
begin
|
548
585
|
data = YAML.load(File.read(file))
|
@@ -564,8 +601,11 @@ module Autoproj
|
|
564
601
|
# A mapping from package names into PackageManifest objects
|
565
602
|
attr_reader :package_manifests
|
566
603
|
|
604
|
+
# The path to the manifest file that has been loaded
|
567
605
|
attr_reader :file
|
568
606
|
|
607
|
+
# True if autoproj should run an update automatically when the user
|
608
|
+
# uses" build"
|
569
609
|
def auto_update?
|
570
610
|
!!data['auto_update']
|
571
611
|
end
|
@@ -575,6 +615,7 @@ module Autoproj
|
|
575
615
|
@data = data
|
576
616
|
@packages = Hash.new
|
577
617
|
@package_manifests = Hash.new
|
618
|
+
@automatic_exclusions = Hash.new
|
578
619
|
|
579
620
|
if Autoproj.has_config_key?('manifest_source')
|
580
621
|
@vcs = Autoproj.normalize_vcs_definition(Autoproj.user_config('manifest_source'))
|
@@ -592,14 +633,47 @@ module Autoproj
|
|
592
633
|
false
|
593
634
|
end
|
594
635
|
end
|
636
|
+
|
637
|
+
# The set of package names that are listed in the excluded_packages
|
638
|
+
# section of the manifest
|
639
|
+
def manifest_exclusions
|
640
|
+
data['exclude_packages'] || Set.new
|
641
|
+
end
|
642
|
+
|
643
|
+
# A package_name => reason map of the exclusions added with #add_exclusion.
|
644
|
+
# Exclusions listed in the manifest file are returned by #manifest_exclusions
|
645
|
+
attr_reader :automatic_exclusions
|
646
|
+
|
647
|
+
# Exclude +package_name+ from the build. +reason+ is a string describing
|
648
|
+
# why the package is to be excluded.
|
649
|
+
def add_exclusion(package_name, reason)
|
650
|
+
automatic_exclusions[package_name] = reason
|
651
|
+
end
|
652
|
+
|
653
|
+
# If +package_name+ is excluded from the build, returns a string that
|
654
|
+
# tells why. Otherwise, returns nil
|
655
|
+
#
|
656
|
+
# Packages can either be excluded because their name is listed in the
|
657
|
+
# excluded_packages section of the manifest, or because they are
|
658
|
+
# disabled on this particular operating system.
|
659
|
+
def exclusion_reason(package_name)
|
660
|
+
if manifest_exclusions.any? { |l| Regexp.new(l) =~ package_name }
|
661
|
+
"#{package_name} is listed in the excluded_packages section of the manifest"
|
662
|
+
else
|
663
|
+
automatic_exclusions[package_name]
|
664
|
+
end
|
665
|
+
end
|
666
|
+
|
595
667
|
# True if the given package should not be built and its dependencies
|
596
668
|
# should be considered as met.
|
597
669
|
#
|
598
670
|
# This is useful to avoid building packages that are of no use for the
|
599
671
|
# user.
|
600
672
|
def excluded?(package_name)
|
601
|
-
if
|
602
|
-
|
673
|
+
if manifest_exclusions.any? { |l| Regexp.new(l) =~ package_name }
|
674
|
+
true
|
675
|
+
elsif automatic_exclusions.any? { |pkg_name, | pkg_name == package_name }
|
676
|
+
true
|
603
677
|
else
|
604
678
|
false
|
605
679
|
end
|
@@ -631,6 +705,7 @@ module Autoproj
|
|
631
705
|
end
|
632
706
|
end
|
633
707
|
|
708
|
+
# Yields each osdeps definition files that are present in our sources
|
634
709
|
def each_osdeps_file
|
635
710
|
if !block_given?
|
636
711
|
return enum_for(:each_source_file)
|
@@ -643,6 +718,7 @@ module Autoproj
|
|
643
718
|
end
|
644
719
|
end
|
645
720
|
|
721
|
+
# True if some of the sources are remote sources
|
646
722
|
def has_remote_sources?
|
647
723
|
each_remote_source(false).any? { true }
|
648
724
|
end
|
data/lib/autoproj/osdeps.rb
CHANGED
@@ -73,7 +73,17 @@ module Autoproj
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
|
76
|
+
# Autodetects the operating system name and version
|
77
|
+
#
|
78
|
+
# +osname+ is the operating system name, all in lowercase (e.g. ubuntu,
|
79
|
+
# arch, gentoo, debian)
|
80
|
+
#
|
81
|
+
# +versions+ is a set of names that describe the OS version. It includes
|
82
|
+
# both the version number (as a string) and/or the codename if there is
|
83
|
+
# one.
|
84
|
+
#
|
85
|
+
# Examples: ['debian', ['sid', 'unstable']] or ['ubuntu', ['lucid lynx', '10.04']]
|
86
|
+
def self.operating_system
|
77
87
|
if @operating_system
|
78
88
|
return @operating_system
|
79
89
|
elsif data = os_from_lsb
|
@@ -88,17 +98,18 @@ module Autoproj
|
|
88
98
|
# Need to do some heuristics unfortunately
|
89
99
|
@operating_system =
|
90
100
|
if File.exists?('/etc/debian_version')
|
91
|
-
codename = File.read('/etc/debian_version').strip
|
92
|
-
|
101
|
+
codename = [File.read('/etc/debian_version').strip]
|
102
|
+
if codename.first =~ /sid/
|
103
|
+
codename << "unstable" << "sid"
|
104
|
+
end
|
105
|
+
['debian', codename]
|
93
106
|
elsif File.exists?('/etc/gentoo-release')
|
94
107
|
release_string = File.read('/etc/gentoo-release').strip
|
95
108
|
release_string =~ /^.*([^\s]+)$/
|
96
109
|
version = $1
|
97
110
|
['gentoo', [version]]
|
98
111
|
elsif File.exists?('/etc/arch-release')
|
99
|
-
|
100
|
-
puts "Found Arch"
|
101
|
-
['arch', [codename]]
|
112
|
+
['arch', []]
|
102
113
|
else
|
103
114
|
raise ConfigError, "Unknown operating system"
|
104
115
|
end
|
@@ -110,7 +121,7 @@ module Autoproj
|
|
110
121
|
@operating_system[1].map(&:downcase)]
|
111
122
|
end
|
112
123
|
|
113
|
-
def os_from_lsb
|
124
|
+
def self.os_from_lsb
|
114
125
|
has_lsb_release = `which lsb_release`
|
115
126
|
return unless $?.success?
|
116
127
|
|
@@ -142,7 +153,7 @@ module Autoproj
|
|
142
153
|
#
|
143
154
|
# Raises ConfigError if some packages can't be found
|
144
155
|
def resolve_os_dependencies(dependencies)
|
145
|
-
os_name, os_version = operating_system
|
156
|
+
os_name, os_version = OSDependencies.operating_system
|
146
157
|
if !OS_PACKAGE_INSTALL.has_key?(os_name)
|
147
158
|
raise ConfigError, "I don't know how to install packages on #{os_name}"
|
148
159
|
end
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 1.5.
|
8
|
+
- 5
|
9
|
+
version: 1.5.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sylvain Joyeux
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-16 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|