autobuild 1.21.0 → 1.22.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.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +25 -0
- data/.github/workflows/test.yml +30 -0
- data/.rubocop.yml +14 -7
- data/autobuild.gemspec +1 -1
- data/bin/autobuild +1 -1
- data/lib/autobuild/build_logfile.rb +1 -2
- data/lib/autobuild/config.rb +5 -5
- data/lib/autobuild/environment.rb +28 -45
- data/lib/autobuild/exceptions.rb +11 -5
- data/lib/autobuild/import/archive.rb +31 -22
- data/lib/autobuild/import/cvs.rb +6 -6
- data/lib/autobuild/import/darcs.rb +4 -4
- data/lib/autobuild/import/git-lfs.rb +4 -4
- data/lib/autobuild/import/git.rb +139 -66
- data/lib/autobuild/import/hg.rb +7 -7
- data/lib/autobuild/import/svn.rb +15 -9
- data/lib/autobuild/importer.rb +33 -37
- data/lib/autobuild/mail_reporter.rb +5 -2
- data/lib/autobuild/package.rb +14 -12
- data/lib/autobuild/packages/autotools.rb +3 -8
- data/lib/autobuild/packages/cmake.rb +11 -8
- data/lib/autobuild/packages/dummy.rb +0 -4
- data/lib/autobuild/packages/gnumake.rb +1 -1
- data/lib/autobuild/packages/orogen.rb +11 -4
- data/lib/autobuild/packages/pkgconfig.rb +2 -2
- data/lib/autobuild/packages/python.rb +1 -2
- data/lib/autobuild/packages/ruby.rb +5 -5
- data/lib/autobuild/parallel.rb +7 -16
- data/lib/autobuild/pkgconfig.rb +1 -0
- data/lib/autobuild/progress_display.rb +5 -9
- data/lib/autobuild/rake_task_extension.rb +6 -0
- data/lib/autobuild/reporting.rb +7 -7
- data/lib/autobuild/subcommand.rb +24 -23
- data/lib/autobuild/timestamps.rb +3 -3
- data/lib/autobuild/utility.rb +3 -3
- data/lib/autobuild/version.rb +1 -1
- data/lib/autobuild.rb +0 -3
- metadata +5 -4
- data/.travis.yml +0 -21
data/lib/autobuild/import/hg.rb
CHANGED
@@ -17,9 +17,9 @@ module Autobuild
|
|
17
17
|
# @option options [String] :branch (default) the branch to track
|
18
18
|
def initialize(repository, options = {})
|
19
19
|
hgopts, _common = Kernel.filter_options options,
|
20
|
-
|
20
|
+
branch: 'default'
|
21
21
|
sourceopts, common = Kernel.filter_options options,
|
22
|
-
|
22
|
+
:repository_id, :source_id
|
23
23
|
|
24
24
|
super(common)
|
25
25
|
@branch = hgopts[:branch]
|
@@ -48,8 +48,8 @@ module Autobuild
|
|
48
48
|
def validate_importdir(package)
|
49
49
|
unless File.directory?(File.join(package.importdir, '.hg'))
|
50
50
|
raise ConfigException.new(package, 'import'),
|
51
|
-
|
52
|
-
|
51
|
+
"while importing #{package.name}, "\
|
52
|
+
"#{package.importdir} is not a hg repository"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -61,9 +61,9 @@ module Autobuild
|
|
61
61
|
end
|
62
62
|
validate_importdir(package)
|
63
63
|
package.run(:import, Autobuild.tool('hg'), 'pull',
|
64
|
-
|
64
|
+
repository, retry: true, working_directory: package.importdir)
|
65
65
|
package.run(:import, Autobuild.tool('hg'), 'update',
|
66
|
-
|
66
|
+
branch, working_directory: package.importdir)
|
67
67
|
true # no easy to know if package was updated, keep previous behavior
|
68
68
|
end
|
69
69
|
|
@@ -72,7 +72,7 @@ module Autobuild
|
|
72
72
|
FileUtils.mkdir_p(base_dir) unless File.directory?(base_dir)
|
73
73
|
|
74
74
|
package.run(:import, Autobuild.tool('hg'), 'clone',
|
75
|
-
|
75
|
+
'-u', branch, repository, package.importdir, retry: true)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
data/lib/autobuild/import/svn.rb
CHANGED
@@ -14,9 +14,11 @@ module Autobuild
|
|
14
14
|
# Autobuild.programs['svn'] = 'my_svn_tool'
|
15
15
|
def initialize(svnroot, options = {})
|
16
16
|
svnroot = [*svnroot].join("/")
|
17
|
-
svnopts, common = Kernel.filter_options
|
17
|
+
svnopts, common = Kernel.filter_options(
|
18
|
+
options,
|
18
19
|
:svnup => [], :svnco => [], :revision => nil,
|
19
20
|
:repository_id => "svn:#{svnroot}"
|
21
|
+
)
|
20
22
|
common[:repository_id] = svnopts.delete(:repository_id)
|
21
23
|
relocate(svnroot, svnopts)
|
22
24
|
super(common.merge(repository_id: svnopts[:repository_id]))
|
@@ -67,7 +69,7 @@ module Autobuild
|
|
67
69
|
revision = svninfo.grep(/^Revision: /).first
|
68
70
|
unless revision
|
69
71
|
raise ConfigException.new(package, 'import'),
|
70
|
-
|
72
|
+
"cannot get SVN information for #{package.importdir}"
|
71
73
|
end
|
72
74
|
revision =~ /Revision: (\d+)/
|
73
75
|
Integer($1)
|
@@ -79,7 +81,9 @@ module Autobuild
|
|
79
81
|
# @return [String]
|
80
82
|
# @raises (see svn_info)
|
81
83
|
def vcs_fingerprint(package)
|
82
|
-
Digest::SHA1.hexdigest(
|
84
|
+
Digest::SHA1.hexdigest(
|
85
|
+
svn_info(package).grep(/^(URL|Revision):/).sort.join("\n")
|
86
|
+
)
|
83
87
|
end
|
84
88
|
|
85
89
|
# Returns the URL of the remote SVN repository
|
@@ -93,7 +97,7 @@ module Autobuild
|
|
93
97
|
url = svninfo.grep(/^URL: /).first
|
94
98
|
unless url
|
95
99
|
raise ConfigException.new(package, 'import'),
|
96
|
-
|
100
|
+
"cannot get SVN information for #{package.importdir}"
|
97
101
|
end
|
98
102
|
url.chomp =~ /URL: (.+)/
|
99
103
|
$1
|
@@ -165,8 +169,9 @@ module Autobuild
|
|
165
169
|
Hash.new
|
166
170
|
end
|
167
171
|
|
168
|
-
options, other_options = Kernel.filter_options
|
169
|
-
working_directory: package.importdir, retry: true
|
172
|
+
options, other_options = Kernel.filter_options(
|
173
|
+
options, working_directory: package.importdir, retry: true
|
174
|
+
)
|
170
175
|
options = options.merge(other_options)
|
171
176
|
package.run(:import, Autobuild.tool(:svn), *args, options, &block)
|
172
177
|
end
|
@@ -203,7 +208,8 @@ module Autobuild
|
|
203
208
|
|
204
209
|
unless svninfo.grep(/is not a working copy/).empty?
|
205
210
|
raise ConfigException.new(package, 'import'),
|
206
|
-
|
211
|
+
"#{package.importdir} does not appear to be a "\
|
212
|
+
"Subversion working copy"
|
207
213
|
end
|
208
214
|
svninfo
|
209
215
|
ensure
|
@@ -241,8 +247,8 @@ module Autobuild
|
|
241
247
|
|
242
248
|
def checkout(package, _options = Hash.new) # :nodoc:
|
243
249
|
run_svn(package, 'co', "--non-interactive", *@options_co,
|
244
|
-
|
245
|
-
|
250
|
+
svnroot, package.importdir,
|
251
|
+
working_directory: nil)
|
246
252
|
end
|
247
253
|
end
|
248
254
|
|
data/lib/autobuild/importer.rb
CHANGED
@@ -203,7 +203,8 @@ module Autobuild
|
|
203
203
|
|
204
204
|
patches_fingerprint_string = patches_fingerprint(package)
|
205
205
|
if patches_fingerprint_string
|
206
|
-
Digest::SHA1.hexdigest(vcs_fingerprint_string +
|
206
|
+
Digest::SHA1.hexdigest(vcs_fingerprint_string +
|
207
|
+
patches_fingerprint_string)
|
207
208
|
elsif patches.empty?
|
208
209
|
vcs_fingerprint_string
|
209
210
|
end
|
@@ -211,16 +212,19 @@ module Autobuild
|
|
211
212
|
|
212
213
|
# basic fingerprint of the package and its dependencies
|
213
214
|
def vcs_fingerprint(package)
|
214
|
-
#each importer type should implement its own
|
215
|
-
Autoproj.warn "Fingerprint in #{package.name} has not been implemented
|
216
|
-
|
215
|
+
# each importer type should implement its own
|
216
|
+
Autoproj.warn "Fingerprint in #{package.name} has not been implemented "\
|
217
|
+
"for this type of packages, results should be discarded"
|
218
|
+
nil
|
217
219
|
end
|
218
220
|
|
219
221
|
# fingerprint for patches associated to this package
|
220
222
|
def patches_fingerprint(package)
|
221
223
|
cur_patches = currently_applied_patches(package)
|
222
|
-
cur_patches.map(&:shift) #leave only level and source information
|
223
|
-
|
224
|
+
cur_patches.map(&:shift) # leave only level and source information
|
225
|
+
if !patches.empty? && cur_patches
|
226
|
+
Digest::SHA1.hexdigest(cur_patches.sort.flatten.join(""))
|
227
|
+
end
|
224
228
|
end
|
225
229
|
|
226
230
|
# Sets the number of times update / checkout should be retried before giving
|
@@ -314,12 +318,10 @@ module Autobuild
|
|
314
318
|
end
|
315
319
|
|
316
320
|
# Enumerate the post-import hooks for this importer
|
317
|
-
def each_post_hook(error: false)
|
321
|
+
def each_post_hook(error: false, &block)
|
318
322
|
return enum_for(__method__, error: false) unless block_given?
|
319
323
|
|
320
|
-
self.class.each_post_hook(error: error)
|
321
|
-
yield(callback)
|
322
|
-
end
|
324
|
+
self.class.each_post_hook(error: error, &block)
|
323
325
|
|
324
326
|
post_hooks.each do |hook|
|
325
327
|
yield(hook.callback) if hook.always || !error
|
@@ -357,9 +359,9 @@ module Autobuild
|
|
357
359
|
raise last_error
|
358
360
|
else raise
|
359
361
|
end
|
360
|
-
rescue ::Exception =>
|
362
|
+
rescue ::Exception => e
|
361
363
|
message = Autobuild.color('update failed', :red)
|
362
|
-
last_error =
|
364
|
+
last_error = e
|
363
365
|
# If the package is patched, it might be that the update
|
364
366
|
# failed because we needed to unpatch first. Try it out
|
365
367
|
#
|
@@ -378,11 +380,11 @@ module Autobuild
|
|
378
380
|
rescue Interrupt
|
379
381
|
raise
|
380
382
|
rescue ::Exception
|
381
|
-
raise
|
383
|
+
raise e
|
382
384
|
end
|
383
385
|
end
|
384
386
|
|
385
|
-
retry_count = update_retry_count(
|
387
|
+
retry_count = update_retry_count(e, retry_count)
|
386
388
|
raise unless retry_count
|
387
389
|
|
388
390
|
package.message "update failed in #{package.importdir}, "\
|
@@ -399,20 +401,20 @@ module Autobuild
|
|
399
401
|
fallback(e, package, :import, package)
|
400
402
|
end
|
401
403
|
|
402
|
-
def perform_checkout(package, options
|
404
|
+
def perform_checkout(package, **options)
|
403
405
|
last_error = nil
|
404
406
|
package.progress_start "checking out %s", :done_message => 'checked out %s' do
|
405
407
|
retry_count = 0
|
406
408
|
begin
|
407
|
-
checkout(package, options)
|
409
|
+
checkout(package, **options)
|
408
410
|
execute_post_hooks(package)
|
409
411
|
rescue Interrupt
|
410
412
|
if last_error then raise last_error
|
411
413
|
else raise
|
412
414
|
end
|
413
|
-
rescue ::Exception =>
|
414
|
-
last_error =
|
415
|
-
retry_count = update_retry_count(
|
415
|
+
rescue ::Exception => e
|
416
|
+
last_error = e
|
417
|
+
retry_count = update_retry_count(e, retry_count)
|
416
418
|
raise unless retry_count
|
417
419
|
|
418
420
|
package.message "checkout of %s failed, "\
|
@@ -456,31 +458,26 @@ module Autobuild
|
|
456
458
|
# ID is given will, in this mode, reset the repository to the requested ID
|
457
459
|
# (if that does not involve losing commits). Otherwise, it will only
|
458
460
|
# ensure that the requested commit ID is present in the current HEAD.
|
459
|
-
def import(
|
461
|
+
def import( # rubocop:disable Metrics/ParameterLists
|
462
|
+
package, *old_boolean,
|
463
|
+
ignore_errors: false, checkout_only: false, allow_interactive: true, **options
|
464
|
+
)
|
460
465
|
# Backward compatibility
|
461
|
-
unless
|
462
|
-
|
466
|
+
unless old_boolean.empty?
|
467
|
+
old_boolean = old_boolean.first
|
463
468
|
Autoproj.warn "calling #import with a boolean as second argument "\
|
464
469
|
"is deprecated, switch to the named argument interface instead"
|
465
|
-
Autoproj.warn " e.g. call import(package, only_local: #{
|
470
|
+
Autoproj.warn " e.g. call import(package, only_local: #{old_boolean})"
|
466
471
|
Autoproj.warn " #{caller(1..1).first}"
|
467
|
-
options =
|
472
|
+
options[:only_local] = old_boolean
|
468
473
|
end
|
469
474
|
|
470
|
-
options = Kernel.validate_options options,
|
471
|
-
only_local: false,
|
472
|
-
reset: false,
|
473
|
-
checkout_only: false,
|
474
|
-
ignore_errors: false,
|
475
|
-
allow_interactive: true
|
476
|
-
ignore_errors = options.delete(:ignore_errors)
|
477
|
-
|
478
475
|
importdir = package.importdir
|
479
476
|
if File.directory?(importdir)
|
480
477
|
package.isolate_errors(mark_as_failed: false,
|
481
478
|
ignore_errors: ignore_errors) do
|
482
|
-
if !
|
483
|
-
perform_update(package, options)
|
479
|
+
if !checkout_only && package.update?
|
480
|
+
perform_update(package, checkout_only: false, **options)
|
484
481
|
elsif Autobuild.verbose
|
485
482
|
package.message "%s: not updating"
|
486
483
|
end
|
@@ -488,12 +485,11 @@ module Autobuild
|
|
488
485
|
|
489
486
|
elsif File.exist?(importdir)
|
490
487
|
raise ConfigException.new(package, 'import'),
|
491
|
-
|
488
|
+
"#{importdir} exists but is not a directory"
|
492
489
|
else
|
493
490
|
package.isolate_errors(mark_as_failed: true,
|
494
491
|
ignore_errors: ignore_errors) do
|
495
|
-
perform_checkout(package,
|
496
|
-
allow_interactive: options[:allow_interactive])
|
492
|
+
perform_checkout(package, allow_interactive: allow_interactive)
|
497
493
|
true
|
498
494
|
end
|
499
495
|
end
|
@@ -22,8 +22,11 @@ if Autobuild::HAS_RMAIL
|
|
22
22
|
end
|
23
23
|
|
24
24
|
attr_reader :from_email, :to_email, :smtp_hostname, :smtp_port,
|
25
|
-
|
25
|
+
:subject, :only_errors
|
26
|
+
|
26
27
|
def initialize(config)
|
28
|
+
super()
|
29
|
+
|
27
30
|
@from_email = (config[:from] || default_mail)
|
28
31
|
@to_email = (config[:to] || default_mail)
|
29
32
|
@subject =
|
@@ -78,7 +81,7 @@ if Autobuild::HAS_RMAIL
|
|
78
81
|
to_email.each do |email|
|
79
82
|
mail.header.to = email
|
80
83
|
smtp.send_mail(RMail::Serialize.write('', mail),
|
81
|
-
|
84
|
+
from_email, email)
|
82
85
|
end
|
83
86
|
end
|
84
87
|
|
data/lib/autobuild/package.rb
CHANGED
@@ -64,7 +64,7 @@ module Autobuild
|
|
64
64
|
# Some statistics about the commands that have been run
|
65
65
|
attr_reader :statistics
|
66
66
|
|
67
|
-
EnvOp = Struct.new :type, :name, :values
|
67
|
+
EnvOp = Struct.new :type, :name, :values # rubocop:disable Lint/StructNewOverride
|
68
68
|
|
69
69
|
# List of environment values added by this package with {#env_add},
|
70
70
|
# {#env_add_path} or {#env_set}
|
@@ -150,6 +150,7 @@ module Autobuild
|
|
150
150
|
@imported = false
|
151
151
|
@prepared = false
|
152
152
|
@built = false
|
153
|
+
@disabled = nil
|
153
154
|
|
154
155
|
if Hash === spec
|
155
156
|
name, depends = spec.to_a.first
|
@@ -402,8 +403,8 @@ module Autobuild
|
|
402
403
|
def isolate_errors(options = Hash.new)
|
403
404
|
options = Hash[mark_as_failed: true] unless options.kind_of?(Hash)
|
404
405
|
options = validate_options options,
|
405
|
-
|
406
|
-
|
406
|
+
mark_as_failed: true,
|
407
|
+
ignore_errors: Autobuild.ignore_errors
|
407
408
|
|
408
409
|
# Don't do anything if we already have failed
|
409
410
|
if failed?
|
@@ -448,12 +449,12 @@ module Autobuild
|
|
448
449
|
# be done there as well.
|
449
450
|
#
|
450
451
|
# (see Importer#import)
|
451
|
-
def import(options
|
452
|
-
options =
|
452
|
+
def import(*old_boolean, **options)
|
453
|
+
options = { only_local: old_boolean.first } unless old_boolean.empty?
|
453
454
|
|
454
455
|
@import_invoked = true
|
455
456
|
if @importer
|
456
|
-
result = @importer.import(self, options)
|
457
|
+
result = @importer.import(self, **options)
|
457
458
|
elsif update?
|
458
459
|
message "%s: no importer defined, doing nothing"
|
459
460
|
end
|
@@ -495,12 +496,12 @@ module Autobuild
|
|
495
496
|
end
|
496
497
|
end
|
497
498
|
if suffix.empty?
|
498
|
-
|
499
|
+
msg
|
499
500
|
elsif prefix_style.empty?
|
500
|
-
|
501
|
+
(prefix + suffix).join(" ")
|
501
502
|
else
|
502
503
|
colorized_prefix = Autobuild.color(prefix.join(" "), *prefix_style)
|
503
|
-
|
504
|
+
[colorized_prefix, *suffix].join(" ")
|
504
505
|
end
|
505
506
|
end
|
506
507
|
|
@@ -527,7 +528,7 @@ module Autobuild
|
|
527
528
|
args[0] = process_formatting_string(args[0], :bold)
|
528
529
|
done_message = process_formatting_string(done_message) if done_message
|
529
530
|
Autobuild.progress_start(self, *args,
|
530
|
-
|
531
|
+
done_message: done_message, **raw_options, &block)
|
531
532
|
end
|
532
533
|
|
533
534
|
def progress(*args)
|
@@ -686,10 +687,11 @@ module Autobuild
|
|
686
687
|
pkg = Autobuild::Package[pkg_name]
|
687
688
|
unless (fingerprint = memo[pkg.name])
|
688
689
|
fingerprint = pkg.fingerprint(recursive: true, memo: memo)
|
689
|
-
|
690
|
+
break unless fingerprint
|
690
691
|
end
|
691
692
|
fingerprint
|
692
693
|
end
|
694
|
+
return unless dependency_fingerprints
|
693
695
|
|
694
696
|
memo[name] = Digest::SHA1.hexdigest(
|
695
697
|
self_fingerprint + dependency_fingerprints.join(""))
|
@@ -837,7 +839,7 @@ module Autobuild
|
|
837
839
|
end
|
838
840
|
|
839
841
|
# Make sure that this package will be ignored in the build
|
840
|
-
def disable(
|
842
|
+
def disable(_phases = Autobuild.all_phases)
|
841
843
|
@disabled = true
|
842
844
|
end
|
843
845
|
|
@@ -25,13 +25,8 @@ module Autobuild
|
|
25
25
|
# To override this default behaviour on a per-package basis, use Autotools#use
|
26
26
|
#
|
27
27
|
class Autotools < Configurable
|
28
|
-
attr_accessor
|
29
|
-
|
30
|
-
attr_accessor :aclocal_flags
|
31
|
-
attr_accessor :autoheader_flags
|
32
|
-
attr_accessor :autoconf_flags
|
33
|
-
attr_accessor :automake_flags
|
34
|
-
attr_accessor :bear_flags
|
28
|
+
attr_accessor :using, :configureflags, :aclocal_flags, :autoheader_flags,
|
29
|
+
:autoconf_flags, :automake_flags, :bear_flags
|
35
30
|
|
36
31
|
@builddir = 'build'
|
37
32
|
@@enable_bear_globally = false
|
@@ -278,7 +273,7 @@ module Autobuild
|
|
278
273
|
file conffile => "#{conffile}#{confext}"
|
279
274
|
elsif using[:autoconf]
|
280
275
|
raise PackageException.new(self, 'prepare'),
|
281
|
-
|
276
|
+
"neither configure.ac nor configure.in present in #{srcdir}"
|
282
277
|
end
|
283
278
|
|
284
279
|
file conffile do
|
@@ -25,6 +25,7 @@ module Autobuild
|
|
25
25
|
end
|
26
26
|
|
27
27
|
attr_writer :full_reconfigures
|
28
|
+
|
28
29
|
def full_reconfigures?
|
29
30
|
@full_reconfigures
|
30
31
|
end
|
@@ -36,8 +37,7 @@ module Autobuild
|
|
36
37
|
# It can be overriden on a per-package basis with CMake.generator=
|
37
38
|
attr_accessor :generator
|
38
39
|
|
39
|
-
attr_reader :prefix_path
|
40
|
-
attr_reader :module_path
|
40
|
+
attr_reader :prefix_path, :module_path
|
41
41
|
|
42
42
|
# Whether files that are not within CMake's install manifest but are
|
43
43
|
# present in the prefix should be deleted. Note that the contents of
|
@@ -63,6 +63,7 @@ module Autobuild
|
|
63
63
|
|
64
64
|
# a key => value association of defines for CMake
|
65
65
|
attr_reader :defines
|
66
|
+
|
66
67
|
# The list of all -D options that should be passed on to CMake
|
67
68
|
def all_defines
|
68
69
|
additional_defines = Hash[
|
@@ -81,6 +82,7 @@ module Autobuild
|
|
81
82
|
# Sets a generator explicitely for this component. See #generator and
|
82
83
|
# CMake.generator
|
83
84
|
attr_writer :generator
|
85
|
+
|
84
86
|
# The CMake generator to use. You must choose one that generates
|
85
87
|
# Makefiles. If not set for this package explicitely, it is using the
|
86
88
|
# global value CMake.generator.
|
@@ -267,7 +269,7 @@ module Autobuild
|
|
267
269
|
run('doc', Autobuild.tool(:doxygen), doxyfile)
|
268
270
|
end
|
269
271
|
|
270
|
-
def common_utility_handling(utility, target, start_msg, done_msg)
|
272
|
+
def common_utility_handling(utility, target, *args, start_msg, done_msg)
|
271
273
|
utility.source_ref_dir = builddir
|
272
274
|
utility.task do
|
273
275
|
progress_start start_msg, :done_message => done_msg do
|
@@ -277,7 +279,7 @@ module Autobuild
|
|
277
279
|
run(utility.name,
|
278
280
|
Autobuild.tool(:make),
|
279
281
|
"-j#{parallel_build_level}",
|
280
|
-
target,
|
282
|
+
target, *args,
|
281
283
|
working_directory: builddir)
|
282
284
|
end
|
283
285
|
yield if block_given?
|
@@ -295,7 +297,7 @@ module Autobuild
|
|
295
297
|
|
296
298
|
def with_tests(target = 'test', &block)
|
297
299
|
common_utility_handling(
|
298
|
-
test_utility, target,
|
300
|
+
test_utility, target, "ARGS=-V",
|
299
301
|
"running tests for %s",
|
300
302
|
"successfully ran tests for %s", &block)
|
301
303
|
end
|
@@ -320,7 +322,7 @@ module Autobuild
|
|
320
322
|
end
|
321
323
|
end
|
322
324
|
|
323
|
-
def import(options
|
325
|
+
def import(**options)
|
324
326
|
super
|
325
327
|
|
326
328
|
Dir.glob(File.join(srcdir, "*.pc.in")) do |file|
|
@@ -410,7 +412,7 @@ module Autobuild
|
|
410
412
|
in_dir(builddir) do
|
411
413
|
unless File.file?(File.join(srcdir, 'CMakeLists.txt'))
|
412
414
|
raise ConfigException.new(self, 'configure'),
|
413
|
-
|
415
|
+
"#{srcdir} contains no CMakeLists.txt file"
|
414
416
|
end
|
415
417
|
|
416
418
|
command = ["cmake"]
|
@@ -545,7 +547,8 @@ module Autobuild
|
|
545
547
|
|
546
548
|
def self_fingerprint
|
547
549
|
return unless (base = super)
|
548
|
-
|
550
|
+
|
551
|
+
all_defines = self.class.defines.merge(defines).sort_by(&:first)
|
549
552
|
Digest::SHA1.hexdigest(base + all_defines.join(""))
|
550
553
|
end
|
551
554
|
end
|