---
title: Managing autoproj installations
sort_info: 50
---
This page describes the structure of a autoproj installation, and describes how
to manage one. See [the introduction](index.page) for the bootstrapping process.
Structure
---------
A autoproj installation is characterized by a autoproj/ directory in which all
autoproj-related configuration is saved. The contained files are as follows:
* autoproj/manifest: list of available package sets, customization options.
The first part is covered here, the second in the next page.
* .remotes/\*: package sets that are imported from a remote version
control system
* autoproj/\*/: local sets, i.e. sets that have not been imported from a remote
version control system.
* autoproj\/init.rb, autoproj\/overrides.rb and autoproj\/overrides.yml:
installation customization
The build is done in two steps:
* each package is being built in a build subdirectory of the package's
source (package_directory/build/)
* it is then installed in the build/ directory at the toplevel of the autoproj
installation
Moreover, the build/log directory contains the output of all commands
that have been run during the build. Finally, a env.sh script is
generated to set up your shell for the use of the installed software.
Listing and adding package sets
-------------------------------
Package sets are listed in the package\_sets section of
autoproj/manifest file. This section looks like this:
{coderay:: yaml}
package_sets:
- imoby
- type: git
url: git://github.com/doudou/autoproj-orocos.git
{coderay}
It lists both local and remote sets that are available for this installation.
Local sets are subdirectories of the autoproj/ directory: for instance,
in the above example, autoproj will look at the autoproj/imoby/
directory. Remote sets are taken from remote version control systems. Its
general format is:
{coderay:: yaml}
- type: version_control_type # git, svn, cvs, darcs
url: repository_url
{coderay}
For the git importer, one of 'branch' or 'tag' options can be provided as well:
{coderay:: yaml}
- type: version_control_type # git, svn, cvs, darcs
url: repository_url
branch: branch_to_track
tag: tag_to_stick_to # it is branch OR tag
{coderay}
Imported package sets are saved in the .remotes directory of the
autoproj installation.
Management
----------
To update and build a autoproj installation, simply do:
autoproj build
{.commandline}
It will ask the value of newly defined configuration options, import (or update)
code hosted remotely, and build it. autoproj will *not* ask you again about the
configuration questions you already answered, so if you want to change them, do:
autoproj build --reconfigure
{.commandline}
Alternatively, you can edit the autoproj/config.yml file directly.
If you are in a disconnected environment (i.e. no access to remote
repositories), use the --no-update option to skip the update phase.
autoproj will still have to checkout new packages, though:
autoproj build --no-update
{.commandline}
If, on the other hand, you only want to update the source code, do
autoproj update
{.commandline}
Finally, if you want to make sure that your build is fresh, then do
autoproj rebuild
{.commandline}
A less intrusive version of it only forces all tools to reconsider building. It
is mainly useful for CMake when the build environment changed -- cmake caches a
lot of values. To trigger this, do
autoproj force-build
{.commandline}
To add a new set, one edits the autoproj/manifest file and adds it
there. Then, simply starting the build will update everything and rebuild what
is needed.
Documentation is generated only when asked explicitely:
autoproj doc
{.commandline}
All these commands (i.e. build, doc, and update) accept a package name as
argument, thus triggering build only for this package and its dependencies. For
instance:
autoproj build orocos/rtt
{.commandline}