autobuild 1.4.9 → 1.5.0
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 +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
|