autoproj 1.7.0.rc2 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +29 -20
- data/Manifest.txt +2 -29
- data/Rakefile +7 -28
- data/bin/autolocate +9 -37
- data/{doc/guide/src → bin}/autoproj_bootstrap +36 -0
- data/bin/autoproj_stress_test +40 -0
- data/lib/autoproj/cmdline.rb +22 -3
- data/lib/autoproj/manifest.rb +0 -2
- data/lib/autoproj/version.rb +1 -1
- metadata +12 -40
- data/doc/guide/config.yaml +0 -29
- data/doc/guide/ext/init.rb +0 -18
- data/doc/guide/ext/previous_next.rb +0 -40
- data/doc/guide/ext/rdoc_links.rb +0 -33
- data/doc/guide/src/adding_packages.page +0 -40
- data/doc/guide/src/customization.page +0 -230
- data/doc/guide/src/default.css +0 -340
- data/doc/guide/src/default.template +0 -74
- data/doc/guide/src/error_messages.page +0 -37
- data/doc/guide/src/htmldoc.metainfo +0 -8
- data/doc/guide/src/htmldoc.virtual +0 -19
- data/doc/guide/src/images/bodybg.png +0 -0
- data/doc/guide/src/images/contbg.png +0 -0
- data/doc/guide/src/images/footerbg.png +0 -0
- data/doc/guide/src/images/gradient1.png +0 -0
- data/doc/guide/src/images/gradient2.png +0 -0
- data/doc/guide/src/index.page +0 -64
- data/doc/guide/src/manifest.xml +0 -14
- data/doc/guide/src/overview.png +0 -0
- data/doc/guide/src/overview.svg +0 -537
- data/doc/guide/src/package_sets/autobuild.page +0 -239
- data/doc/guide/src/package_sets/importers.page +0 -165
- data/doc/guide/src/package_sets/index.page +0 -223
- data/doc/guide/src/package_sets/manifest-xml.page +0 -29
- data/doc/guide/src/package_sets/osdeps.page +0 -128
- data/doc/guide/src/quick_start.page +0 -128
- data/doc/guide/src/toc.page +0 -7
- data/doc/guide/src/writing_manifest.page +0 -146
@@ -1,29 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: The manifest.xml file
|
3
|
-
sort_info: 120
|
4
|
-
---
|
5
|
-
|
6
|
-
The manifest.xml is an optional (but *very recommended*) file that lies in the
|
7
|
-
root of every source package. This file describes both what the package *is*
|
8
|
-
(i.e. short description, contact information), and dependency information (what
|
9
|
-
should be installed for that package to be built successfully).
|
10
|
-
|
11
|
-
The general form of the file is:
|
12
|
-
|
13
|
-
{coderay:: xml}
|
14
|
-
<package>
|
15
|
-
<description brief="one line of text">
|
16
|
-
long description goes here,
|
17
|
-
<em>XHTML is allowed</em>
|
18
|
-
</description>
|
19
|
-
<author>Alice/alice@somewhere.bar, Bob/bob@nowhere.foo</author>
|
20
|
-
<license>BSD</license>
|
21
|
-
<url>http://sites.google.com/site/rubyinmotion</url>
|
22
|
-
<logo>http://sites.google.com/site/rubyinmotion</logo>
|
23
|
-
|
24
|
-
<depend package="pkgname"/> <!-- add dependency on either another
|
25
|
-
autoproj-built package, or an OS-provided one -->
|
26
|
-
<depend package="common"/>
|
27
|
-
</package>
|
28
|
-
{coderay}
|
29
|
-
|
@@ -1,128 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Operating System dependencies
|
3
|
-
sort_info: 300
|
4
|
-
---
|
5
|
-
|
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.
|
9
|
-
|
10
|
-
Defining dependencies between source packages and OS packages
|
11
|
-
-------------------------------------------------------------
|
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:
|
15
|
-
|
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.
|
19
|
-
|
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.
|
26
|
-
|
27
|
-
OS packages
|
28
|
-
-----------
|
29
|
-
|
30
|
-
The general format of the an OS package definition:
|
31
|
-
|
32
|
-
~~~~~~~~~~~~~~~~~~
|
33
|
-
name:
|
34
|
-
distribution1,distribution2:
|
35
|
-
version1,version2: [package_name1, package_name2]
|
36
|
-
~~~~~~~~~~~~~~~~~~
|
37
|
-
|
38
|
-
Where 'name' is the name used to declare the dependency (see above), `distribution`
|
39
|
-
the name of the distribution and <tt>version</tt> the
|
40
|
-
distribution's version, and <tt>package_name</tt> the name of the package in
|
41
|
-
the underlying OS.
|
42
|
-
|
43
|
-
Since the osdeps file is a YAML file, it could also be written
|
44
|
-
|
45
|
-
~~~~~~~~~~~~~~~~~~
|
46
|
-
name:
|
47
|
-
distribution1,distribution2:
|
48
|
-
version1,version2:
|
49
|
-
- package_name1
|
50
|
-
- package_name2
|
51
|
-
~~~~~~~~~~~~~~~~~~
|
52
|
-
|
53
|
-
If only one package needs to be installed, one can use the shortcut
|
54
|
-
|
55
|
-
~~~~~~~~~~~~~~~~~~
|
56
|
-
name:
|
57
|
-
distribution1,distribution2:
|
58
|
-
version1,version2: package_name
|
59
|
-
~~~~~~~~~~~~~~~~~~
|
60
|
-
|
61
|
-
Finally, if the package name is version-independent, the version can be omitted:
|
62
|
-
|
63
|
-
|
64
|
-
~~~~~~~~~~~~~~~~~~
|
65
|
-
name:
|
66
|
-
distribution1,distribution2: package_name
|
67
|
-
~~~~~~~~~~~~~~~~~~
|
68
|
-
|
69
|
-
Examples:
|
70
|
-
|
71
|
-
~~~~~~~~~~~~~~~~~~
|
72
|
-
ruby:
|
73
|
-
debian,ubuntu:
|
74
|
-
9.04,10.04,sid: libruby-dev
|
75
|
-
boost:
|
76
|
-
debian:
|
77
|
-
- libboost1.38-dev
|
78
|
-
- libboost-program1.38-dev
|
79
|
-
ubuntu:
|
80
|
-
9.04,10.04: libboost-dev
|
81
|
-
~~~~~~~~~~~~~~~~~~
|
82
|
-
|
83
|
-
At the time of this writing, autoproj is able to install packages on
|
84
|
-
Ubuntu/Debian and Gentoo. Support for other operating systems can be easily
|
85
|
-
added, so [contact me](http://github.com/doudou) if you want to do so.
|
86
|
-
|
87
|
-
RubyGems packages
|
88
|
-
-----------------
|
89
|
-
|
90
|
-
RubyGems packages are OS-independent. In the osdeps files, they can be referred
|
91
|
-
to by replacing the OS distribution name by 'gem'.
|
92
|
-
|
93
|
-
Example:
|
94
|
-
|
95
|
-
~~~~~~~~~~~~~~~~~~
|
96
|
-
hoe:
|
97
|
-
gem:
|
98
|
-
hoe
|
99
|
-
~~~~~~~~~~~~~~~~~~
|
100
|
-
|
101
|
-
If the OS dep name and the RubyGems name are the same, one can use the shortcut
|
102
|
-
|
103
|
-
~~~~~~~~~~~~~~~~~~
|
104
|
-
hoe: gem
|
105
|
-
~~~~~~~~~~~~~~~~~~
|
106
|
-
|
107
|
-
Note that it is possible to use a mixture of RubyGems and OS packages. For
|
108
|
-
instance, the following snippet will both install the gnuplot package and the
|
109
|
-
gnuplot RubyGems whenever an osdep on 'gnuplot' is declared.
|
110
|
-
|
111
|
-
~~~~~~~~~~~~~~~~~~
|
112
|
-
gnuplot:
|
113
|
-
gem: gnuplot
|
114
|
-
debian: gnuplot
|
115
|
-
~~~~~~~~~~~~~~~~~~
|
116
|
-
|
117
|
-
Ignoring some dependencies
|
118
|
-
--------------------------
|
119
|
-
It is possible that, on some operating systems, a given package should simply be
|
120
|
-
ignored. To do so, simply use the 'ignore' keyword. Example:
|
121
|
-
|
122
|
-
~~~~~~~~~~~~~~~~~~
|
123
|
-
gnuplot:
|
124
|
-
gem: gnuplot
|
125
|
-
debian: ignore
|
126
|
-
ubuntu: gnuplot
|
127
|
-
~~~~~~~~~~~~~~~~~~
|
128
|
-
|
@@ -1,128 +0,0 @@
|
|
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
|
-
Switching configuration after bootstrapping
|
48
|
-
-------------------------------------------
|
49
|
-
Let's assume that you want to switch what configuration autoproj is tracking,
|
50
|
-
but without having to redo a complete bootstrap -- i.e. avoiding to rebuild
|
51
|
-
stuff that is common between the configurations.
|
52
|
-
|
53
|
-
autoproj provides the switch-config command for that. This command takes the
|
54
|
-
same arguments than the bootstrap script, that is:
|
55
|
-
|
56
|
-
autoproj switch-config \[vcs_type] \[vcs_url] \[vcs_options]
|
57
|
-
{: .cmdline}
|
58
|
-
|
59
|
-
As a shortcut, one can omit vcs_type and vcs_url if they don't change.
|
60
|
-
This is especially useful when switching between branches:
|
61
|
-
|
62
|
-
autoproj switch-config branch=experimental
|
63
|
-
{: .cmdline}
|
64
|
-
|
65
|
-
Management
|
66
|
-
----------
|
67
|
-
|
68
|
-
To build the packages, simply do:
|
69
|
-
|
70
|
-
autoproj build
|
71
|
-
{: .commandline}
|
72
|
-
|
73
|
-
It will ask the value of newly defined configuration options, import code hosted
|
74
|
-
remotely that is not yet present, install OS packages (e.g. Ubuntu packages on
|
75
|
-
an Ubunut installation) and build everything.
|
76
|
-
|
77
|
-
autoproj will *not* ask you again about the configuration questions you already
|
78
|
-
answered, so if you want to change them, do:
|
79
|
-
|
80
|
-
autoproj build --reconfigure
|
81
|
-
{: .commandline}
|
82
|
-
|
83
|
-
Alternatively, you can edit the autoproj/config.yml file directly.
|
84
|
-
|
85
|
-
By default, autoproj does not automatically update the package sources. To do
|
86
|
-
that, you have to explicitely call
|
87
|
-
|
88
|
-
autoproj update
|
89
|
-
{: .commandline}
|
90
|
-
|
91
|
-
Finally, if you want to make sure that your build is fresh, then do
|
92
|
-
|
93
|
-
autoproj rebuild
|
94
|
-
{: .commandline}
|
95
|
-
|
96
|
-
A less intrusive version of it only forces all tools to reconsider building. It
|
97
|
-
is mainly useful for CMake when the build environment changed -- cmake caches a
|
98
|
-
lot of values. To trigger this, do
|
99
|
-
|
100
|
-
autoproj force-build
|
101
|
-
{: .commandline}
|
102
|
-
|
103
|
-
To add a new set, one edits the <tt>autoproj/manifest</tt> file and adds it
|
104
|
-
there. Then, simply starting the build will update everything and rebuild what
|
105
|
-
is needed.
|
106
|
-
|
107
|
-
Documentation is generated only when asked explicitely:
|
108
|
-
|
109
|
-
autoproj doc
|
110
|
-
{: .commandline}
|
111
|
-
|
112
|
-
It generates documentation of packages that have some, and copies that
|
113
|
-
documentation into build/doc/, following the same layout than the source
|
114
|
-
directory.
|
115
|
-
|
116
|
-
All these commands (i.e. build, doc, and update) accept a package name as
|
117
|
-
argument, thus triggering build only for this package and its dependencies. For
|
118
|
-
instance:
|
119
|
-
|
120
|
-
autoproj build orocos/rtt
|
121
|
-
{: .commandline}
|
122
|
-
|
123
|
-
**Exception**: to avoid long builds, the rebuild and force-build commands apply only
|
124
|
-
to the packages given on the command line. E.g., autoproj rebuild orocos/rtt
|
125
|
-
will only rebuild the orocos/rtt packages. If you want to rebuild both the
|
126
|
-
packages and its dependencies, use the --with-depends options.
|
127
|
-
{: .warning}
|
128
|
-
|
data/doc/guide/src/toc.page
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: The manifest file.
|
3
|
-
sort_info: 50
|
4
|
-
---
|
5
|
-
|
6
|
-
This page describes the structure of a autoproj installation, and describes how
|
7
|
-
to manage one. See [the introduction](index.html) for the bootstrapping process.
|
8
|
-
|
9
|
-
Structure
|
10
|
-
---------
|
11
|
-
|
12
|
-
![Structure overview](overview.png)!
|
13
|
-
{: .full}
|
14
|
-
|
15
|
-
The autoproj configuration and build process goes like this:
|
16
|
-
|
17
|
-
* a set of packages are declared in _package sets_. These package sets can
|
18
|
-
either be local (saved along with the rest of the autoproj configuration) or
|
19
|
-
remote (imported from a VCS). They declare how to get, build and install
|
20
|
-
a certain number of packages. On the image above, there are three of those
|
21
|
-
sets: rubim.base, rubim.orocos and rubim.drivers.
|
22
|
-
* packages that are relevant to the local installation are cherry-picked from
|
23
|
-
the package sets. One can either select packages one-by-one (the case for the
|
24
|
-
two packages of rubim.drivers above), or a package set can be imported as a
|
25
|
-
whole (rubim.orocos and rubim.base).
|
26
|
-
* autoproj will then import the selected packages, auto-select their
|
27
|
-
dependencies and import them as well, build and install all of this.
|
28
|
-
* the selected packages can be imported and built in subdirectories of the
|
29
|
-
installation tree. In the above example, all packages from rubim.orocos are
|
30
|
-
built in the tools/ subdirectory, one package of rubim.drivers in the
|
31
|
-
perception/ subdirectory and so on.
|
32
|
-
|
33
|
-
In practice, the autoproj configuration is saved in an autoproj/ directory. It
|
34
|
-
is split like this:
|
35
|
-
|
36
|
-
* autoproj/manifest: list of available package sets, package selection and
|
37
|
-
installation layout (where to put what).
|
38
|
-
* autoproj/\*/: local sets, i.e. sets that have not been imported from a remote
|
39
|
-
version control system.
|
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
|
-
installation customization
|
44
|
-
|
45
|
-
The build is done in two steps:
|
46
|
-
|
47
|
-
* each package is being built in a <tt>build</tt> subdirectory of the package's
|
48
|
-
source (<tt>package_directory/build/</tt>)
|
49
|
-
* it is then installed in the build/ directory at the toplevel of the autoproj
|
50
|
-
installation
|
51
|
-
|
52
|
-
Moreover, the <tt>build/log</tt> directory contains the output of all commands
|
53
|
-
that have been run during the build.
|
54
|
-
|
55
|
-
Finally, a <tt>env.sh</tt> script is generated to set up your shell for the use
|
56
|
-
of the installed software.
|
57
|
-
|
58
|
-
Listing and adding package sets
|
59
|
-
-------------------------------
|
60
|
-
Package sets are listed in the <tt>package_sets</tt> section of
|
61
|
-
<tt>autoproj/manifest</tt> file. This section looks like this:
|
62
|
-
|
63
|
-
{coderay:: yaml}
|
64
|
-
package_sets:
|
65
|
-
- imoby
|
66
|
-
- type: git
|
67
|
-
url: git://github.com/doudou/autoproj-orocos.git
|
68
|
-
{coderay}
|
69
|
-
|
70
|
-
It lists both local and remote sets that are available for this installation.
|
71
|
-
Local sets are subdirectories of the <tt>autoproj/</tt> directory: for instance,
|
72
|
-
in the above example, autoproj will look at the <tt>autoproj/imoby/</tt>
|
73
|
-
directory. Remote sets are taken from remote version control systems. Its
|
74
|
-
general format is:
|
75
|
-
|
76
|
-
{coderay:: yaml}
|
77
|
-
- type: version_control_type # git, svn, cvs, darcs
|
78
|
-
url: repository_url
|
79
|
-
{coderay}
|
80
|
-
|
81
|
-
For the git importer, one of 'branch' or 'tag' options can be provided as well:
|
82
|
-
{coderay:: yaml}
|
83
|
-
- type: version_control_type # git, svn, cvs, darcs
|
84
|
-
url: repository_url
|
85
|
-
branch: branch_to_track
|
86
|
-
tag: tag_to_stick_to # it is branch OR tag
|
87
|
-
{coderay}
|
88
|
-
|
89
|
-
Imported package sets are saved in the <tt>.remotes</tt> directory of the
|
90
|
-
autoproj installation. The importers that are available for configuration are
|
91
|
-
the same than the ones available for the packages themselves, so see [this
|
92
|
-
page](package_sets/importers.html#all_importers) for the list of available importers.
|
93
|
-
|
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
|
98
|
-
|
99
|
-
autoproj list-sets
|
100
|
-
{: .commandline}
|
101
|
-
|
102
|
-
Its output looks like this:
|
103
|
-
|
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>
|
112
|
-
|
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.
|
117
|
-
|
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.
|
121
|
-
|
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).
|
125
|
-
|
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
|
-
|
131
|
-
To do so, you will have to create a <tt>layout</tt> section and list the
|
132
|
-
desired packages:
|
133
|
-
|
134
|
-
{coderay:: yaml}
|
135
|
-
layout:
|
136
|
-
- rubim.base
|
137
|
-
- orocos/rtt
|
138
|
-
- orocos/logger
|
139
|
-
{coderay}
|
140
|
-
|
141
|
-
This layout can either list packages one by one, but complete package sets can
|
142
|
-
also be selected (the rubim.base above)
|
143
|
-
|
144
|
-
More advanced mechanisms are available to customize this list. These mechanisms
|
145
|
-
are [detailed here](customization.html)
|
146
|
-
|