autobuild 1.5.30 → 1.5.31
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/Changes.txt +8 -0
- data/lib/autobuild/import/git.rb +7 -1
- data/lib/autobuild/importer.rb +55 -11
- data/lib/autobuild/package.rb +8 -4
- data/lib/autobuild/packages/cmake.rb +6 -1
- data/lib/autobuild/packages/orogen.rb +12 -2
- data/lib/autobuild/reporting.rb +1 -1
- data/lib/autobuild/version.rb +1 -1
- metadata +8 -24
data/Changes.txt
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
== Version 1.5.31
|
|
2
|
+
* allow to override the type export policy for oroGen >= 1.1
|
|
3
|
+
* allow to provide CMAKE_MODULE_PATH in the cmake handler. Unfortunately, cmake
|
|
4
|
+
does not support setting this through environment variables, so we have to
|
|
5
|
+
pass it as -D
|
|
6
|
+
* make ignore_errors work for updates as well. We obviously still have to fail
|
|
7
|
+
on checkout
|
|
8
|
+
|
|
1
9
|
== Version 1.5.30
|
|
2
10
|
* make the autotools handler behave more normally, calling "configure" without
|
|
3
11
|
--no-create and not calling config.status before make by default. The old
|
data/lib/autobuild/import/git.rb
CHANGED
|
@@ -184,7 +184,12 @@ module Autobuild
|
|
|
184
184
|
remote_commit = `git show-ref -s refs/heads/#{local_branch}`.chomp
|
|
185
185
|
end
|
|
186
186
|
else
|
|
187
|
-
remote_commit =
|
|
187
|
+
remote_commit =
|
|
188
|
+
begin fetch_remote(package)
|
|
189
|
+
rescue Exception => e
|
|
190
|
+
fallback(e, package, :status, package, only_local)
|
|
191
|
+
end
|
|
192
|
+
|
|
188
193
|
if !remote_commit
|
|
189
194
|
return
|
|
190
195
|
end
|
|
@@ -197,6 +202,7 @@ module Autobuild
|
|
|
197
202
|
end
|
|
198
203
|
status
|
|
199
204
|
end
|
|
205
|
+
|
|
200
206
|
end
|
|
201
207
|
|
|
202
208
|
# Checks if the current branch is the target branch. Expects that the
|
data/lib/autobuild/importer.rb
CHANGED
|
@@ -6,6 +6,29 @@ require 'autobuild/exceptions'
|
|
|
6
6
|
# after the import can be given in the +:patches+ option.
|
|
7
7
|
module Autobuild
|
|
8
8
|
class Importer
|
|
9
|
+
# call-seq:
|
|
10
|
+
# Autobuild::Importer.fallback { |package, importer| ... }
|
|
11
|
+
#
|
|
12
|
+
# If called, registers the given block as a fallback mechanism for failing
|
|
13
|
+
# imports.
|
|
14
|
+
#
|
|
15
|
+
# Fallbacks are tried in reverse order with the failing importer object as
|
|
16
|
+
# argument. The first valid importer object that has been returned will be
|
|
17
|
+
# used instead.
|
|
18
|
+
#
|
|
19
|
+
# It is the responsibility of the fallback handler to make sure that it does
|
|
20
|
+
# not do infinite recursions and stuff like that.
|
|
21
|
+
def self.fallback(&block)
|
|
22
|
+
@fallback_handlers.unshift(block)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class << self
|
|
26
|
+
# The set of handlers registered by Importer.fallback
|
|
27
|
+
attr_reader :fallback_handlers
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
@fallback_handlers = Array.new
|
|
31
|
+
|
|
9
32
|
# Instances of the Importer::Status class represent the status of a current
|
|
10
33
|
# checkout w.r.t. the remote repository.
|
|
11
34
|
class Status
|
|
@@ -58,16 +81,22 @@ class Importer
|
|
|
58
81
|
def import(package)
|
|
59
82
|
srcdir = package.srcdir
|
|
60
83
|
if File.directory?(srcdir)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
84
|
+
package.isolate_errors(false) do
|
|
85
|
+
if Autobuild.do_update
|
|
86
|
+
package.progress "updating %s"
|
|
87
|
+
begin
|
|
88
|
+
update(package)
|
|
89
|
+
patch(package)
|
|
90
|
+
package.updated = true
|
|
91
|
+
rescue Exception => e
|
|
92
|
+
fallback(e, package, :import, package)
|
|
93
|
+
end
|
|
94
|
+
else
|
|
95
|
+
if Autobuild.verbose
|
|
96
|
+
puts " not updating #{package.name}"
|
|
97
|
+
end
|
|
98
|
+
return
|
|
99
|
+
end
|
|
71
100
|
end
|
|
72
101
|
|
|
73
102
|
elsif File.exists?(srcdir)
|
|
@@ -78,11 +107,26 @@ class Importer
|
|
|
78
107
|
checkout(package)
|
|
79
108
|
patch(package)
|
|
80
109
|
package.updated = true
|
|
81
|
-
rescue Autobuild::Exception
|
|
110
|
+
rescue Autobuild::Exception => e
|
|
111
|
+
FileUtils.rm_rf package.srcdir
|
|
112
|
+
fallback(e, package, :import, package)
|
|
113
|
+
rescue Exception
|
|
82
114
|
FileUtils.rm_rf package.srcdir
|
|
83
115
|
raise
|
|
84
116
|
end
|
|
85
117
|
end
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Tries to find a fallback importer because of the given error.
|
|
122
|
+
def fallback(error, package, *args, &block)
|
|
123
|
+
Importer.fallback_handlers.each do |handler|
|
|
124
|
+
fallback_importer = handler.call(package, self)
|
|
125
|
+
if fallback_importer.kind_of?(Importer)
|
|
126
|
+
return fallback_importer.send(*args, &block)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
raise error
|
|
86
130
|
end
|
|
87
131
|
|
|
88
132
|
private
|
data/lib/autobuild/package.rb
CHANGED
|
@@ -106,6 +106,7 @@ module Autobuild
|
|
|
106
106
|
@provides = Array.new
|
|
107
107
|
@parallel_build_level = nil
|
|
108
108
|
@statistics = Hash.new
|
|
109
|
+
@failures = Array.new
|
|
109
110
|
|
|
110
111
|
if Hash === spec
|
|
111
112
|
name, depends = spec.to_a.first
|
|
@@ -173,12 +174,12 @@ module Autobuild
|
|
|
173
174
|
|
|
174
175
|
# Returns true if one of the operations applied on this package failed
|
|
175
176
|
def failed?
|
|
176
|
-
|
|
177
|
+
@failed
|
|
177
178
|
end
|
|
178
179
|
|
|
179
180
|
# If something failed on this package, returns the corresponding
|
|
180
181
|
# exception object. Otherwise, returns nil
|
|
181
|
-
attr_reader :
|
|
182
|
+
attr_reader :failures
|
|
182
183
|
|
|
183
184
|
# If Autobuild.ignore_errors is set, an exception raised from within the
|
|
184
185
|
# provided block will be filtered out, only displaying a message instead
|
|
@@ -187,13 +188,16 @@ module Autobuild
|
|
|
187
188
|
# Moreover, the package will be marked as "failed" and isolate_errors
|
|
188
189
|
# will subsequently be a noop. I.e. if +build+ fails, +install+ will do
|
|
189
190
|
# nothing.
|
|
190
|
-
def isolate_errors
|
|
191
|
+
def isolate_errors(mark_as_failed = true)
|
|
191
192
|
# Don't do anything if we already have failed
|
|
192
193
|
return if failed?
|
|
193
194
|
|
|
194
195
|
begin yield
|
|
195
196
|
rescue Exception => e
|
|
196
|
-
@
|
|
197
|
+
@failures << e
|
|
198
|
+
if mark_as_failed
|
|
199
|
+
@failed = true
|
|
200
|
+
end
|
|
197
201
|
|
|
198
202
|
if Autobuild.ignore_errors
|
|
199
203
|
lines = e.to_s.split("\n")
|
|
@@ -18,7 +18,10 @@ module Autobuild
|
|
|
18
18
|
def full_reconfigures?
|
|
19
19
|
@full_reconfigures
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
attr_reader :module_path
|
|
21
23
|
end
|
|
24
|
+
@module_path = []
|
|
22
25
|
@full_reconfigures = true
|
|
23
26
|
|
|
24
27
|
# a key => value association of defines for CMake
|
|
@@ -114,6 +117,7 @@ module Autobuild
|
|
|
114
117
|
if File.exists?(cmake_cache)
|
|
115
118
|
all_defines = defines.dup
|
|
116
119
|
all_defines['CMAKE_INSTALL_PREFIX'] = prefix
|
|
120
|
+
all_defines['CMAKE_MODULE_PATH'] = "#{CMake.module_path.join(";")}"
|
|
117
121
|
cache = File.read(cmake_cache)
|
|
118
122
|
did_change = all_defines.any? do |name, value|
|
|
119
123
|
cache_line = cache.each_line.find do |line|
|
|
@@ -154,7 +158,8 @@ module Autobuild
|
|
|
154
158
|
raise ConfigException, "#{srcdir} contains no CMakeLists.txt file"
|
|
155
159
|
end
|
|
156
160
|
|
|
157
|
-
command = [ "cmake", "-DCMAKE_INSTALL_PREFIX=#{prefix}" ]
|
|
161
|
+
command = [ "cmake", "-DCMAKE_INSTALL_PREFIX=#{prefix}", "-DCMAKE_MODULE_PATH=#{CMake.module_path.join(";")}" ]
|
|
162
|
+
|
|
158
163
|
defines.each do |name, value|
|
|
159
164
|
command << "-D#{name}=#{value}"
|
|
160
165
|
end
|
|
@@ -165,6 +165,11 @@ module Autobuild
|
|
|
165
165
|
end
|
|
166
166
|
end
|
|
167
167
|
|
|
168
|
+
class << self
|
|
169
|
+
attr_accessor :default_type_export_policy
|
|
170
|
+
end
|
|
171
|
+
@default_type_export_policy = :used
|
|
172
|
+
|
|
168
173
|
def self.orogen_bin
|
|
169
174
|
if @orogen_bin
|
|
170
175
|
@orogen_bin
|
|
@@ -319,8 +324,13 @@ module Autobuild
|
|
|
319
324
|
end
|
|
320
325
|
cmdline << orogen_file
|
|
321
326
|
|
|
322
|
-
if (version = Orogen.orogen_version)
|
|
323
|
-
|
|
327
|
+
if (version = Orogen.orogen_version)
|
|
328
|
+
if version >= "1.0"
|
|
329
|
+
cmdline << "--parallel-build=#{parallel_build_level}"
|
|
330
|
+
end
|
|
331
|
+
if version >= "1.1"
|
|
332
|
+
cmdline << "--type-export-policy=#{Orogen.default_type_export_policy}"
|
|
333
|
+
end
|
|
324
334
|
end
|
|
325
335
|
|
|
326
336
|
progress "generating oroGen project %s"
|
data/lib/autobuild/reporting.rb
CHANGED
data/lib/autobuild/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: autobuild
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 61
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 5
|
|
9
|
-
-
|
|
10
|
-
version: 1.5.
|
|
9
|
+
- 31
|
|
10
|
+
version: 1.5.31
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Sylvain Joyeux
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date:
|
|
18
|
+
date: 2011-01-04 00:00:00 +01:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -81,37 +81,21 @@ dependencies:
|
|
|
81
81
|
type: :runtime
|
|
82
82
|
version_requirements: *id004
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: hoe
|
|
85
85
|
prerelease: false
|
|
86
86
|
requirement: &id005 !ruby/object:Gem::Requirement
|
|
87
87
|
none: false
|
|
88
88
|
requirements:
|
|
89
89
|
- - ">="
|
|
90
90
|
- !ruby/object:Gem::Version
|
|
91
|
-
hash:
|
|
91
|
+
hash: 47
|
|
92
92
|
segments:
|
|
93
93
|
- 2
|
|
94
|
+
- 8
|
|
94
95
|
- 0
|
|
95
|
-
|
|
96
|
-
version: 2.0.4
|
|
96
|
+
version: 2.8.0
|
|
97
97
|
type: :development
|
|
98
98
|
version_requirements: *id005
|
|
99
|
-
- !ruby/object:Gem::Dependency
|
|
100
|
-
name: hoe
|
|
101
|
-
prerelease: false
|
|
102
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
|
103
|
-
none: false
|
|
104
|
-
requirements:
|
|
105
|
-
- - ">="
|
|
106
|
-
- !ruby/object:Gem::Version
|
|
107
|
-
hash: 19
|
|
108
|
-
segments:
|
|
109
|
-
- 2
|
|
110
|
-
- 7
|
|
111
|
-
- 0
|
|
112
|
-
version: 2.7.0
|
|
113
|
-
type: :development
|
|
114
|
-
version_requirements: *id006
|
|
115
99
|
description: |-
|
|
116
100
|
This work is licensed under the GPLv2 license. See License.txt for details
|
|
117
101
|
|