table of contents
XDEB(1) | General Commands Manual | XDEB(1) |
NAME¶
xdeb
—
SYNOPSIS¶
xdeb |
[-C file]
[-a architecture]
[-b builddir]
[-d destdir]
[- -apt-source ]
[- -prefer-apt ]
[- -only-explicit ]
[-f ]
[- -debug ]
[- -generate-graph ]
[- -generate-compact-graph ]
[- -no-clean-after ]
[- -no-lintian ]
[- -sequence ]
[- -list-builds ]
[- -all ]
[-x package]
[- -no-native-import ]
package [...]
|
xdeb |
- -convert
[-C file]
[-a architecture]
[- -no-convert-install ]
package.deb [...] |
DESCRIPTION¶
Traditionally, Debian-format packages (as used in Debian, Ubuntu, and so on) have been built natively. However it is often useful to be able to cross-build packages, and sometimes whole systems.xdeb
provides this functionality in a
convenient form by providing build-ordering, cross-dependency satisfaction,
and cross-building all in one tool.
xdeb
takes a set of target package names
or names of directories containing packages, and builds those packages for
the specified architecture (or for the native
architecture if unspecified), in an appropriate sequence. As builds
complete, it will install packages necessary to satisfy build-dependencies
for subsequent stages. When necessary, it will convert foreign-architecture
binary packages to packages that can be installed safely on the native
architecture without conflicts. When cross-compiling, it checks to ensure
that programs were not accidentally built to run on the build architecture,
which is a common failure mode.
xdeb
fetches source code using
apt-get(8). It defaults to using the build-system APT
configuration, so you should ensure that a repository containing packages of
the target architecture is specified on the relevant machine/chroot.
e.g.
deb [arch=armel] http://ports.ubuntu.com/ubuntu-ports maverick main universe
deb-src http://ports.ubuntu.com/ubuntu-ports maverick main universe
Multiple repositories can be specified and APT pinning and
release-default options used to provide preferred source repositories.
xdeb
will respect APT policy.
OPTIONS¶
-C
,-
-config-file
file- Read file as an additional configuration file.
-a
,-
-architecture
architecture- Build packages for architecture rather than for the
native architecture. Configuration file option:
architecture
. -b
,-
-build-directory
builddir- Build packages in builddir rather than in the
current directory. This option may be given multiple times; in that case,
the first builddir will be used for packages fetched
using apt-get and as the default destination directory, but otherwise all
supplied directories will be scanned for packages and treated
equivalently. Configuration file option:
builddirs
. -d
,-
-dest-directory
destdir- Leave successfully built packages in destdir rather
than in the first build directory. Configuration file option:
destdir
. -
-apt-source
- Fetch source code using apt-get. If this is not specified, then only
packages in any builddir will be built, and only
those packages will be used to expand dependencies for build sequencing.
Configuration file option:
apt_source
. -
-prefer-apt
- Prefer source packages available using apt-get, even if an older version
of the package is already available in the build directory. This option
implies
-
-apt-source.
Configuration file option:prefer_apt
. -
-only-explicit
- Only build packages explicitly listed on the command line. For all other packages, import native builds rather than attempting to cross-compile them. This may produce less complete builds in some cases, but if the native repository is reasonably complete then it greatly reduces the number of builds that need to be run and it avoids many problems with build-dependency loops.
-f
,-
-force-rebuild
- Rebuild packages even if the source code appears to be unchanged.
xdeb
relies on the version number in debian/changelog to detect changes. Configuration file option:force_rebuild
. -
-debug
- Emit extra messages useful for debugging build sequencing. Configuration
file option:
debug
. -
-generate-graph
- Emit dot graph version of debug build dependency information. See
README-graph for further details. Configuration file option:
generate-graph
. -
-generate-compact-graph
- Emit dot graph version of debug build dependency information, but without
the intermediate binary dependencies, in order to produce a more readable
graph. See README-graph for further details. Configuration file option:
generate-compact-graph
. -
-parallel
- Use as many jobs as there are CPUs on the system. Configuration file
option:
parallel
. -
-no-clean-after
- Do not clean each source tree after building.
-
-no-lintian
- Do not run lintian(1) to check whether cross-compiled
packages were built for the requested architecture. This can speed up
builds when you are sure that all packages are cross-safe, but is
otherwise not recommended. Configuration file option:
lintian
(defaults to true). -
-sequence
- Just show the build sequence, but don't actually build anything. Only
packages whose names are suffixed with ‘*’ will be built;
the rest are listed for information only. Configuration file option:
sequence
. -
-list-builds
- List all current successful builds for the selected
architecture in the build directory. Configuration
file option:
list_builds
. -
-all
- Build all packages in the working tree. Configuration file option:
all
. -x
,-
-exclude
package- Exclude package from the list of packages computed
by
-
-all
. It will only be built if required to satisfy dependencies. Configuration file option:exclude
. -
-no-native-import
- Normally,
xdeb
will import native builds of certain packages rather than attempting to cross-build them. This option disables that behaviour. Use this when working on fixing cross-builds of the packages in question. -
-convert
- Rather than building, convert a set of foreign-architecture binary
packages to packages that can be installed safely on the native
architecture without conflicts, as though they had just been built by
xdeb
. This silently ignores any packages that cannot usefully be converted. -
-no-convert-install
- Normally,
xdeb
-
-convert
will install packages after converting them for use on the native architecture. This option suppresses that behaviour.
FILES¶
- /etc/xdeb/xdeb.cfg
- Site-wide configuration file.
xdeb
will also look for xdeb.cfg in the directory alongside its own executable, to support running from its own build directory. - .xdeb, xdeb.cfg
- Read from the current directory as a per-project configuration file. You
may supply additional configuration files using the
-C
option.
CONFIGURATION FILE¶
The configuration file is a ConfigParser-format (a.k.a. "INI file") file. Recognised sections areLists
and
Options
. The Lists
section
lists specific packages that are exceptions from various built-in rules; see
the supplied site-wide configuration file for examples. The
Options
section may be used to provide defaults for
any values not explicitly set on the command line.
It is also possible to have a xdeb.cfg
configuration file in a directory containing an individual package. Such
configuration files may include a Package
section,
with the following optional keys:
directory
- Relative path to the directory that really contains the package's files. This directory will need to contain a debian subdirectory in order to build properly (which may be created due to another option in this section). This option is useful when package files are fetched from another repository, and some extra work is needed to put the debian subdirectory in place.
debian_symlink
- Create debian as a symbolic link to the value of this option.
ADVICE ON OPERATION¶
Generally speaking, you can re-runxdeb
on failures and
it will start again with the last package it tried to build. If the first
builddir and destdir are the same,
then xdeb
will not notice that a package had not been
successfully built in a previous run if it contained objects for the wrong
architecture, or if it failed to run dpkg-cross
or
dpkg
-i
. In this case, you may
need to remove the .changes file for that package
before trying again. We recommend that destdir be set to
a directory which is not a build directory.
AUTHORS¶
xdeb
was originally written by Colin
Watson ⟨cjwatson@canonical.com⟩ for Chromium OS, and then
renamed to xdeb
for more general use.
xdeb
is copyright © 2009, 2010
The Chromium OS Authors, © 2010
Canonical Ltd.
October 15, 2009 | Linaro |