autoproj 1.7.0.rc2 → 1.7.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 +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
|
-
!
|
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
|
-
|