---
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, layout of the
installation. See "Management" below.
* .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.
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.
Toplevel manifest
-----------------
The autoproj/manifest file is a yaml file which describes the package
sets that are available, and how packages are organized in the installation. It
looks like this:
{coderay:: yaml}
layout:
- autoproj.orocos
- asguard:
- dfki.imoby
package_sets:
- imoby
- type: git
url: git://github.com/doudou/autoproj-orocos.git
{coderay}
The first section, the layout section, lists the packages or package
sets we want to have in this installation. It is a layout, meaning that some packages
can be built and installed in a subdirectory of the main installation
(see "Layouts and dependencies" below). Packages are referred to by the name they
have in the autobuild file (see [this page for more details](source_yml.hml)).
Package sets are referred to by the name given in the [set's source.yml
file](source_yml.html), and are interpreted as "build all packages of the given
set".
The second section, the package_sets section, lists both local and remote
sets that are available to 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}
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}
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}
Building packages selectively on the command line
-------------------------------------------------
All the build-related commands given above (i.e. build, doc, and update) can be
given a package name or a name used as a subdirectory in the layout section of
the manifest.
In the first case, only the package and the dependencies _that are on the same
level on the installation layout_ are built. It means that with the following
layout:
{coderay:: yaml}
layout:
- typelib
- asguard:
- modules/base
- modules/logger
{coderay}
If the command line is
autoproj build modules/logger
{.cmdline}
then only modules/logger and modules/base will be built -- assuming
modules/logger depends on modules/base -- but typelib will be left alone
_regardless of its state_. It may speed up the build process tremendously, but
also may generate errors if other packages needed to be updated.
Idem, if the command line is:
autoproj build asguard
{.cmdline}
then all packages or asguard/ are built _but none of the dependencies that are
defined in other places in the layout_.