autoproj 1.4.4 → 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/History.txt +15 -0
- data/Manifest.txt +5 -1
- data/README.txt +1 -41
- data/Rakefile +1 -1
- data/bin/autoproj +62 -747
- data/doc/guide/src/autoproj_bootstrap +54 -9
- data/doc/guide/src/customization.page +5 -4
- data/doc/guide/src/index.page +1 -41
- data/doc/guide/src/overview.png +0 -0
- data/doc/guide/src/overview.svg +537 -0
- data/doc/guide/src/package_sets/autobuild.page +37 -13
- data/doc/guide/src/package_sets/importers.page +1 -1
- data/doc/guide/src/package_sets/manifest-xml.page +2 -2
- data/doc/guide/src/package_sets/osdeps.page +14 -9
- data/doc/guide/src/quick_start.page +110 -0
- data/doc/guide/src/{structure.page → writing_manifest.page} +47 -57
- data/lib/autoproj.rb +1 -0
- data/lib/autoproj/autobuild.rb +74 -32
- data/lib/autoproj/cmdline.rb +912 -0
- data/lib/autoproj/default.osdeps +12 -2
- data/lib/autoproj/manifest.rb +141 -88
- data/lib/autoproj/osdeps.rb +42 -7
- data/lib/autoproj/version.rb +1 -1
- metadata +90 -53
@@ -31,7 +31,7 @@ The above snippet being equivalent to calling <tt>cmake -DVAR=VALUE</tt>
|
|
31
31
|
|
32
32
|
The "pkg" variable in the example above is an instance of
|
33
33
|
[Autobuild::CMake](http://doudou.github.com/autobuild/Autobuild/CMake.html)
|
34
|
-
{.block}
|
34
|
+
{: .block}
|
35
35
|
|
36
36
|
Defining autotools packages {#autotools}
|
37
37
|
---------------------------
|
@@ -46,7 +46,7 @@ end
|
|
46
46
|
|
47
47
|
The 'pkg' variable in the example above is an instance of
|
48
48
|
[Autobuild::Autotools](http://doudou.github.com/autobuild/Autobuild/Autotools.html)
|
49
|
-
{.block}
|
49
|
+
{: .block}
|
50
50
|
|
51
51
|
Defining Ruby packages
|
52
52
|
----------------------
|
@@ -64,8 +64,36 @@ convention:
|
|
64
64
|
|
65
65
|
* programs are in bin/
|
66
66
|
* the library itself is in lib/
|
67
|
-
|
68
|
-
|
67
|
+
|
68
|
+
If a Rakefile is present in the root of the source package, its <tt>default</tt>
|
69
|
+
task will be called during the build, and its <tt>redocs</tt> task will be used
|
70
|
+
for documentation generation. The <tt>rake_setup_task</tt> and
|
71
|
+
<tt>rake_doc_task</tt> package properties can be used to override this default
|
72
|
+
setting:
|
73
|
+
|
74
|
+
{coderay::ruby}
|
75
|
+
ruby_package "package_name" do |pkg|
|
76
|
+
pkg.rake_setup_task = "setup"
|
77
|
+
pkg.rake_doc_task = "doc:all"
|
78
|
+
end
|
79
|
+
{coderay}
|
80
|
+
|
81
|
+
Additionally, they can be set to <tt>nil</tt> to disable either setup or documentation
|
82
|
+
generation. For instance, the following code disables documentation generation
|
83
|
+
and uses the +setup+ task at build time:
|
84
|
+
|
85
|
+
{coderay::ruby}
|
86
|
+
ruby_package "package_name" do |pkg|
|
87
|
+
pkg.rake_setup_task = "setup"
|
88
|
+
pkg.rake_doc_task = nil
|
89
|
+
end
|
90
|
+
{coderay}
|
91
|
+
|
92
|
+
The 'pkg' variable in the example above is an instance of
|
93
|
+
[Autobuild::ImporterPackage](http://doudou.github.com/autobuild/Autobuild/ImporterPackage.html),
|
94
|
+
with additional methods coming from [the RubyPackage
|
95
|
+
module](http://doudou.github.com/autoproj/api/Autoproj/RubyPackage.html)
|
96
|
+
{: .block}
|
69
97
|
|
70
98
|
Defining oroGen packages
|
71
99
|
------------------------
|
@@ -82,7 +110,7 @@ documentation](http://doudou.github.com/orogen) for more information.
|
|
82
110
|
|
83
111
|
The 'pkg' variable in the example above is an instance of
|
84
112
|
[Autobuild::Orogen](http://doudou.github.com/autobuild/Autobuild/Orogen.html)
|
85
|
-
{.block}
|
113
|
+
{: .block}
|
86
114
|
|
87
115
|
Custom package building
|
88
116
|
-----------------------
|
@@ -119,17 +147,13 @@ Inter-package dependencies can be defined with
|
|
119
147
|
pkg.depends_on "package_name"
|
120
148
|
{coderay}
|
121
149
|
|
122
|
-
|
123
|
-
[
|
124
|
-
|
125
|
-
{coderay:: ruby}
|
126
|
-
pkg.depends_on_os_package "package_name"
|
127
|
-
{coderay}
|
150
|
+
Where package name is either the name of another autoproj-built package, or the
|
151
|
+
name of a package that is to be [provided by the operating system](osdeps.html).
|
128
152
|
|
129
153
|
Both methods should be used only for dynamic dependencies, i.e. dependencies
|
130
154
|
that are dependent on build options (see below). Static dependencies should be
|
131
155
|
defined in [the package's manifest.xml](manifest-xml.html)
|
132
|
-
{.warning}
|
156
|
+
{: .warning}
|
133
157
|
|
134
158
|
Finally, it is possible to give aliases to a package's name, by using the
|
135
159
|
Autobuild::Package#provides method. If one does
|
@@ -173,5 +197,5 @@ Do not try to have too many options, that is in general bad policy as
|
|
173
197
|
non-advanced users won't be able to know what to answer. Advanced users will
|
174
198
|
always have the option to override your autobuild definitions to tweak the
|
175
199
|
builds to their needs.
|
176
|
-
{.warning}
|
200
|
+
{: .warning}
|
177
201
|
|
@@ -21,9 +21,9 @@ The general form of the file is:
|
|
21
21
|
<url>http://sites.google.com/site/rubyinmotion</url>
|
22
22
|
<logo>http://sites.google.com/site/rubyinmotion</logo>
|
23
23
|
|
24
|
-
<depend package="pkgname"/> <!-- add dependency on another
|
24
|
+
<depend package="pkgname"/> <!-- add dependency on either another
|
25
|
+
autoproj-built package, or an OS-provided one -->
|
25
26
|
<depend package="common"/>
|
26
|
-
<rosdep name="python" /> <!-- add dependency on a prepackaged operating system package -->
|
27
27
|
</package>
|
28
28
|
{coderay}
|
29
29
|
|
@@ -3,21 +3,26 @@ title: Operating System dependencies
|
|
3
3
|
sort_info: 300
|
4
4
|
---
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
Autoproj offers the possibility to use OS-packaged software instead of building
|
7
|
+
it, to leverage the underlying platform's software. This page details how it's
|
8
|
+
done.
|
8
9
|
|
9
10
|
Defining dependencies between source packages and OS packages
|
10
11
|
-------------------------------------------------------------
|
11
12
|
|
12
|
-
|
13
|
+
If a source package depends on an OS package, this dependency should be declared
|
14
|
+
in the same way than between source packages:
|
13
15
|
|
14
|
-
* by adding
|
15
|
-
|
16
|
-
* by calling
|
17
|
-
file](autobuild.html).
|
16
|
+
* either by adding the <depend package="os_dep_name" /> tag in the
|
17
|
+
manifest.xml, or
|
18
|
+
* by calling #depends_on("os_dep_name") in the autobuild file.
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
The os_dep_name above being the name of the package as declared in the OS
|
21
|
+
dependencies files defined below.
|
22
|
+
|
23
|
+
During the build, autoproj looks first for OS dependencies. If no dependency is
|
24
|
+
available for that particular platform, it will then look for a source package
|
25
|
+
definition and build it. If none of the two exist, an error is returned.
|
21
26
|
|
22
27
|
OS packages
|
23
28
|
-----------
|
@@ -0,0 +1,110 @@
|
|
1
|
+
---
|
2
|
+
title: Quick start
|
3
|
+
sort_info: 25
|
4
|
+
---
|
5
|
+
|
6
|
+
Bootstrapping
|
7
|
+
-------------
|
8
|
+
"Bootstrapping" means getting autoproj itself before it can work its magic ...
|
9
|
+
The canonical way is the following:
|
10
|
+
|
11
|
+
* install Ruby by yourself. On Debian or Ubuntu, this is done with
|
12
|
+
done with
|
13
|
+
|
14
|
+
sudo apt-get install wget ruby
|
15
|
+
{: .cmdline}
|
16
|
+
|
17
|
+
* then, [download this script](autoproj_bootstrap) *in the directory where
|
18
|
+
you want to create an autoproj installation*, and run it. This can be done with
|
19
|
+
|
20
|
+
wget http://doudou.github.com/autoproj/autoproj\_bootstrap <br />
|
21
|
+
ruby autoproj\_bootstrap
|
22
|
+
{: .cmdline}
|
23
|
+
|
24
|
+
* follow the instructions printed by the script<tt>manifest</tt>.
|
25
|
+
|
26
|
+
Additionally, if you are given a reference to a source code repository in which
|
27
|
+
an autoproj configuration is stored (i.e. a directory in which a manifest is
|
28
|
+
present), you can bootstrap this configuration directly:
|
29
|
+
|
30
|
+
wget http://doudou.github.com/autoproj/autoproj\_bootstrap <br />
|
31
|
+
ruby autoproj\_bootstrap VCS
|
32
|
+
{: .cmdline}
|
33
|
+
|
34
|
+
For instance, to build all packages made available by the RubyInMotion project,
|
35
|
+
do
|
36
|
+
|
37
|
+
wget http://doudou.github.com/autoproj/autoproj\_bootstrap <br />
|
38
|
+
ruby autoproj\_bootstrap git git://github.com/doudou/rubim.all.git
|
39
|
+
{: .cmdline}
|
40
|
+
|
41
|
+
Additional options can be given for the version control system. For instance,
|
42
|
+
|
43
|
+
wget http://doudou.github.com/autoproj/autoproj\_bootstrap <br />
|
44
|
+
ruby autoproj\_bootstrap git git://github.com/doudou/rubim.all.git branch=stable
|
45
|
+
{: .cmdline}
|
46
|
+
|
47
|
+
Management
|
48
|
+
----------
|
49
|
+
|
50
|
+
To build the packages, simply do:
|
51
|
+
|
52
|
+
autoproj build
|
53
|
+
{: .commandline}
|
54
|
+
|
55
|
+
It will ask the value of newly defined configuration options, import code hosted
|
56
|
+
remotely that is not yet present, install OS packages (e.g. Ubuntu packages on
|
57
|
+
an Ubunut installation) and build everything.
|
58
|
+
|
59
|
+
autoproj will *not* ask you again about the configuration questions you already
|
60
|
+
answered, so if you want to change them, do:
|
61
|
+
|
62
|
+
autoproj build --reconfigure
|
63
|
+
{: .commandline}
|
64
|
+
|
65
|
+
Alternatively, you can edit the autoproj/config.yml file directly.
|
66
|
+
|
67
|
+
By default, autoproj does not automatically update the package sources. To do
|
68
|
+
that, you have to explicitely call
|
69
|
+
|
70
|
+
autoproj update
|
71
|
+
{: .commandline}
|
72
|
+
|
73
|
+
Finally, if you want to make sure that your build is fresh, then do
|
74
|
+
|
75
|
+
autoproj rebuild
|
76
|
+
{: .commandline}
|
77
|
+
|
78
|
+
A less intrusive version of it only forces all tools to reconsider building. It
|
79
|
+
is mainly useful for CMake when the build environment changed -- cmake caches a
|
80
|
+
lot of values. To trigger this, do
|
81
|
+
|
82
|
+
autoproj force-build
|
83
|
+
{: .commandline}
|
84
|
+
|
85
|
+
To add a new set, one edits the <tt>autoproj/manifest</tt> file and adds it
|
86
|
+
there. Then, simply starting the build will update everything and rebuild what
|
87
|
+
is needed.
|
88
|
+
|
89
|
+
Documentation is generated only when asked explicitely:
|
90
|
+
|
91
|
+
autoproj doc
|
92
|
+
{: .commandline}
|
93
|
+
|
94
|
+
It generates documentation of packages that have some, and copies that
|
95
|
+
documentation into build/doc/, following the same layout than the source
|
96
|
+
directory.
|
97
|
+
|
98
|
+
All these commands (i.e. build, doc, and update) accept a package name as
|
99
|
+
argument, thus triggering build only for this package and its dependencies. For
|
100
|
+
instance:
|
101
|
+
|
102
|
+
autoproj build orocos/rtt
|
103
|
+
{: .commandline}
|
104
|
+
|
105
|
+
**Exception**: to avoid long builds, the rebuild and force-build commands apply only
|
106
|
+
to the packages given on the command line. E.g., autoproj rebuild orocos/rtt
|
107
|
+
will only rebuild the orocos/rtt packages. If you want to rebuild both the
|
108
|
+
packages and its dependencies, use the --with-depends options.
|
109
|
+
{: .warning}
|
110
|
+
|
@@ -1,5 +1,5 @@
|
|
1
1
|
---
|
2
|
-
title:
|
2
|
+
title: The manifest file.
|
3
3
|
sort_info: 50
|
4
4
|
---
|
5
5
|
|
@@ -9,8 +9,8 @@ to manage one. See [the introduction](index.html) for the bootstrapping process.
|
|
9
9
|
Structure
|
10
10
|
---------
|
11
11
|
|
12
|
-
!overview.png!
|
13
|
-
|
12
|
+
!
|
13
|
+
{: .full}
|
14
14
|
|
15
15
|
The autoproj configuration and build process goes like this:
|
16
16
|
|
@@ -35,11 +35,11 @@ is split like this:
|
|
35
35
|
|
36
36
|
* autoproj/manifest: list of available package sets, package selection and
|
37
37
|
installation layout (where to put what).
|
38
|
-
* .remotes/\*: package sets that are imported from a remote version
|
39
|
-
control system
|
40
38
|
* autoproj/\*/: local sets, i.e. sets that have not been imported from a remote
|
41
39
|
version control system.
|
42
|
-
* autoproj
|
40
|
+
* autoproj/remotes/\*/: package sets that are imported from a remote version
|
41
|
+
control system
|
42
|
+
* autoproj/init.rb, autoproj/overrides.rb and autoproj/overrides.yml:
|
43
43
|
installation customization
|
44
44
|
|
45
45
|
The build is done in two steps:
|
@@ -91,66 +91,56 @@ autoproj installation. The importers that are available for configuration are
|
|
91
91
|
the same than the ones available for the packages themselves, so see [this
|
92
92
|
page](package_sets/importers.html#all_importers) for the list of available importers.
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
autoproj build
|
100
|
-
{.commandline}
|
101
|
-
|
102
|
-
It will ask the value of newly defined configuration options, import (or update)
|
103
|
-
code hosted remotely, and build it. autoproj will *not* ask you again about the
|
104
|
-
configuration questions you already answered, so if you want to change them, do:
|
105
|
-
|
106
|
-
autoproj build --reconfigure
|
107
|
-
{.commandline}
|
94
|
+
Listing the available packages.
|
95
|
+
-----------------------------
|
96
|
+
Once you have updated your manifest file to list all the package sets that you
|
97
|
+
want to use, you can list all the packages that are now available with
|
108
98
|
|
109
|
-
|
99
|
+
autoproj list-sets
|
100
|
+
{: .commandline}
|
110
101
|
|
111
|
-
|
112
|
-
repositories), use the fast-build mode, to skip the package update and OS
|
113
|
-
packages installation phases (autoproj will still check out new packages,
|
114
|
-
though):
|
102
|
+
Its output looks like this:
|
115
103
|
|
116
|
-
|
117
|
-
|
104
|
+
<pre>
|
105
|
+
rubim.orocos
|
106
|
+
local source in /home/doudou/dfki/imoby1.9/autoproj/orocos
|
107
|
+
packages:
|
108
|
+
| orocos/base | git:/home/doudou/dfki/dfki-share/projects/all/Intelligent_Mobility/development/software/git/tools/orocos/base.git |
|
109
|
+
| orocos/logger | git:/home/doudou/dfki/dfki-share/projects/all/Intelligent_Mobility/development/software/git/tools/orocos/logger.git branch=fast_log |
|
110
|
+
| orocos/ocl | git:/home/doudou/dfki/dfki-share/projects/all/Intelligent_Mobility/development/software/git/tools/orocos/ocl.git branch=rubim |
|
111
|
+
</pre>
|
118
112
|
|
119
|
-
The package
|
120
|
-
|
121
|
-
|
122
|
-
|
113
|
+
The first line is the **package set name**. It is defined in the package set's
|
114
|
+
source.yml file and *does not have to be identical to the set's directory
|
115
|
+
name*. In the example above, the package set is saved in autoproj/orocos but is
|
116
|
+
called dfki.orocos.
|
123
117
|
|
124
|
-
|
118
|
+
The second line tells you where this set comes from. It is local if it comes
|
119
|
+
along with the main autoproj configuration (manifest and so on). It is remote
|
120
|
+
if it is imported from a version control system.
|
125
121
|
|
126
|
-
|
127
|
-
|
122
|
+
Finally comes the list of packages that are defined in this set, along with the
|
123
|
+
importer setup (URL and options, as for instance branches for orocos/logger
|
124
|
+
above).
|
128
125
|
|
129
|
-
|
126
|
+
Picking the packages to build
|
127
|
+
-----------------------------
|
128
|
+
If you do not wish to build all the packages that are available (you rarely
|
129
|
+
wish that), you have to list the desired packages in your manifest file.
|
130
130
|
|
131
|
-
|
132
|
-
|
131
|
+
To do so, you will have to create a <tt>layout</tt> section and list the
|
132
|
+
desired packages:
|
133
133
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
{
|
140
|
-
|
141
|
-
To add a new set, one edits the <tt>autoproj/manifest</tt> file and adds it
|
142
|
-
there. Then, simply starting the build will update everything and rebuild what
|
143
|
-
is needed.
|
144
|
-
|
145
|
-
Documentation is generated only when asked explicitely:
|
146
|
-
|
147
|
-
autoproj doc
|
148
|
-
{.commandline}
|
134
|
+
{coderay:: yaml}
|
135
|
+
layout:
|
136
|
+
- rubim.base
|
137
|
+
- orocos/rtt
|
138
|
+
- orocos/logger
|
139
|
+
{coderay}
|
149
140
|
|
150
|
-
|
151
|
-
|
152
|
-
instance:
|
141
|
+
This layout can either list packages one by one, but complete package sets can
|
142
|
+
also be selected (the rubim.base above)
|
153
143
|
|
154
|
-
|
155
|
-
|
144
|
+
More advanced mechanisms are available to customize this list. These mechanisms
|
145
|
+
are [detailed here](customization.html)
|
156
146
|
|
data/lib/autoproj.rb
CHANGED
data/lib/autoproj/autobuild.rb
CHANGED
@@ -3,9 +3,29 @@ require 'fileutils'
|
|
3
3
|
require 'autobuild'
|
4
4
|
require 'set'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
module Autobuild
|
7
|
+
class Package
|
8
|
+
def autoproj_name # :nodoc:
|
9
|
+
srcdir.gsub /^#{Regexp.quote(Autoproj.root_dir)}\//, ''
|
10
|
+
end
|
11
|
+
|
12
|
+
alias __depends_on__ depends_on
|
13
|
+
def depends_on(name)
|
14
|
+
if Autoproj.osdeps.has?(name)
|
15
|
+
@os_packages ||= Set.new
|
16
|
+
@os_packages << name
|
17
|
+
else
|
18
|
+
__depends_on__(name)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def depends_on_os_package(name)
|
23
|
+
depends_on(name)
|
24
|
+
end
|
25
|
+
|
26
|
+
def os_packages
|
27
|
+
@os_packages ||= Set.new
|
28
|
+
end
|
9
29
|
end
|
10
30
|
end
|
11
31
|
|
@@ -80,16 +100,6 @@ module Autoproj
|
|
80
100
|
end
|
81
101
|
end
|
82
102
|
|
83
|
-
# Sets up a documentation target on pkg that runs 'rake <target>'
|
84
|
-
def ruby_doc(pkg, target = 'doc')
|
85
|
-
pkg.doc_task do
|
86
|
-
pkg.progress "generating documentation for %s"
|
87
|
-
pkg.doc_disabled unless File.file?('Rakefile')
|
88
|
-
Autobuild::Subprocess.run pkg.name, 'doc', 'rake', target
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
103
|
# Common setup for packages
|
94
104
|
def package_common(package_type, spec, &block) # :nodoc:
|
95
105
|
package_name = Autoproj.package_name_from_options(spec)
|
@@ -164,9 +174,10 @@ def autotools_package(options, &block)
|
|
164
174
|
end
|
165
175
|
end
|
166
176
|
|
167
|
-
#
|
168
|
-
|
169
|
-
|
177
|
+
# This module is used to extend importer packages to handle ruby packages
|
178
|
+
# properly
|
179
|
+
module Autoproj::RubyPackage
|
180
|
+
def prepare_for_forced_build # :nodoc:
|
170
181
|
super
|
171
182
|
extdir = File.join(srcdir, 'ext')
|
172
183
|
if File.directory?(extdir)
|
@@ -176,7 +187,8 @@ def ruby_common(pkg) # :nodoc:
|
|
176
187
|
end
|
177
188
|
end
|
178
189
|
end
|
179
|
-
|
190
|
+
|
191
|
+
def prepare_for_rebuild # :nodoc:
|
180
192
|
super
|
181
193
|
extdir = File.join(srcdir, 'ext')
|
182
194
|
if File.directory?(extdir)
|
@@ -194,20 +206,22 @@ def ruby_common(pkg) # :nodoc:
|
|
194
206
|
end
|
195
207
|
end
|
196
208
|
|
197
|
-
def
|
209
|
+
def import
|
198
210
|
super
|
199
|
-
Autobuild.update_environment srcdir
|
200
|
-
end
|
201
211
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
if File.directory?('ext')
|
207
|
-
Autobuild::Subprocess.run pkg.name, 'post-install', 'rake', 'setup'
|
208
|
-
end
|
212
|
+
Autobuild.update_environment srcdir
|
213
|
+
libdir = File.join(srcdir, 'lib')
|
214
|
+
if File.directory?(libdir)
|
215
|
+
Autobuild.env_add_path 'RUBYLIB', libdir
|
209
216
|
end
|
210
217
|
end
|
218
|
+
|
219
|
+
# The Rake task that is used to set up the package. Defaults to "default".
|
220
|
+
# Set to nil to disable documentation generation
|
221
|
+
attr_accessor :rake_setup_task
|
222
|
+
# The Rake task that is used to generate documentation. Defaults to "doc".
|
223
|
+
# Set to nil to disable documentation generation
|
224
|
+
attr_accessor :rake_doc_task
|
211
225
|
end
|
212
226
|
|
213
227
|
def env_set(name, value)
|
@@ -230,14 +244,42 @@ end
|
|
230
244
|
# information.
|
231
245
|
def ruby_package(options)
|
232
246
|
package_common(:import, options) do |pkg|
|
233
|
-
|
234
|
-
|
247
|
+
pkg.exclude << /\.so$/
|
248
|
+
pkg.exclude << /Makefile$/
|
249
|
+
pkg.exclude << /mkmf.log$/
|
250
|
+
pkg.exclude << /\.o$/
|
251
|
+
|
252
|
+
pkg.extend Autoproj::RubyPackage
|
253
|
+
pkg.rake_setup_task = "default"
|
254
|
+
pkg.rake_doc_task = "redocs"
|
255
|
+
|
256
|
+
# Set up code
|
257
|
+
pkg.post_install do
|
258
|
+
Autobuild.progress "setting up Ruby package #{pkg.name}"
|
259
|
+
Autobuild.update_environment pkg.srcdir
|
260
|
+
# Add lib/ unconditionally, as we know that it is a ruby package.
|
261
|
+
# Autobuild will add it only if there is a .rb file in the directory
|
262
|
+
libdir = File.join(pkg.srcdir, 'lib')
|
263
|
+
if File.directory?(libdir)
|
264
|
+
Autobuild.env_add_path 'RUBYLIB', libdir
|
265
|
+
end
|
266
|
+
|
267
|
+
if pkg.rake_setup_task && File.file?(File.join(pkg.srcdir, 'Rakefile'))
|
268
|
+
Autobuild::Subprocess.run pkg, 'post-install',
|
269
|
+
'rake', pkg.rake_setup_task
|
270
|
+
end
|
235
271
|
end
|
236
272
|
|
237
|
-
ruby_common(pkg)
|
238
273
|
yield(pkg) if block_given?
|
239
|
-
|
240
|
-
|
274
|
+
|
275
|
+
# Documentation code. Ignore if the user provided its own documentation
|
276
|
+
# task, or disabled the documentation generation altogether by setting
|
277
|
+
# rake_doc_task to nil
|
278
|
+
if !pkg.has_doc? && pkg.rake_doc_task
|
279
|
+
pkg.doc_task do
|
280
|
+
pkg.progress "generating documentation for %s"
|
281
|
+
Autobuild::Subprocess.run pkg, 'doc', 'rake', pkg.rake_doc_task
|
282
|
+
end
|
241
283
|
end
|
242
284
|
end
|
243
285
|
end
|