autobuild 1.4.3 → 1.4.4
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 +3 -0
- data/lib/autobuild.rb +1 -1
- data/lib/autobuild/import/cvs.rb +2 -2
- data/lib/autobuild/import/darcs.rb +2 -2
- data/lib/autobuild/import/git.rb +10 -10
- data/lib/autobuild/import/svn.rb +2 -2
- data/lib/autobuild/import/tar.rb +1 -1
- data/lib/autobuild/importer.rb +3 -3
- data/lib/autobuild/package.rb +3 -0
- data/lib/autobuild/packages/autotools.rb +15 -14
- data/lib/autobuild/packages/cmake.rb +5 -5
- data/lib/autobuild/packages/genom.rb +2 -2
- data/lib/autobuild/packages/orogen.rb +35 -9
- data/lib/autobuild/subcommand.rb +13 -5
- metadata +2 -2
data/Changes.txt
CHANGED
data/lib/autobuild.rb
CHANGED
data/lib/autobuild/import/cvs.rb
CHANGED
@@ -53,7 +53,7 @@ module Autobuild
|
|
53
53
|
if root != expected_root || mod != @module
|
54
54
|
raise ConfigException, "checkout in #{package.srcdir} is from #{root}:#{mod}, was expecting #{expected_root}:#{@module}"
|
55
55
|
end
|
56
|
-
Subprocess.run(package
|
56
|
+
Subprocess.run(package, :import, @program, 'up', *@options_up)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -64,7 +64,7 @@ module Autobuild
|
|
64
64
|
FileUtils.mkdir_p(head) if !File.directory?(head)
|
65
65
|
Dir.chdir(head) do
|
66
66
|
options = [ @program, '-d', cvsroot, 'co', '-d', tail ] + @options_co + [ modulename ]
|
67
|
-
Subprocess.run(package
|
67
|
+
Subprocess.run(package, :import, *options)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
@@ -27,7 +27,7 @@ module Autobuild
|
|
27
27
|
raise ConfigException, "#{package.srcdir} is not a Darcs repository"
|
28
28
|
end
|
29
29
|
|
30
|
-
Subprocess.run(package
|
30
|
+
Subprocess.run(package, :import, @program,
|
31
31
|
'pull', '--all', "--repodir=#{package.srcdir}", '--set-scripts-executable', @source, *@pull)
|
32
32
|
end
|
33
33
|
|
@@ -37,7 +37,7 @@ module Autobuild
|
|
37
37
|
FileUtils.mkdir_p(basedir)
|
38
38
|
end
|
39
39
|
|
40
|
-
Subprocess.run(package
|
40
|
+
Subprocess.run(package, :import, @program,
|
41
41
|
'get', '--set-scripts-executable', @source, package.srcdir, *@get)
|
42
42
|
end
|
43
43
|
end
|
data/lib/autobuild/import/git.rb
CHANGED
@@ -85,9 +85,9 @@ module Autobuild
|
|
85
85
|
validate_srcdir(package)
|
86
86
|
Dir.chdir(package.srcdir) do
|
87
87
|
if commit # we are checking out a specific commit. We just call git fetch
|
88
|
-
Subprocess.run(package
|
88
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'fetch', repository)
|
89
89
|
else
|
90
|
-
Subprocess.run(package
|
90
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'fetch', repository, branch || tag)
|
91
91
|
end
|
92
92
|
if File.readable?( File.join('.git', 'FETCH_HEAD') )
|
93
93
|
fetch_commit = File.readlines( File.join('.git', 'FETCH_HEAD') ).
|
@@ -185,7 +185,7 @@ module Autobuild
|
|
185
185
|
|
186
186
|
# If we are tracking a commit/tag, just check it out and return
|
187
187
|
if commit || tag
|
188
|
-
Subprocess.run(package
|
188
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'checkout', commit || tag)
|
189
189
|
return
|
190
190
|
end
|
191
191
|
|
@@ -193,9 +193,9 @@ module Autobuild
|
|
193
193
|
# Check if the target branch already exists. If it is the
|
194
194
|
# case, check it out. Otherwise, create it.
|
195
195
|
if File.file?(File.join(".git", "refs", "heads", branch))
|
196
|
-
Subprocess.run(package
|
196
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'checkout', branch)
|
197
197
|
else
|
198
|
-
Subprocess.run(package
|
198
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'checkout', '-b', branch, "FETCH_HEAD")
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
@@ -204,7 +204,7 @@ module Autobuild
|
|
204
204
|
if !merge? && status.status == Status::NEEDS_MERGE
|
205
205
|
raise PackageException, "importing the current version would require a merge"
|
206
206
|
end
|
207
|
-
Subprocess.run(package
|
207
|
+
Subprocess.run(package, :import, Autobuild.tool('git'), 'merge', fetch_commit)
|
208
208
|
end
|
209
209
|
end
|
210
210
|
end
|
@@ -215,24 +215,24 @@ module Autobuild
|
|
215
215
|
FileUtils.mkdir_p base_dir
|
216
216
|
end
|
217
217
|
|
218
|
-
Subprocess.run(package
|
218
|
+
Subprocess.run(package, :import,
|
219
219
|
Autobuild.tool('git'), 'clone', '-o', 'autobuild',
|
220
220
|
repository, package.srcdir)
|
221
221
|
|
222
222
|
Dir.chdir(package.srcdir) do
|
223
223
|
# If we are tracking a commit/tag, just check it out
|
224
224
|
if commit || tag
|
225
|
-
Subprocess.run(package
|
225
|
+
Subprocess.run(package, :import, Autobuild.tool('git'),
|
226
226
|
'checkout', commit || tag)
|
227
227
|
return
|
228
228
|
end
|
229
229
|
|
230
230
|
current_branch = `git symbolic-ref HEAD`.chomp
|
231
231
|
if current_branch == "refs/heads/#{branch}"
|
232
|
-
Subprocess.run(package
|
232
|
+
Subprocess.run(package, :import, Autobuild.tool('git'),
|
233
233
|
'reset', '--hard', "autobuild/#{branch}")
|
234
234
|
else
|
235
|
-
Subprocess.run(package
|
235
|
+
Subprocess.run(package, :import, Autobuild.tool('git'),
|
236
236
|
'checkout', '-b', branch, "autobuild/#{branch}")
|
237
237
|
end
|
238
238
|
end
|
data/lib/autobuild/import/svn.rb
CHANGED
@@ -38,13 +38,13 @@ module Autobuild
|
|
38
38
|
if source != @source
|
39
39
|
raise ConfigException, "current checkout found at #{package.srcdir} is from #{source}, was expecting #{@source}"
|
40
40
|
end
|
41
|
-
Subprocess.run(package
|
41
|
+
Subprocess.run(package, :import, @program, 'up', "--non-interactive", *@options_up)
|
42
42
|
}
|
43
43
|
end
|
44
44
|
|
45
45
|
def checkout(package) # :nodoc:
|
46
46
|
options = [ @program, 'co', "--non-interactive" ] + @options_co + [ @source, package.srcdir ]
|
47
|
-
Subprocess.run(package
|
47
|
+
Subprocess.run(package, :import, *options)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
data/lib/autobuild/import/tar.rb
CHANGED
@@ -123,7 +123,7 @@ module Autobuild
|
|
123
123
|
FileUtils.mkdir_p base_dir
|
124
124
|
cmd = [ 'tar', "x#{TAR_OPTION[mode]}f", cachefile, '-C', base_dir ]
|
125
125
|
|
126
|
-
Subprocess.run(package
|
126
|
+
Subprocess.run(package, :import, *cmd)
|
127
127
|
if tardir
|
128
128
|
File.mv File.join(base_dir, tardir), package.srcdir
|
129
129
|
end
|
data/lib/autobuild/importer.rb
CHANGED
@@ -86,9 +86,9 @@ class Autobuild::Importer
|
|
86
86
|
|
87
87
|
def call_patch(package, reverse, file)
|
88
88
|
patch = Autobuild.tool('patch')
|
89
|
-
Dir.chdir(package.srcdir)
|
90
|
-
Subprocess.run(package
|
91
|
-
|
89
|
+
Dir.chdir(package.srcdir) do
|
90
|
+
Subprocess.run(package, :patch, patch, '-p0', (reverse ? '-R' : nil), "<#{file}")
|
91
|
+
end
|
92
92
|
end
|
93
93
|
|
94
94
|
def apply(package, path); call_patch(package, false, path) end
|
data/lib/autobuild/package.rb
CHANGED
@@ -71,6 +71,9 @@ module Autobuild
|
|
71
71
|
def srcdir; File.expand_path(@srcdir || name, Autobuild.srcdir) end
|
72
72
|
# Absolute path to the installation directory. See #prefix=
|
73
73
|
def prefix; File.expand_path(@prefix || '', Autobuild.prefix) end
|
74
|
+
# Absolute path to the log directory for this package. See #logdir=
|
75
|
+
def logdir; File.expand_path(@logdir, prefix) end
|
76
|
+
|
74
77
|
|
75
78
|
# The file which marks when the last sucessful install
|
76
79
|
# has finished. The path is absolute
|
@@ -4,6 +4,7 @@ require 'autobuild/environment'
|
|
4
4
|
require 'autobuild/package'
|
5
5
|
require 'autobuild/subcommand'
|
6
6
|
require 'shellwords'
|
7
|
+
require 'fileutils'
|
7
8
|
|
8
9
|
module Autobuild
|
9
10
|
def self.autotools(opts, &proc)
|
@@ -62,7 +63,7 @@ module Autobuild
|
|
62
63
|
doc_task do
|
63
64
|
Dir.chdir(builddir) do
|
64
65
|
Autobuild.progress "generating documentation for #{name}"
|
65
|
-
Subprocess.run(
|
66
|
+
Subprocess.run(self, 'doc', Autobuild.tool(:make), "-j#{parallel_build_level}", target)
|
66
67
|
yield if block_given?
|
67
68
|
end
|
68
69
|
end
|
@@ -138,7 +139,7 @@ module Autobuild
|
|
138
139
|
old_opt = options.find { |o| !testflags.include?(o) }
|
139
140
|
new_opt = testflags.find { |o| !options.include?(o) }
|
140
141
|
if old_opt || new_opt
|
141
|
-
|
142
|
+
FileUtils.rm_f config_status # to force reconfiguration
|
142
143
|
end
|
143
144
|
end
|
144
145
|
|
@@ -176,14 +177,14 @@ module Autobuild
|
|
176
177
|
end
|
177
178
|
|
178
179
|
file conffile do
|
179
|
-
Dir.chdir(srcdir)
|
180
|
+
Dir.chdir(srcdir) do
|
180
181
|
if using[:autogen].nil?
|
181
182
|
using[:autogen] = %w{autogen autogen.sh}.find { |f| File.exists?(f) }
|
182
183
|
end
|
183
184
|
|
184
185
|
Autobuild.progress "generating build system for #{name}"
|
185
186
|
if using[:autogen]
|
186
|
-
Subprocess.run(
|
187
|
+
Subprocess.run(self, 'configure', File.expand_path(using[:autogen]))
|
187
188
|
else
|
188
189
|
# Autodetect autoconf/aclocal/automake
|
189
190
|
#
|
@@ -202,11 +203,11 @@ module Autobuild
|
|
202
203
|
else; Autobuild.tool(tool)
|
203
204
|
end
|
204
205
|
|
205
|
-
Subprocess.run(
|
206
|
+
Subprocess.run(self, 'configure', tool_program)
|
206
207
|
end
|
207
208
|
end
|
208
209
|
end
|
209
|
-
|
210
|
+
end
|
210
211
|
end
|
211
212
|
|
212
213
|
return conffile
|
@@ -224,26 +225,26 @@ module Autobuild
|
|
224
225
|
command += Array[*configureflags]
|
225
226
|
|
226
227
|
Autobuild.progress "configuring build system for #{name}"
|
227
|
-
Subprocess.run(
|
228
|
+
Subprocess.run(self, 'configure', *command)
|
228
229
|
}
|
229
230
|
end
|
230
231
|
|
231
232
|
# Do the build in builddir
|
232
233
|
def build
|
233
|
-
Dir.chdir(builddir)
|
234
|
+
Dir.chdir(builddir) do
|
234
235
|
Autobuild.progress "building #{name}"
|
235
|
-
Subprocess.run(
|
236
|
-
Subprocess.run(
|
237
|
-
|
236
|
+
Subprocess.run(self, 'build', './config.status')
|
237
|
+
Subprocess.run(self, 'build', Autobuild.tool(:make), "-j#{parallel_build_level}")
|
238
|
+
end
|
238
239
|
Autobuild.touch_stamp(buildstamp)
|
239
240
|
end
|
240
241
|
|
241
242
|
# Install the result in prefix
|
242
243
|
def install
|
243
|
-
Dir.chdir(builddir)
|
244
|
+
Dir.chdir(builddir) do
|
244
245
|
Autobuild.progress "installing #{name}"
|
245
|
-
Subprocess.run(
|
246
|
-
|
246
|
+
Subprocess.run(self, 'install', Autobuild.tool(:make), "-j#{parallel_build_level}", 'install')
|
247
|
+
end
|
247
248
|
Autobuild.touch_stamp(installstamp)
|
248
249
|
Autobuild.update_environment(prefix)
|
249
250
|
end
|
@@ -64,7 +64,7 @@ module Autobuild
|
|
64
64
|
doc_task do
|
65
65
|
Dir.chdir(builddir) do
|
66
66
|
Autobuild.progress "generating documentation for #{name}"
|
67
|
-
Subprocess.run(
|
67
|
+
Subprocess.run(self, 'doc', Autobuild.tool(:make), "-j#{parallel_build_level}", target)
|
68
68
|
yield if block_given?
|
69
69
|
end
|
70
70
|
end
|
@@ -153,7 +153,7 @@ module Autobuild
|
|
153
153
|
if full_reconfigures?
|
154
154
|
FileUtils.rm_f configurestamp
|
155
155
|
end
|
156
|
-
Subprocess.run(
|
156
|
+
Subprocess.run(self, 'configure', *command)
|
157
157
|
super
|
158
158
|
end
|
159
159
|
end
|
@@ -163,9 +163,9 @@ module Autobuild
|
|
163
163
|
Dir.chdir(builddir) do
|
164
164
|
Autobuild.progress_with_value "building #{name}"
|
165
165
|
if always_reconfigure || !File.file?('Makefile')
|
166
|
-
Subprocess.run(
|
166
|
+
Subprocess.run(self, 'build', Autobuild.tool(:cmake), '.')
|
167
167
|
end
|
168
|
-
Subprocess.run(
|
168
|
+
Subprocess.run(self, 'build', Autobuild.tool(:make), "-j#{parallel_build_level}") do |line|
|
169
169
|
if line =~ /\[\s+(\d+)%\]/
|
170
170
|
Autobuild.progress_value Integer($1)
|
171
171
|
end
|
@@ -178,7 +178,7 @@ module Autobuild
|
|
178
178
|
def install
|
179
179
|
Dir.chdir(builddir) do
|
180
180
|
Autobuild.progress "installing #{name}"
|
181
|
-
Subprocess.run(
|
181
|
+
Subprocess.run(self, 'build', Autobuild.tool(:make), "-j#{parallel_build_level}", 'install')
|
182
182
|
Autobuild.update_environment prefix
|
183
183
|
end
|
184
184
|
super
|
@@ -136,7 +136,7 @@ module Autobuild
|
|
136
136
|
file genomstamp => srcdir do
|
137
137
|
Dir.chdir(srcdir) do
|
138
138
|
Autobuild.progress "generating GenoM files for #{name}"
|
139
|
-
Subprocess.run(
|
139
|
+
Subprocess.run(self, 'genom', *cmdline)
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
@@ -146,7 +146,7 @@ module Autobuild
|
|
146
146
|
# since the generation takes care of rebuilding configure
|
147
147
|
# if .gen has changed
|
148
148
|
Autobuild.progress "generating build system for #{name}"
|
149
|
-
Dir.chdir(srcdir) { Subprocess.run(
|
149
|
+
Dir.chdir(srcdir) { Subprocess.run(self, 'genom', File.expand_path('autogen')) }
|
150
150
|
end
|
151
151
|
|
152
152
|
super("#{srcdir}/autoconf/configure.ac")
|
@@ -49,6 +49,8 @@ module Autobuild
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
attr_reader :orogen_file
|
53
|
+
attr_reader :base_dir
|
52
54
|
attr_reader :project_name, :dependencies, :provides
|
53
55
|
def self.load(pkg, file)
|
54
56
|
FakeOrogenEnvironment.new(pkg).load(file)
|
@@ -64,6 +66,8 @@ module Autobuild
|
|
64
66
|
end
|
65
67
|
|
66
68
|
def load(file)
|
69
|
+
@orogen_file = file
|
70
|
+
@base_dir = File.dirname(file)
|
67
71
|
Kernel.eval(File.read(file), binding)
|
68
72
|
self
|
69
73
|
end
|
@@ -76,6 +80,11 @@ module Autobuild
|
|
76
80
|
@dependencies.concat(names)
|
77
81
|
nil
|
78
82
|
end
|
83
|
+
def import_types_from(name)
|
84
|
+
if !File.file?(File.join(base_dir, name)) && name.downcase !~ /\.(hh|hpp|h)/
|
85
|
+
using_toolkit name
|
86
|
+
end
|
87
|
+
end
|
79
88
|
def using_toolkit(*names)
|
80
89
|
names = names.map { |n| "#{n}-toolkit-#{pkg.orocos_target}" }
|
81
90
|
@dependencies.concat(names)
|
@@ -141,6 +150,17 @@ module Autobuild
|
|
141
150
|
end
|
142
151
|
end
|
143
152
|
|
153
|
+
def self.orogen_root
|
154
|
+
if @orogen_root.nil?
|
155
|
+
@orogen_root = `orogen --base-dir 2>&1`
|
156
|
+
if @orogen_root.empty?
|
157
|
+
@orogen_root = false
|
158
|
+
end
|
159
|
+
else
|
160
|
+
@orogen_root
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
144
164
|
attr_writer :orocos_target
|
145
165
|
def orocos_target
|
146
166
|
if @orocos_target.nil?
|
@@ -206,16 +226,22 @@ module Autobuild
|
|
206
226
|
end
|
207
227
|
end
|
208
228
|
|
209
|
-
#
|
210
|
-
# on it.
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
229
|
+
# Check if there is an orogen package registered. If it is the case,
|
230
|
+
# simply depend on it. Otherwise, look out for orogen --base-dir
|
231
|
+
if Autobuild::Package['orogen']
|
232
|
+
depends_on "orogen"
|
233
|
+
else
|
234
|
+
# Find out where orogen is, and make sure the configurestamp depend
|
235
|
+
# on it. Ignore if orogen is too old to have a --base-dir option
|
236
|
+
if orogen_root = self.class.orogen_root
|
237
|
+
orogen_root = orogen_root.split[0].chomp
|
238
|
+
if File.directory?(orogen_root)
|
239
|
+
orogen_root = File.join(orogen_root, 'orogen')
|
240
|
+
file genstamp => Autobuild.source_tree(orogen_root)
|
241
|
+
end
|
217
242
|
end
|
218
243
|
end
|
244
|
+
|
219
245
|
file configurestamp => genstamp
|
220
246
|
file genstamp => File.join(srcdir, orogen_file) do
|
221
247
|
regen
|
@@ -230,7 +256,7 @@ module Autobuild
|
|
230
256
|
|
231
257
|
Autobuild.progress "generating oroGen project #{name}"
|
232
258
|
Dir.chdir(srcdir) do
|
233
|
-
Subprocess.run
|
259
|
+
Subprocess.run self, 'orogen', *cmdline
|
234
260
|
Autobuild.touch_stamp genstamp
|
235
261
|
end
|
236
262
|
end
|
data/lib/autobuild/subcommand.rb
CHANGED
@@ -72,14 +72,22 @@ module Autobuild::Subprocess
|
|
72
72
|
command.reject! { |o| o.nil? || (o.respond_to?(:empty?) && o.empty?) }
|
73
73
|
command.collect! { |o| o.to_s }
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
target_name = if target.respond_to?(:name)
|
76
|
+
target.name
|
77
|
+
else target.to_str
|
78
|
+
end
|
79
|
+
logdir = if target.respond_to?(:logdir)
|
80
|
+
target.logdir
|
81
|
+
else Autobuild.logdir
|
82
|
+
end
|
83
|
+
|
84
|
+
logname = "#{logdir}/#{target_name}-#{phase}.log"
|
77
85
|
if !File.directory?(File.dirname(logname))
|
78
86
|
FileUtils.mkdir_p File.dirname(logname)
|
79
87
|
end
|
80
88
|
|
81
89
|
if Autobuild.verbose
|
82
|
-
puts "#{
|
90
|
+
puts "#{target_name}: running #{command.join(" ")}\n (output goes to #{logname})"
|
83
91
|
end
|
84
92
|
|
85
93
|
input_streams = command.collect { |o| $1 if o =~ /^\<(.+)/ }.compact
|
@@ -188,12 +196,12 @@ module Autobuild::Subprocess
|
|
188
196
|
childstatus
|
189
197
|
end
|
190
198
|
|
191
|
-
if status.exitstatus > 0
|
199
|
+
if !status.exitstatus || status.exitstatus > 0
|
192
200
|
raise Failed.new(status.exitstatus), "'#{command.join(' ')}' returned status #{status.exitstatus}"
|
193
201
|
end
|
194
202
|
|
195
203
|
rescue Failed => e
|
196
|
-
error = Autobuild::SubcommandFailed.new(
|
204
|
+
error = Autobuild::SubcommandFailed.new(target_name, command.join(" "), logname, e.status)
|
197
205
|
error.phase = phase
|
198
206
|
raise error, e.message
|
199
207
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autobuild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
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-
|
12
|
+
date: 2009-12-07 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|