autobuild 1.4.9 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Changes.txt +14 -0
- data/lib/autobuild.rb +1 -1
- data/lib/autobuild/config.rb +15 -15
- data/lib/autobuild/configurable.rb +21 -20
- data/lib/autobuild/environment.rb +5 -3
- data/lib/autobuild/import/archive.rb +11 -4
- data/lib/autobuild/importer.rb +10 -2
- data/lib/autobuild/package.rb +25 -11
- data/lib/autobuild/packages/autotools.rb +29 -77
- data/lib/autobuild/packages/cmake.rb +22 -24
- data/lib/autobuild/packages/dummy.rb +2 -0
- data/lib/autobuild/packages/genom.rb +3 -6
- data/lib/autobuild/packages/import.rb +1 -3
- data/lib/autobuild/packages/orogen.rb +34 -22
- data/lib/autobuild/timestamps.rb +1 -1
- metadata +23 -3
data/Changes.txt
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
== Version 1.5.0
|
2
|
+
* now Ruby1.9 compatibility fixes, can be run with ruby1.9.1 on Debian
|
3
|
+
* properly runs if the ruby interpreter is not called 'ruby', as ruby1.9.1
|
4
|
+
on Debian
|
5
|
+
* fix some issues with the usage of #depends_on *before* Package#srcdir #logdir
|
6
|
+
and #prefix were set. It fixes an autoproj bug in case the autobuild files use
|
7
|
+
#depends_on
|
8
|
+
* the archive importer now properly handles interruptions
|
9
|
+
* the archive importer now properly autodetects file names if the URLs contains '?'
|
10
|
+
* fixed the importer package type
|
11
|
+
* fixed some rare issues with internal dependency definitions. This bug was
|
12
|
+
usually manifesting itself with rake exceptions whose message were "do not
|
13
|
+
know how to build <package name>-stamp"
|
14
|
+
|
1
15
|
== Version 1.4.9
|
2
16
|
* quickfix an issue related to a discrepancy between the definition of the
|
3
17
|
installstamp and the definition of the log dir.
|
data/lib/autobuild.rb
CHANGED
data/lib/autobuild/config.rb
CHANGED
@@ -143,33 +143,33 @@ module Autobuild
|
|
143
143
|
def commandline(args)
|
144
144
|
parser = OptionParser.new do |opts|
|
145
145
|
opts.separator "Path specification"
|
146
|
-
opts.on("--srcdir PATH", "sources are installed in PATH") do
|
147
|
-
opts.on("--prefix PATH", "built packages are installed in PATH") do
|
148
|
-
opts.on("--logdir PATH", "logs are saved in PATH (default: <prefix>/autobuild)") do
|
146
|
+
opts.on("--srcdir PATH", "sources are installed in PATH") do |v| Autobuild.srcdir=v end
|
147
|
+
opts.on("--prefix PATH", "built packages are installed in PATH") do |v| Autobuild.prefix = v end
|
148
|
+
opts.on("--logdir PATH", "logs are saved in PATH (default: <prefix>/autobuild)") do |v| Autobuild.logdir = v end
|
149
149
|
|
150
150
|
opts.separator ""
|
151
151
|
opts.separator "General behaviour"
|
152
|
-
opts.on('--nice NICE', Integer, 'nice the subprocesses to the given value') do
|
152
|
+
opts.on('--nice NICE', Integer, 'nice the subprocesses to the given value') do |v| Autobuild.nice = v end
|
153
153
|
opts.on("-h", "--help", "Show this message") do
|
154
154
|
puts opts
|
155
155
|
exit
|
156
156
|
end
|
157
157
|
if defined? Daemons
|
158
|
-
opts.on("--[no-]daemon", "go into daemon mode") do
|
158
|
+
opts.on("--[no-]daemon", "go into daemon mode") do |v| Autobuild.daemonize = v end
|
159
159
|
end
|
160
|
-
opts.on("--no-update", "update already checked-out sources") do
|
161
|
-
opts.on("--no-build", "only prepare packages, do not build them") do
|
162
|
-
opts.on("--forced-build", "force the trigger of all the build commands") do
|
163
|
-
opts.on("--rebuild", "clean and rebuild") do
|
164
|
-
opts.on("--only-doc", "only generate documentation") do
|
165
|
-
opts.on("--no-doc", "don't generate documentation") do
|
166
|
-
opts.on("--doc-errors", "treat documentation failure as error") do
|
160
|
+
opts.on("--no-update", "update already checked-out sources") do |v| Autobuild.do_update = v end
|
161
|
+
opts.on("--no-build", "only prepare packages, do not build them") do |v| Autobuild.do_build = v end
|
162
|
+
opts.on("--forced-build", "force the trigger of all the build commands") do |v| Autobuild.do_forced_build = v end
|
163
|
+
opts.on("--rebuild", "clean and rebuild") do |v| Autobuild.do_forced_build = v end
|
164
|
+
opts.on("--only-doc", "only generate documentation") do |v| Autobuild.only_doc = v end
|
165
|
+
opts.on("--no-doc", "don't generate documentation") do |v| Autobuild.do_doc = v end
|
166
|
+
opts.on("--doc-errors", "treat documentation failure as error") do |v| Autobuild.doc_errors = v end
|
167
167
|
|
168
168
|
opts.separator ""
|
169
169
|
opts.separator "Program output"
|
170
|
-
opts.on("--[no-]verbose", "display output of commands on stdout") do
|
171
|
-
opts.on("--[no-]debug", "debug information (for debugging purposes)") do
|
172
|
-
opts.on("--keep-oldlogs", "old logs will be kept, new program output being appended") do
|
170
|
+
opts.on("--[no-]verbose", "display output of commands on stdout") do |v| Autobuild.verbose = v end
|
171
|
+
opts.on("--[no-]debug", "debug information (for debugging purposes)") do |v| Autobuild.debug = v end
|
172
|
+
opts.on("--keep-oldlogs", "old logs will be kept, new program output being appended") do |v| Autobuild.keep_oldlogs = v end
|
173
173
|
|
174
174
|
opts.separator ""
|
175
175
|
opts.separator "Mail reports"
|
@@ -37,7 +37,7 @@ module Autobuild
|
|
37
37
|
@builddir = new
|
38
38
|
end
|
39
39
|
# Returns the absolute builddir
|
40
|
-
def builddir; File.expand_path(@builddir ||
|
40
|
+
def builddir; File.expand_path(@builddir || self.class.builddir, srcdir) end
|
41
41
|
|
42
42
|
# Build stamp
|
43
43
|
# This returns the name of the file which marks when the package has been
|
@@ -56,17 +56,12 @@ module Autobuild
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def prepare_for_rebuild
|
59
|
+
prepare_for_forced_build
|
59
60
|
if File.exists?(builddir) && builddir != srcdir
|
60
61
|
FileUtils.rm_rf builddir
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
|
-
def depends_on(*packages)
|
65
|
-
super
|
66
|
-
stamps = packages.collect { |p| Package[p.to_s].installstamp }
|
67
|
-
file configurestamp => stamps
|
68
|
-
end
|
69
|
-
|
70
65
|
def ensure_dependencies_installed
|
71
66
|
dependencies.each do |pkg|
|
72
67
|
Rake::Task[Package[pkg].installstamp].invoke
|
@@ -74,33 +69,39 @@ module Autobuild
|
|
74
69
|
end
|
75
70
|
|
76
71
|
def prepare
|
72
|
+
Autobuild.source_tree srcdir do |pkg|
|
73
|
+
pkg.exclude << Regexp.new("^#{Regexp.quote(builddir)}")
|
74
|
+
pkg.exclude << Regexp.new("^#{doc_dir}") if doc_dir
|
75
|
+
end
|
76
|
+
|
77
77
|
super
|
78
78
|
|
79
|
-
|
79
|
+
stamps = dependencies.map { |pkg| Autobuild::Package[pkg].installstamp }
|
80
|
+
file configurestamp => stamps do
|
80
81
|
ensure_dependencies_installed
|
81
82
|
configure
|
82
83
|
end
|
83
84
|
task "#{name}-prepare" => configurestamp
|
84
85
|
|
85
|
-
|
86
|
-
pkg.exclude << Regexp.new("^#{Regexp.quote(builddir)}")
|
87
|
-
pkg.exclude << Regexp.new("^#{doc_dir}") if doc_dir
|
88
|
-
end
|
89
|
-
|
90
|
-
file buildstamp => [ srcdir, configurestamp ] do
|
86
|
+
file buildstamp => [ srcdir, configurestamp ] do
|
91
87
|
ensure_dependencies_installed
|
92
88
|
build
|
93
89
|
end
|
94
90
|
task "#{name}-build" => buildstamp
|
95
91
|
|
96
|
-
file installstamp => buildstamp
|
97
|
-
|
98
|
-
Autobuild.update_environment(prefix)
|
99
|
-
end
|
92
|
+
file installstamp => buildstamp
|
93
|
+
Autobuild.update_environment(prefix)
|
100
94
|
end
|
101
95
|
|
102
96
|
# Configure the builddir directory before starting make
|
103
97
|
def configure
|
98
|
+
if File.exists?(builddir) && !File.directory?(builddir)
|
99
|
+
raise ConfigException, "#{builddir} already exists but is not a directory"
|
100
|
+
end
|
101
|
+
FileUtils.mkdir_p builddir if !File.directory?(builddir)
|
102
|
+
|
103
|
+
yield
|
104
|
+
|
104
105
|
Autobuild.touch_stamp(configurestamp)
|
105
106
|
end
|
106
107
|
|
@@ -108,9 +109,9 @@ module Autobuild
|
|
108
109
|
def build
|
109
110
|
end
|
110
111
|
|
111
|
-
# Install the result in prefix
|
112
112
|
def install
|
113
|
-
|
113
|
+
super
|
114
|
+
Autobuild.update_environment(prefix)
|
114
115
|
end
|
115
116
|
end
|
116
117
|
end
|
@@ -83,9 +83,11 @@ module Autobuild
|
|
83
83
|
end
|
84
84
|
|
85
85
|
require 'rbconfig'
|
86
|
-
ruby_arch
|
87
|
-
|
88
|
-
|
86
|
+
ruby_arch = File.basename(Config::CONFIG['archdir'])
|
87
|
+
candidates = %w{rubylibdir archdir sitelibdir sitearchdir vendorlibdir vendorarchdir}.
|
88
|
+
map { |key| Config::CONFIG[key] }.
|
89
|
+
map { |path| path.gsub(/.*lib\/(\w*ruby\/)/, '\\1') }.
|
90
|
+
each { |subdir| env_add_path("RUBYLIB", "#{newprefix}/lib/#{subdir}") }
|
89
91
|
end
|
90
92
|
end
|
91
93
|
|
@@ -27,7 +27,7 @@ module Autobuild
|
|
27
27
|
case filename
|
28
28
|
when /\.zip$/; Zip
|
29
29
|
when /\.tar$/; Plain
|
30
|
-
when /\.tar\.gz
|
30
|
+
when /\.tar\.gz$|\.tgz$/; Gzip
|
31
31
|
when /\.bz2$/; Bzip
|
32
32
|
else
|
33
33
|
raise "unknown file type '#{filename}'"
|
@@ -67,7 +67,13 @@ module Autobuild
|
|
67
67
|
|
68
68
|
if do_update
|
69
69
|
FileUtils.mkdir_p(cachedir)
|
70
|
-
|
70
|
+
begin
|
71
|
+
Subprocess.run(package, :import, Autobuild.tool('wget'), '-q', '-P', cachedir, @url, '-O', "#{cachefile}.partial")
|
72
|
+
rescue Exception
|
73
|
+
FileUtils.rm_f "#{cachefile}.partial"
|
74
|
+
raise
|
75
|
+
end
|
76
|
+
FileUtils.mv "#{cachefile}.partial", cachefile
|
71
77
|
true
|
72
78
|
end
|
73
79
|
end
|
@@ -106,11 +112,12 @@ module Autobuild
|
|
106
112
|
@url = URI.parse(url)
|
107
113
|
raise ConfigException, "invalid URL #{@url}" unless VALID_URI_SCHEMES.include?(@url.scheme)
|
108
114
|
|
109
|
-
|
115
|
+
filename = options[:filename] || File.basename(url).gsub(/\?.*/, '')
|
116
|
+
@mode = options[:mode] || ArchiveImporter.filename_to_mode(filename)
|
110
117
|
if @url.scheme == 'file'
|
111
118
|
@cachefile = @url.path
|
112
119
|
else
|
113
|
-
@cachefile = File.join(cachedir,
|
120
|
+
@cachefile = File.join(cachedir, filename)
|
114
121
|
end
|
115
122
|
end
|
116
123
|
|
data/lib/autobuild/importer.rb
CHANGED
@@ -4,7 +4,8 @@ require 'autobuild/exceptions'
|
|
4
4
|
# This class is the base class for objects that are used to get the source from
|
5
5
|
# various RCS into the package source directory. A list of patches to apply
|
6
6
|
# after the import can be given in the +:patches+ option.
|
7
|
-
|
7
|
+
module Autobuild
|
8
|
+
class Importer
|
8
9
|
# Instances of the Importer::Status class represent the status of a current
|
9
10
|
# checkout w.r.t. the remote repository.
|
10
11
|
class Status
|
@@ -44,7 +45,13 @@ class Autobuild::Importer
|
|
44
45
|
def initialize(options); @options = options end
|
45
46
|
|
46
47
|
def patches
|
47
|
-
|
48
|
+
if @options[:patches].respond_to?(:to_ary)
|
49
|
+
@options[:patches]
|
50
|
+
elsif !@options[:patches]
|
51
|
+
[]
|
52
|
+
else
|
53
|
+
[@options[:patches]]
|
54
|
+
end
|
48
55
|
end
|
49
56
|
|
50
57
|
# Performs the import of +package+
|
@@ -126,4 +133,5 @@ class Autobuild::Importer
|
|
126
133
|
end
|
127
134
|
end
|
128
135
|
end
|
136
|
+
end
|
129
137
|
|
data/lib/autobuild/package.rb
CHANGED
@@ -125,7 +125,7 @@ module Autobuild
|
|
125
125
|
end
|
126
126
|
task :default => name
|
127
127
|
|
128
|
-
# The dependencies will be declared in the
|
128
|
+
# The dependencies will be declared in the import phase, so save
|
129
129
|
# them there for now
|
130
130
|
@spec_dependencies = depends
|
131
131
|
end
|
@@ -147,22 +147,25 @@ module Autobuild
|
|
147
147
|
# Call the importer if there is one. Autodetection of "provides" should
|
148
148
|
# be done there as well. See the documentation of Autobuild::Package for
|
149
149
|
# more information.
|
150
|
-
def import
|
150
|
+
def import
|
151
|
+
@importer.import(self) if @importer
|
152
|
+
|
153
|
+
# Add the dependencies declared in spec
|
154
|
+
depends_on *@spec_dependencies if @spec_dependencies
|
155
|
+
end
|
156
|
+
|
151
157
|
# Create all the dependencies required to reconfigure and/or rebuild the
|
152
158
|
# package when required. The package's build target is called
|
153
159
|
# "package_name-build".
|
154
160
|
def prepare
|
155
161
|
super if defined? super
|
156
162
|
|
157
|
-
|
158
|
-
|
159
|
-
file installstamp do
|
160
|
-
|
161
|
-
Autobuild.apply_post_install(name, @post_install)
|
162
|
-
end
|
163
|
+
stamps = dependencies.map { |p| Package[p].installstamp }
|
164
|
+
|
165
|
+
file installstamp => stamps do
|
166
|
+
install
|
163
167
|
end
|
164
|
-
|
165
|
-
depends_on *@spec_dependencies if @spec_dependencies
|
168
|
+
task "#{name}-build" => installstamp
|
166
169
|
|
167
170
|
Autobuild.update_environment prefix
|
168
171
|
end
|
@@ -183,6 +186,18 @@ module Autobuild
|
|
183
186
|
Autobuild.progress_value(value)
|
184
187
|
end
|
185
188
|
|
189
|
+
# Install the result in prefix
|
190
|
+
def install
|
191
|
+
Dir.chdir(srcdir) do
|
192
|
+
Autobuild.apply_post_install(name, @post_install)
|
193
|
+
end
|
194
|
+
Autobuild.touch_stamp(installstamp)
|
195
|
+
end
|
196
|
+
|
197
|
+
def run(*args, &block)
|
198
|
+
Autobuild::Subprocess.run(self, *args, &block)
|
199
|
+
end
|
200
|
+
|
186
201
|
# Directory in which the documentation target will have generated the
|
187
202
|
# documentation (if any). The interpretation of relative directories
|
188
203
|
# is package-specific. The default implementation interpret them
|
@@ -279,7 +294,6 @@ module Autobuild
|
|
279
294
|
unless Package[p]
|
280
295
|
raise ConfigException.new(name), "package #{p} not defined"
|
281
296
|
end
|
282
|
-
file installstamp => Package[p].installstamp
|
283
297
|
task "#{name}-import" => "#{p}-import"
|
284
298
|
task "#{name}-prepare" => "#{p}-prepare"
|
285
299
|
@dependencies << p
|
@@ -21,31 +21,13 @@ module Autobuild
|
|
21
21
|
#
|
22
22
|
# To override this default behaviour on a per-package basis, use Autotools#use
|
23
23
|
#
|
24
|
-
class Autotools <
|
24
|
+
class Autotools < Configurable
|
25
25
|
attr_accessor :using
|
26
26
|
attr_accessor :configureflags
|
27
|
-
|
28
|
-
attr_reader :builddir
|
29
|
-
def builddir=(new)
|
30
|
-
raise ConfigException, "absolute builddirs are not supported" if (Pathname.new(new).absolute?)
|
31
|
-
raise ConfigException, "builddir must be non-nil and non-empty" if (new.nil? || new.empty?)
|
32
|
-
@builddir = new
|
33
|
-
end
|
34
|
-
end
|
27
|
+
|
35
28
|
@builddir = 'build'
|
36
29
|
|
37
|
-
def builddir
|
38
|
-
raise ConfigException, "absolute builddirs are not supported" if (Pathname.new(new).absolute?)
|
39
|
-
raise ConfigException, "builddir must be non-empty" if new.empty?
|
40
|
-
@builddir = new
|
41
|
-
end
|
42
|
-
# Returns the absolute builddir
|
43
|
-
def builddir; File.expand_path(@builddir || Autotools.builddir, srcdir) end
|
44
|
-
|
45
|
-
# Build stamp
|
46
|
-
# This returns the name of the file which marks when the package has been
|
47
|
-
# successfully built for the last time. The path is absolute
|
48
|
-
def buildstamp; "#{builddir}/#{STAMPFILE}" end
|
30
|
+
def configurestamp; "#{builddir}/config.status" end
|
49
31
|
|
50
32
|
def initialize(options)
|
51
33
|
@using = Hash.new
|
@@ -54,10 +36,6 @@ module Autobuild
|
|
54
36
|
super
|
55
37
|
end
|
56
38
|
|
57
|
-
def install_doc(relative_to = builddir)
|
58
|
-
super(relative_to)
|
59
|
-
end
|
60
|
-
|
61
39
|
# Declare that the given target can be used to generate documentation
|
62
40
|
def with_doc(target = 'doc')
|
63
41
|
doc_task do
|
@@ -107,30 +85,17 @@ module Autobuild
|
|
107
85
|
nil
|
108
86
|
end
|
109
87
|
|
110
|
-
def depends_on(*packages)
|
111
|
-
super
|
112
|
-
stamps = packages.collect { |p| Package[p.to_s].installstamp }
|
113
|
-
file "#{builddir}/config.status" => stamps
|
114
|
-
end
|
115
|
-
|
116
|
-
def ensure_dependencies_installed
|
117
|
-
dependencies.each do |pkg|
|
118
|
-
Rake::Task[Package[pkg].installstamp].invoke
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
88
|
def prepare
|
123
89
|
super
|
124
90
|
|
125
|
-
configureflags.flatten!
|
126
|
-
|
127
91
|
# Check if config.status has been generated with the
|
128
92
|
# same options than the ones in configureflags
|
129
|
-
|
130
|
-
|
93
|
+
#
|
94
|
+
# If it is not the case, remove it to force reconfiguration
|
95
|
+
configureflags.flatten!
|
131
96
|
force_reconfigure = false
|
132
|
-
if File.exists?(
|
133
|
-
output = IO.popen("#{
|
97
|
+
if File.exists?(configurestamp)
|
98
|
+
output = IO.popen("#{configurestamp} --version").readlines.grep(/with options/).first.chomp
|
134
99
|
raise "invalid output of config.status --version" unless output =~ /with options "(.*)"$/
|
135
100
|
options = Shellwords.shellwords($1)
|
136
101
|
|
@@ -139,34 +104,17 @@ module Autobuild
|
|
139
104
|
old_opt = options.find { |o| !testflags.include?(o) }
|
140
105
|
new_opt = testflags.find { |o| !options.include?(o) }
|
141
106
|
if old_opt || new_opt
|
142
|
-
FileUtils.rm_f
|
107
|
+
FileUtils.rm_f configurestamp # to force reconfiguration
|
143
108
|
end
|
144
109
|
end
|
145
110
|
|
146
|
-
|
147
|
-
|
148
|
-
configure
|
149
|
-
end
|
150
|
-
|
151
|
-
Autobuild.source_tree srcdir do |pkg|
|
152
|
-
pkg.exclude << Regexp.new("^#{Regexp.quote(builddir)}")
|
153
|
-
end
|
154
|
-
file buildstamp => [ srcdir, "#{builddir}/config.status" ] do
|
155
|
-
ensure_dependencies_installed
|
156
|
-
build
|
157
|
-
end
|
158
|
-
task "#{name}-build" => installstamp
|
159
|
-
|
160
|
-
file installstamp => buildstamp do
|
161
|
-
install
|
162
|
-
end
|
163
|
-
|
164
|
-
Autobuild.update_environment(prefix)
|
111
|
+
regen_target = create_regen_target
|
112
|
+
file configurestamp => regen_target
|
165
113
|
end
|
166
114
|
|
167
115
|
private
|
168
116
|
# Adds a target to rebuild the autotools environment
|
169
|
-
def
|
117
|
+
def create_regen_target(confsource = nil)
|
170
118
|
conffile = "#{srcdir}/configure"
|
171
119
|
if confsource
|
172
120
|
file conffile => confsource
|
@@ -206,6 +154,13 @@ module Autobuild
|
|
206
154
|
Subprocess.run(self, 'configure', tool_program)
|
207
155
|
end
|
208
156
|
end
|
157
|
+
|
158
|
+
if using[:libtool].nil?
|
159
|
+
using[:libtool] = File.exists?(File.join(srcdir, 'ltmain.sh'))
|
160
|
+
end
|
161
|
+
if using[:libtool]
|
162
|
+
Subprocess.run(self, 'configure', Autobuild.tool('libtoolize'), '--copy')
|
163
|
+
end
|
209
164
|
end
|
210
165
|
end
|
211
166
|
end
|
@@ -215,18 +170,15 @@ module Autobuild
|
|
215
170
|
|
216
171
|
# Configure the builddir directory before starting make
|
217
172
|
def configure
|
218
|
-
|
219
|
-
|
173
|
+
super do
|
174
|
+
Dir.chdir(builddir) do
|
175
|
+
command = [ "#{srcdir}/configure", "--no-create", "--prefix=#{prefix}" ]
|
176
|
+
command += Array[*configureflags]
|
177
|
+
|
178
|
+
progress "configuring build system for %s"
|
179
|
+
Subprocess.run(self, 'configure', *command)
|
180
|
+
end
|
220
181
|
end
|
221
|
-
|
222
|
-
FileUtils.mkdir_p builddir if !File.directory?(builddir)
|
223
|
-
Dir.chdir(builddir) {
|
224
|
-
command = [ "#{srcdir}/configure", "--no-create", "--prefix=#{prefix}" ]
|
225
|
-
command += Array[*configureflags]
|
226
|
-
|
227
|
-
progress "configuring build system for %s"
|
228
|
-
Subprocess.run(self, 'configure', *command)
|
229
|
-
}
|
230
182
|
end
|
231
183
|
|
232
184
|
# Do the build in builddir
|
@@ -245,8 +197,8 @@ module Autobuild
|
|
245
197
|
progress "installing %s"
|
246
198
|
Subprocess.run(self, 'install', Autobuild.tool(:make), "-j#{parallel_build_level}", 'install')
|
247
199
|
end
|
248
|
-
|
249
|
-
|
200
|
+
|
201
|
+
super
|
250
202
|
end
|
251
203
|
end
|
252
204
|
end
|
@@ -100,19 +100,20 @@ module Autobuild
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def prepare
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
# A failed initial CMake configuration leaves a CMakeCache.txt file,
|
104
|
+
# but no Makefile.
|
105
|
+
#
|
106
|
+
# Delete the CMakeCache to force reconfiguration
|
108
107
|
if !File.exists?( File.join(builddir, 'Makefile') )
|
109
108
|
FileUtils.rm_f configurestamp
|
110
109
|
end
|
111
110
|
|
112
111
|
if File.exists?(configurestamp)
|
112
|
+
all_defines = defines.dup
|
113
|
+
all_defines['CMAKE_INSTALL_PREFIX'] = prefix
|
113
114
|
cache = File.read(configurestamp)
|
114
115
|
did_change = all_defines.any? do |name, value|
|
115
|
-
cache_line = cache.find do |line|
|
116
|
+
cache_line = cache.each_line.find do |line|
|
116
117
|
line =~ /^#{name}:/
|
117
118
|
end
|
118
119
|
|
@@ -133,28 +134,26 @@ module Autobuild
|
|
133
134
|
FileUtils.rm_f configurestamp
|
134
135
|
end
|
135
136
|
end
|
137
|
+
|
138
|
+
super
|
136
139
|
end
|
137
140
|
|
138
141
|
# Configure the builddir directory before starting make
|
139
142
|
def configure
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
if full_reconfigures?
|
154
|
-
FileUtils.rm_f configurestamp
|
143
|
+
super do
|
144
|
+
Dir.chdir(builddir) do
|
145
|
+
command = [ "cmake", "-DCMAKE_INSTALL_PREFIX=#{prefix}" ]
|
146
|
+
defines.each do |name, value|
|
147
|
+
command << "-D#{name}=#{value}"
|
148
|
+
end
|
149
|
+
command << srcdir
|
150
|
+
|
151
|
+
progress "generating and configuring build system for %s"
|
152
|
+
if full_reconfigures?
|
153
|
+
FileUtils.rm_f configurestamp
|
154
|
+
end
|
155
|
+
Subprocess.run(self, 'configure', *command)
|
155
156
|
end
|
156
|
-
Subprocess.run(self, 'configure', *command)
|
157
|
-
super
|
158
157
|
end
|
159
158
|
end
|
160
159
|
|
@@ -179,7 +178,6 @@ module Autobuild
|
|
179
178
|
Dir.chdir(builddir) do
|
180
179
|
progress "installing %s"
|
181
180
|
Subprocess.run(self, 'build', Autobuild.tool(:make), "-j#{parallel_build_level}", 'install')
|
182
|
-
Autobuild.update_environment prefix
|
183
181
|
end
|
184
182
|
super
|
185
183
|
end
|
@@ -26,9 +26,11 @@ module Autobuild
|
|
26
26
|
# after all imports have been made
|
27
27
|
def prepare
|
28
28
|
genomflags.flatten!
|
29
|
+
get_requires
|
29
30
|
|
30
31
|
super
|
31
|
-
|
32
|
+
|
33
|
+
file genomstamp => dependencies.map { |p| Package[p].installstamp }
|
32
34
|
end
|
33
35
|
|
34
36
|
# The file touched by genom on successful generation
|
@@ -85,11 +87,6 @@ module Autobuild
|
|
85
87
|
}
|
86
88
|
end
|
87
89
|
end
|
88
|
-
|
89
|
-
def depends_on(*packages)
|
90
|
-
super
|
91
|
-
file genomstamp => packages.map { |p| Package[p].installstamp }
|
92
|
-
end
|
93
90
|
|
94
91
|
# Make the genom-stamp file depend on
|
95
92
|
# * genom includes
|
@@ -150,14 +150,24 @@ module Autobuild
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
-
def self.
|
154
|
-
if @
|
155
|
-
@
|
156
|
-
if @orogen_root.empty?
|
157
|
-
@orogen_root = false
|
158
|
-
end
|
153
|
+
def self.orogen_bin
|
154
|
+
if @orogen_bin
|
155
|
+
@orogen_bin
|
159
156
|
else
|
157
|
+
program_name = Autobuild.tool('orogen')
|
158
|
+
if orogen_path = ENV['PATH'].split(':').find { |p| File.file?(File.join(p, program_name)) }
|
159
|
+
@orogen_bin = File.join(orogen_path, program_name)
|
160
|
+
else
|
161
|
+
program_name
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def self.orogen_root
|
167
|
+
if @orogen_root
|
160
168
|
@orogen_root
|
169
|
+
elsif orogen_bin = self.orogen_bin
|
170
|
+
@orogen_root = File.expand_path('../lib', File.dirname(orogen_bin))
|
161
171
|
end
|
162
172
|
end
|
163
173
|
|
@@ -186,14 +196,6 @@ module Autobuild
|
|
186
196
|
@orogen_file ||= "#{File.basename(name)}.orogen"
|
187
197
|
end
|
188
198
|
|
189
|
-
def depends_on(*packages)
|
190
|
-
super
|
191
|
-
|
192
|
-
packages.each do |p|
|
193
|
-
file genstamp => Package[p].installstamp
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
199
|
def import
|
198
200
|
super
|
199
201
|
|
@@ -206,8 +208,6 @@ module Autobuild
|
|
206
208
|
end
|
207
209
|
|
208
210
|
def prepare
|
209
|
-
super
|
210
|
-
|
211
211
|
# Check if someone provides the pkgconfig/orocos-rtt-TARGET package,
|
212
212
|
# and if so add it into our dependency list
|
213
213
|
if rtt = Autobuild::Package["pkgconfig/orocos-rtt-#{orocos_target}"]
|
@@ -234,11 +234,8 @@ module Autobuild
|
|
234
234
|
# Find out where orogen is, and make sure the configurestamp depend
|
235
235
|
# on it. Ignore if orogen is too old to have a --base-dir option
|
236
236
|
if orogen_root = self.class.orogen_root
|
237
|
-
orogen_root = orogen_root
|
238
|
-
|
239
|
-
orogen_root = File.join(orogen_root, 'orogen')
|
240
|
-
file genstamp => Autobuild.source_tree(orogen_root)
|
241
|
-
end
|
237
|
+
orogen_root = File.join(orogen_root, 'orogen')
|
238
|
+
file genstamp => Autobuild.source_tree(orogen_root)
|
242
239
|
end
|
243
240
|
end
|
244
241
|
|
@@ -248,11 +245,26 @@ module Autobuild
|
|
248
245
|
end
|
249
246
|
|
250
247
|
with_doc
|
248
|
+
|
249
|
+
super
|
250
|
+
|
251
|
+
dependencies.each do |p|
|
252
|
+
file genstamp => Package[p].installstamp
|
253
|
+
end
|
251
254
|
end
|
252
255
|
def genstamp; File.join(srcdir, '.orogen', 'orogen-stamp') end
|
253
256
|
|
257
|
+
def guess_ruby_name
|
258
|
+
if Autobuild.programs['ruby']
|
259
|
+
Autobuild.tool('ruby')
|
260
|
+
else
|
261
|
+
ruby_bin = Config::CONFIG['RUBY_INSTALL_NAME']
|
262
|
+
Autobuild.programs['ruby'] = ruby_bin
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
254
266
|
def regen
|
255
|
-
cmdline = [
|
267
|
+
cmdline = [guess_ruby_name, self.class.orogen_bin]
|
256
268
|
cmdline << '--corba' if corba
|
257
269
|
cmdline << orogen_file
|
258
270
|
|
data/lib/autobuild/timestamps.rb
CHANGED
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
|
+
version: 1.5.0
|
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: 2010-
|
12
|
+
date: 2010-02-06 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -52,6 +52,26 @@ dependencies:
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: 1.3.3
|
54
54
|
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubyforge
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 2.0.3
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: gemcutter
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.3.0
|
74
|
+
version:
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
76
|
name: hoe
|
57
77
|
type: :development
|
@@ -60,7 +80,7 @@ dependencies:
|
|
60
80
|
requirements:
|
61
81
|
- - ">="
|
62
82
|
- !ruby/object:Gem::Version
|
63
|
-
version: 2.
|
83
|
+
version: 2.5.0
|
64
84
|
version:
|
65
85
|
description: |-
|
66
86
|
This work is licensed under the GPLv2 license. See License.txt for details
|