autobuild 1.13.0 → 1.14.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/lib/autobuild.rb +1 -1
- data/lib/autobuild/configurable.rb +3 -3
- data/lib/autobuild/packages/python.rb +93 -0
- data/lib/autobuild/reporting.rb +7 -15
- data/lib/autobuild/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc3844e5cb144f3b3e1fda8a22ac5b6531c12439
|
4
|
+
data.tar.gz: ddbecdd7203bd378c2c4504d1598e8da3be460aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa366e2f4f0b29e6c9f2752528fb44445cb419cc7b1e0fd697f7b4a1cf66d174d86f11e5eabc5872ba90e8f27ec0cdbcc68a1a097096fa5d3d3fc59fdf8558e3
|
7
|
+
data.tar.gz: 72ec8e6137f757cd13af392076b7e6b3b04af67963628e4d8a4de823fe1b631363d3b45f03dc22a69b1432a6dd198a4e51144105231b3924153928ea453b7262
|
data/lib/autobuild.rb
CHANGED
@@ -12,7 +12,7 @@ module Autobuild
|
|
12
12
|
# source files have been updated. The #buildstamp stampfile represents when
|
13
13
|
# the last build has been done. The build must be done in the #builddir directory.
|
14
14
|
# * +install+ is ran after +build+.
|
15
|
-
#
|
15
|
+
#
|
16
16
|
class Configurable < Package
|
17
17
|
# Set of regexp matching paths that should not be considered as source
|
18
18
|
# files
|
@@ -51,7 +51,7 @@ def builddir=(new)
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
@builddir = 'build'
|
54
|
-
|
54
|
+
|
55
55
|
def builddir=(new)
|
56
56
|
raise ConfigException.new(self), "builddir must be non-empty" if new.empty?
|
57
57
|
@builddir = new
|
@@ -122,7 +122,7 @@ def configure
|
|
122
122
|
end
|
123
123
|
FileUtils.mkdir_p builddir if !File.directory?(builddir)
|
124
124
|
|
125
|
-
yield
|
125
|
+
yield if block_given?
|
126
126
|
|
127
127
|
Autobuild.touch_stamp(configurestamp)
|
128
128
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'autobuild/configurable'
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
# Main Autobuild module
|
5
|
+
module Autobuild
|
6
|
+
def self.python(opts, &proc)
|
7
|
+
Python.new(opts, &proc)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Handler class to build python-based packages
|
11
|
+
class Python < Configurable
|
12
|
+
attr_accessor :buildflags
|
13
|
+
attr_accessor :installflags
|
14
|
+
|
15
|
+
def configurestamp
|
16
|
+
"#{builddir}/configure-autobuild-stamp"
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
@buildflags = []
|
21
|
+
@installflags = []
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def prepare
|
26
|
+
super
|
27
|
+
@install_mode = File.file?(File.join(srcdir, 'setup.py'))
|
28
|
+
end
|
29
|
+
|
30
|
+
def prepare_for_forced_build
|
31
|
+
super
|
32
|
+
FileUtils.rm_f configurestamp
|
33
|
+
@forced = true
|
34
|
+
end
|
35
|
+
|
36
|
+
def generate_build_command
|
37
|
+
command = ['python', 'setup.py', 'build']
|
38
|
+
command << "--build-base=#{builddir}"
|
39
|
+
command += buildflags.flatten
|
40
|
+
command
|
41
|
+
end
|
42
|
+
|
43
|
+
def generate_install_command
|
44
|
+
command = generate_build_command
|
45
|
+
command << 'install'
|
46
|
+
command << "--prefix=#{prefix}"
|
47
|
+
command += installflags.flatten
|
48
|
+
command
|
49
|
+
end
|
50
|
+
|
51
|
+
def python_path
|
52
|
+
begin
|
53
|
+
_, output, _, ret = Open3.popen3({ 'PYTHONUSERBASE' => prefix },
|
54
|
+
'python -m site --user-site')
|
55
|
+
rescue Exception => e
|
56
|
+
raise "Unable to set PYTHONPATH: #{e.message}"
|
57
|
+
end
|
58
|
+
|
59
|
+
return output.read.chomp if ret.value.success?
|
60
|
+
raise 'Unable to set PYTHONPATH: user site directory disabled?'
|
61
|
+
end
|
62
|
+
|
63
|
+
# Do the build in builddir
|
64
|
+
def build
|
65
|
+
return unless @install_mode
|
66
|
+
command = generate_build_command
|
67
|
+
command << '--force' if @forced
|
68
|
+
progress_start 'building %s [progress not available]',
|
69
|
+
done_message: 'built %s' do
|
70
|
+
run 'build', *command, working_directory: srcdir
|
71
|
+
end
|
72
|
+
Autobuild.touch_stamp(buildstamp)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Install the result in prefix
|
76
|
+
def install
|
77
|
+
return unless @install_mode
|
78
|
+
command = generate_install_command
|
79
|
+
command << '--force' if @forced
|
80
|
+
progress_start 'installing %s',
|
81
|
+
done_message: 'installed %s' do
|
82
|
+
run 'install', *command, working_directory: srcdir
|
83
|
+
end
|
84
|
+
super
|
85
|
+
end
|
86
|
+
|
87
|
+
def update_environment
|
88
|
+
super
|
89
|
+
path = @install_mode ? python_path : srcdir
|
90
|
+
env_add_path 'PYTHONPATH', path
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/autobuild/reporting.rb
CHANGED
@@ -52,15 +52,10 @@ def self.display_message(*args)
|
|
52
52
|
return
|
53
53
|
end
|
54
54
|
|
55
|
-
size =
|
56
|
-
if @last_progress_msg then @last_progress_msg.size
|
57
|
-
else 0
|
58
|
-
end
|
59
|
-
|
60
55
|
if !silent?
|
61
|
-
io.puts "
|
56
|
+
io.puts "#{clear_line}#{msg}"
|
62
57
|
if @last_progress_msg
|
63
|
-
print
|
58
|
+
io.print @last_progress_msg
|
64
59
|
end
|
65
60
|
end
|
66
61
|
end
|
@@ -86,6 +81,10 @@ def self.has_progress_for?(key)
|
|
86
81
|
progress_messages.any? { |msg_key, _| msg_key == key }
|
87
82
|
end
|
88
83
|
|
84
|
+
def self.clear_line
|
85
|
+
"\e[2K\e[1G"
|
86
|
+
end
|
87
|
+
|
89
88
|
def self.progress_start(key, *args)
|
90
89
|
if args.last.kind_of?(Hash)
|
91
90
|
options = Kernel.validate_options args.pop, :done_message => nil
|
@@ -226,24 +225,17 @@ def self.format_progress_message(messages)
|
|
226
225
|
|
227
226
|
def self.display_progress
|
228
227
|
msg = format_progress_message(progress_messages.map(&:last))
|
229
|
-
last_msg_length =
|
230
|
-
if @last_progress_msg then @last_progress_msg.length
|
231
|
-
else 0
|
232
|
-
end
|
233
228
|
|
234
229
|
if msg.empty?
|
235
|
-
blank = " " * last_msg_length
|
236
230
|
@last_progress_msg = nil
|
237
231
|
else
|
238
232
|
msg = " #{msg}"
|
239
|
-
blank = " " * [last_msg_length - msg.length, 0].max
|
240
233
|
@last_progress_msg = msg
|
241
234
|
end
|
242
235
|
|
243
236
|
if !silent?
|
244
237
|
if Autobuild.progress_display_enabled?
|
245
|
-
print "
|
246
|
-
print "\r#{msg}"
|
238
|
+
print "#{clear_line}#{msg}"
|
247
239
|
elsif @last_progress_msg
|
248
240
|
puts msg
|
249
241
|
end
|
data/lib/autobuild/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autobuild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- lib/autobuild/packages/import.rb
|
197
197
|
- lib/autobuild/packages/orogen.rb
|
198
198
|
- lib/autobuild/packages/pkgconfig.rb
|
199
|
+
- lib/autobuild/packages/python.rb
|
199
200
|
- lib/autobuild/packages/ruby.rb
|
200
201
|
- lib/autobuild/parallel.rb
|
201
202
|
- lib/autobuild/pkgconfig.rb
|