autobuild 1.2.3 → 1.2.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 +9 -0
- data/bin/autobuild +7 -2
- data/lib/autobuild.rb +1 -1
- data/lib/autobuild/config.rb +15 -5
- data/lib/autobuild/configurable.rb +18 -15
- data/lib/autobuild/import/git.rb +1 -1
- data/lib/autobuild/package.rb +69 -1
- data/lib/autobuild/packages/cmake.rb +16 -2
- metadata +2 -2
data/Changes.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== Version 1.2.4
|
2
|
+
* git update phase now fetches the repository and branch specified by the
|
3
|
+
autobuild script. It previously was using remote tracking branches. This
|
4
|
+
will allow to detect branch changes in the autobuild specification.
|
5
|
+
* documentation support. Packages can now declare that they can generate
|
6
|
+
documentation (see Package#doc_task and CMake#with_doc). That documentation
|
7
|
+
is generated post-build and installed.
|
8
|
+
* fix build updates in the CMake package class.
|
9
|
+
|
1
10
|
== Version 1.2.3
|
2
11
|
* Fix git update again. FETCH_HEAD may resolve as an ID which is not the one
|
3
12
|
to be selected for merge
|
data/bin/autobuild
CHANGED
@@ -36,8 +36,13 @@ begin
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
if Autobuild.only_doc
|
40
|
+
targets = ['doc']
|
41
|
+
else
|
42
|
+
targets = ['import']
|
43
|
+
targets << 'doc' if Autobuild.do_doc
|
44
|
+
targets += ['prepare', 'build'] if Autobuild.do_build
|
45
|
+
end
|
41
46
|
targets.each do |phase|
|
42
47
|
packages = Autobuild.packages
|
43
48
|
packages = Autobuild.default_packages if packages.empty?
|
data/lib/autobuild.rb
CHANGED
data/lib/autobuild/config.rb
CHANGED
@@ -26,8 +26,9 @@ end
|
|
26
26
|
module Autobuild
|
27
27
|
class << self
|
28
28
|
%w{ nice srcdir prefix
|
29
|
-
verbose debug do_update do_build
|
30
|
-
daemonize clean_log packages default_packages
|
29
|
+
verbose debug do_update do_build only_doc do_doc
|
30
|
+
daemonize clean_log packages default_packages
|
31
|
+
doc_prefix }.each do |name|
|
31
32
|
attr_accessor name
|
32
33
|
end
|
33
34
|
|
@@ -35,11 +36,18 @@ module Autobuild
|
|
35
36
|
attr_reader :programs
|
36
37
|
# The directory in which logs are saved. Defaults to PREFIX/log.
|
37
38
|
attr_writer :logdir
|
39
|
+
|
40
|
+
# True if we build and if the build is applied on all packages
|
41
|
+
def full_build?
|
42
|
+
do_build && !only_doc && packages.empty?
|
43
|
+
end
|
38
44
|
end
|
39
45
|
DEFAULT_OPTIONS = { :nice => 0,
|
40
46
|
:srcdir => Dir.pwd, :prefix => Dir.pwd, :logdir => nil,
|
41
47
|
:verbose => false, :debug => false, :do_build => true, :do_update => true,
|
42
|
-
:daemonize => false, :packages => [], :default_packages => []
|
48
|
+
:daemonize => false, :packages => [], :default_packages => [],
|
49
|
+
:only_doc => false, :do_doc => true,
|
50
|
+
:doc_prefix => 'doc' }
|
43
51
|
|
44
52
|
@programs = Hash.new
|
45
53
|
DEFAULT_OPTIONS.each do |name, value|
|
@@ -143,8 +151,10 @@ module Autobuild
|
|
143
151
|
if defined? Daemons
|
144
152
|
opts.on("--[no-]daemon", "go into daemon mode") do |@daemonize| end
|
145
153
|
end
|
146
|
-
opts.on("--
|
147
|
-
opts.on("--
|
154
|
+
opts.on("--no-update", "update already checked-out sources") do |@do_update| end
|
155
|
+
opts.on("--no-build", "only prepare packages, do not build them") do |@do_build| end
|
156
|
+
opts.on("--only-doc", "only generate documentation") do |@only_doc| end
|
157
|
+
opts.on("--no-doc", "don't generate documentation") do |@doc_doc| end
|
148
158
|
|
149
159
|
opts.separator ""
|
150
160
|
opts.separator "Program output"
|
@@ -46,22 +46,7 @@ module Autobuild
|
|
46
46
|
|
47
47
|
def initialize(options)
|
48
48
|
super
|
49
|
-
Autobuild.update_environment(prefix)
|
50
|
-
end
|
51
|
-
|
52
|
-
def depends_on(*packages)
|
53
|
-
super
|
54
|
-
stamps = packages.collect { |p| Package[p.to_s].installstamp }
|
55
|
-
file configurestamp => stamps
|
56
|
-
end
|
57
49
|
|
58
|
-
def ensure_dependencies_installed
|
59
|
-
dependencies.each do |pkg|
|
60
|
-
Rake::Task[Package[pkg].installstamp].invoke
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def prepare
|
65
50
|
file configurestamp do
|
66
51
|
ensure_dependencies_installed
|
67
52
|
configure
|
@@ -75,11 +60,29 @@ module Autobuild
|
|
75
60
|
ensure_dependencies_installed
|
76
61
|
build
|
77
62
|
end
|
63
|
+
task "#{name}-build" => buildstamp
|
78
64
|
|
79
65
|
file installstamp => buildstamp do
|
80
66
|
install
|
81
67
|
Autobuild.update_environment(prefix)
|
82
68
|
end
|
69
|
+
|
70
|
+
Autobuild.update_environment(prefix)
|
71
|
+
end
|
72
|
+
|
73
|
+
def depends_on(*packages)
|
74
|
+
super
|
75
|
+
stamps = packages.collect { |p| Package[p.to_s].installstamp }
|
76
|
+
file configurestamp => stamps
|
77
|
+
end
|
78
|
+
|
79
|
+
def ensure_dependencies_installed
|
80
|
+
dependencies.each do |pkg|
|
81
|
+
Rake::Task[Package[pkg].installstamp].invoke
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def prepare
|
83
86
|
end
|
84
87
|
|
85
88
|
# Configure the builddir directory before starting make
|
data/lib/autobuild/import/git.rb
CHANGED
@@ -35,7 +35,7 @@ module Autobuild
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Fetch and merge if the merge leads to a fast-forward
|
38
|
-
Subprocess.run(package.name, :import, Autobuild.tool('git'), 'fetch')
|
38
|
+
Subprocess.run(package.name, :import, Autobuild.tool('git'), 'fetch', repository, branch)
|
39
39
|
if !File.readable?( File.join('.git', 'FETCH_HEAD') )
|
40
40
|
return
|
41
41
|
end
|
data/lib/autobuild/package.rb
CHANGED
@@ -63,6 +63,9 @@ module Autobuild
|
|
63
63
|
|
64
64
|
# Call the config block (if any)
|
65
65
|
yield(self) if block_given?
|
66
|
+
|
67
|
+
@doc_dir ||= 'doc'
|
68
|
+
@doc_target_dir ||= name
|
66
69
|
|
67
70
|
# Declare the installation stampfile
|
68
71
|
file installstamp do
|
@@ -88,6 +91,9 @@ module Autobuild
|
|
88
91
|
Rake::Task["#{name}-import"].invoke
|
89
92
|
Rake::Task["#{name}-prepare"].invoke
|
90
93
|
Rake::Task["#{name}-build"].invoke
|
94
|
+
if has_doc? && !Autobuild.no_doc
|
95
|
+
Rake::Task["#{name}-doc"].invoke
|
96
|
+
end
|
91
97
|
end
|
92
98
|
task :default => name
|
93
99
|
end
|
@@ -95,6 +101,69 @@ module Autobuild
|
|
95
101
|
def import; @importer.import(self) if @importer end
|
96
102
|
def prepare; end
|
97
103
|
|
104
|
+
# Directory in which the documentation target will have generated the
|
105
|
+
# documentation (if any). The interpretation of relative directories
|
106
|
+
# is package-specific. The default implementation interpret them
|
107
|
+
# as relative to the source directory, but packages like CMake will
|
108
|
+
# interpret them as relative to their build directories.
|
109
|
+
attr_accessor :doc_dir
|
110
|
+
|
111
|
+
# Directory in which the documentation target should install the
|
112
|
+
# documentation. If it is relative, it is interpreted as relative to
|
113
|
+
# the prefix directory.
|
114
|
+
attr_accessor :doc_target_dir
|
115
|
+
|
116
|
+
# Defines a documentation generation task. The documentation is first
|
117
|
+
# generated by the given block, and then installed. The local attribute
|
118
|
+
# #doc_dir defines where the documentation is generated by the
|
119
|
+
# package's build system, and the #doc_target_dir and
|
120
|
+
# Autobuild.doc_prefix attributes define where it should be installed.
|
121
|
+
#
|
122
|
+
# The block is invoked in the package's source directory
|
123
|
+
#
|
124
|
+
# In general, specific package types define a meaningful #with_doc
|
125
|
+
# method which calls this method internally.
|
126
|
+
def doc_task
|
127
|
+
task "#{name}-doc" => "#{name}-build" do
|
128
|
+
@installed_doc = false
|
129
|
+
catch(:doc_disabled) do
|
130
|
+
Dir.chdir(srcdir) do
|
131
|
+
yield if block_given?
|
132
|
+
end
|
133
|
+
|
134
|
+
unless @installed_doc
|
135
|
+
install_doc
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
task :doc => "#{name}-doc"
|
141
|
+
end
|
142
|
+
|
143
|
+
def install_doc(relative_to = srcdir)
|
144
|
+
full_doc_prefix = File.expand_path(Autobuild.doc_prefix, Autobuild.prefix)
|
145
|
+
doc_target_dir = File.expand_path(self.doc_target_dir, full_doc_prefix)
|
146
|
+
doc_dir = File.expand_path(self.doc_dir, relative_to)
|
147
|
+
FileUtils.rm_rf doc_target_dir
|
148
|
+
FileUtils.mkdir_p File.dirname(doc_target_dir)
|
149
|
+
FileUtils.cp_r doc_dir, doc_target_dir
|
150
|
+
|
151
|
+
@installed_doc = true
|
152
|
+
end
|
153
|
+
|
154
|
+
# Can be called in the doc_task implementation to announce that the
|
155
|
+
# documentation is to be disabled for that package. This is mainly used
|
156
|
+
# when a runtime check is necessary to know if a package has
|
157
|
+
# documentation or not.
|
158
|
+
def doc_disabled
|
159
|
+
throw :doc_disabled
|
160
|
+
end
|
161
|
+
|
162
|
+
# True if a documentation task is defined for this package
|
163
|
+
def has_doc?
|
164
|
+
!!Rake.application.lookup("#{name}-doc")
|
165
|
+
end
|
166
|
+
|
98
167
|
def post_install(*args, &block)
|
99
168
|
if args.empty?
|
100
169
|
@post_install = block
|
@@ -130,7 +199,6 @@ module Autobuild
|
|
130
199
|
task "#{p}-import" => "#{name}-import"
|
131
200
|
task "#{p}-prepare" => "#{name}-prepare"
|
132
201
|
task "#{p}-build" => "#{name}-build"
|
133
|
-
task "#{p}-install" => "#{name}-install"
|
134
202
|
@provides << p
|
135
203
|
end
|
136
204
|
end
|
@@ -31,6 +31,20 @@ module Autobuild
|
|
31
31
|
@defines[name] = value
|
32
32
|
end
|
33
33
|
|
34
|
+
def install_doc
|
35
|
+
super(builddir)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Declare that the given target can be used to generate documentation
|
39
|
+
def with_doc(target = 'doc')
|
40
|
+
doc_task do
|
41
|
+
Dir.chdir(builddir) do
|
42
|
+
Subprocess.run(name, 'doc', Autobuild.tool(:make), target)
|
43
|
+
yield if block_given?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
34
48
|
def prepare
|
35
49
|
super
|
36
50
|
|
@@ -68,7 +82,7 @@ module Autobuild
|
|
68
82
|
command << srcdir
|
69
83
|
|
70
84
|
Subprocess.run(name, 'configure', *command)
|
71
|
-
|
85
|
+
super
|
72
86
|
end
|
73
87
|
end
|
74
88
|
|
@@ -88,7 +102,7 @@ module Autobuild
|
|
88
102
|
Dir.chdir(builddir) do
|
89
103
|
Subprocess.run(name, 'install', Autobuild.tool(:make), 'install')
|
90
104
|
end
|
91
|
-
|
105
|
+
super
|
92
106
|
end
|
93
107
|
end
|
94
108
|
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.2.
|
4
|
+
version: 1.2.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: 2008-10-
|
12
|
+
date: 2008-10-14 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|