cvs-buildpackage - build Debian packages from a CVS repository.
cvs-buildpackage [options]
This manual page explains the Debian
cvs-buildpackage utility, which is
used to build Debian packages whose sources are stored in a
CVS
repository. This is a
CVS -aware wrapper around dpkg-buildpackage, and
it first parses
./debian/changelog; exports the corresponding version
(tagged
debian_version_<$version> ), and runs
dpkg-buildpackage in the exported tree. It looks for uncommitted files
in the source tree, and offers to abort before doing anything so that the user
may commit the files in, if they wish.
cvs-buildpackage can also
optionally automatically re-tag all files before exporting the source (this
functionality is only relevant in the top level directory of a checked out
Debian package source tree, of course).
Please note that the
work directory referred to below is the scratch
directory where the program does its work; it is where it shall export the
sources from CVS, and it assumes full control of that directory
Read:
anything in that directory, apart from the orig source files, can be deleted
by
cvs-buildpackage Make sure not to have
your checked out
sources/working directory in the same location, as you may lose data.
If this utility is not run from a top level directory of a checked out Debian
package source tree, then to build an old version the cvs module name or the
package name have to be supplied on the command line.
Combined with the companion utilities
cvs-inject and
cvs-upgrade,
this provides an infrastructure to facilitate the use of
CVS by Debian
maintainers. This allows one to keep separate CVS branches of a package for
stable, unstable, and possibly
experimental
distributions, along with the other benefits of a version control system.
-h Print out a usage message.
- -M<module>
- The name of the CVS module.
- -P<package>
- Sets the name of the package. Very useful if this is not
running in the CVS checked out source tree, in which case one also needs
the version of the package, which may optionally be determined by checking
out the latest debian/changelog file.
- -V<version>
- The version number of the package. In conjunction with
setting the package name, this option allows operation outside a CVS
source tree (just needs the repository).
- -T<tag>
- The CVS tag to use for exporting sources, rather than
constructing one from the version. This assumes you know what you are
doing.
- -U<tag>
- The CVS tag to use for the upstream tag, rather than
constructing one from the upstream version. This assumes you know what you
are doing.
- -C<Build Command>
- Sets the name of the builder program invoked, nominally set
to dpkg-buildpackage. However, the user may choose to use a
different build program, or a wrapper, or even 'chroot /opt/root
dpkg-buildpackage' to build the package in a chroot jail, if
desired. (Obviously, this requires that the Work directory to be a
subdirectory of a previously set up chroot jail). One may also hook in
pbuilder by setting this variable to 'pdebuild --auto-debsign
--buildresult ../'. (Again, this requires that pbuilder has
been set up correctly). This argument overrides the settings in the
environment variable CVSDEB_BUILDPACKAGE, and the configuration
file variable conf_buildpackage.
- -G<get method>
- This option, if set, should contain a command to execute to
get the original tarball into the current directory. This can then be used
to allow one to get the original file using, for instance, wget or
curl. This overrides the CVSDEB_GET_ORIG environment
variable and the conf_get_orig configuration file option.
- -A
- Use apt-get source to retrive the original tarball.
This option has no effect unless a source package with the correct
upstream version has already been uploaded and is referenced from a
Sources file known to apt. If -A and -G are
both given, -G is tried first, and apt is used only if that
did not produce the tarball. This overrides the CVSDEB_USE_APT
environment variable and the conf_use_apt configuration file
option.
- -R<root directory>
- Root of the original sources archive. We expect to find the
<package name>_<version>.orig.tar.gz file under
<root directory>/package name>/ unless the
cvs-buildpackage work directory has been set, or we want to export the
original sources from the vendor branch of the CVS tree. If the
cvs-buildpackage work directory is set anywhere, (command line,
configuration file, environment variable), the root directory value is
ignored, since we only need the root directory to set defaults for the
cvs-buildpackage work directory. This argument overrides the settings in
the environment variable CVSDEB_ROOTDIR, and the configuration file
variable conf_rootdir. Please note that the cvs-buildpackage work
directory referred to here is the scratch directory where this program
works, not the directory that the human uses to work in. This should
probably not be a sub dir of CVSROOT, since cvs shall refuse to
export packages there, and the script shall fail.
- -W<work directory>
- The full path name for the cvs-buildpackage working
directory, into which the sources will be exported out of CVS and which
should contain the original
<package name>_<version>.orig.tar.gz Please note
that it is not strictly essential to have the original sources, as this
script will check out the vendor branch version tagged as
upstream_version_<version> (without the Debian revision).
However, these recreated original sources are likely to be different for
consecutive runs of cvs-buildpackage, and very likely to be different from
the pristine original sources (different enough to cause problems with an
upload). Thus it is strongly advisable to keep the orig.tar.gz file
around. Setting this variable overrides the settings for the root
directory. This argument also overrides the settings in the environment
variable CVSDEB_WORKDIR, and the configuration file variable
conf_workdir. Please note that the cvs-buildpackage work directory
referred to here is the scratch directory where this program works, not
the directory that the human uses to work in. Also, you should specify an
absolute path name for the work directory. This should probably not be a
sub dir of CVSROOT, since cvs shall refuse to export packages
there, and the script shall fail.
- -F
- The Force Tag option. This only has effect if run in the
source directory. If set, it forces a cvs tag -F operation to be
performed before exporting the sources. This argument overrides the
settings in the environment variable CVSDEB_FORCETAG, and the
configuration file variable conf_forcetag. The default action is
not to force a tag before export.
- -E
- The Full Export option. Normally, cvs-buildpackage will
export all the data from CVS using cvs export. If the orig.tar.gz
is not available in the working directory, the full tree will be exported
from CVS regardless of whether this option is set or not. This option
overrides the environment variable CVSDEB_FULLEXPORT, and the
configuration file variable conf_fullexport.
- -op
- The opposite of full export. Using this option resets the
value of full export. Normally, cvs-buildpackage will export all the data
from CVS using cvs export. With this option set, cvs-buildpackage
will extract the orig.tar.gz in the cvs-buildpackage working directory,
and then use the cvs rdiff command to bring that tree up-to-date
with the CVS tree we're building. Please look at the
-f<fix_script> option to see how to massage the source tree
after extraction and patching.
- -ctp
- Include package_ at the start of the CVS tag.
This overrides the CVSDEB_PACKAGEINTAG environment variable and the
conf_forcetag configuration file option. The default is not to
include the prefix.
- -n
- The no exec (or dry-run) option, causing
cvs-buildpackage to print out all actions that would be taken
without actually executing them.
- -f<fix_script>
- This option, if set, should point to a script that should
be run just from the top level of the source tree to set up permissions of
scripts that have been created by pathching the sources from an recently
extracted original tar file (the behaviour attained by setting the
-op option. This script is called with two arguments, the package
name, and version. This script is only relevant when that option has been
used. There a number of variables that are exported into the environment,
for example package contains the name of the package,
non_epoch_version contains the version of the package without the
epoch, upstream_version contains the upstream version.
debian_version contains the debian revision. cvstag contains
the cvs tag, and cvs_upstream_tag contains the tag for the upstream
version.
- -H<hook_script>
- This option, if set, should point to a script that should
be run just before calling dpkg-buildpackage. Ideally, things like
this are done using the modules file and programs, but is still provided
here for convenience. This script is called with two arguments, the
package name, and version. There a number of variables that are exported
into the environment, for example package contains the name of the
package, non_epoch_version contains the version of the package
without the epoch, upstream_version contains the upstream version.
debian_version contains the debian revision. cvstag contains
the cvs tag, and cvs_upstream_tag contains the tag for the upstream
version. This argument overrides the settings in the environment variable
CVSDEB_HOOK which in turn over rides the configuration file option
conf_hook_script.
- -x<prefix>
- This option provides the CVS default module prefix (should
really fix the CVS modules file). This argument overrides the settings in
the environment variable CVSDEB_PREFIX. Note: The
configuration file variable conf_prefix is not honoured by
cvs-buildpackage, since the prefix is required to calculate the
variables that are supposed to be defined when we load the config file
(chicken and egg problem).
The rest of the command line arguments are passed on, uninterpreted, to
dpkg-buildpackage, though we do pay attention to the -r
(root
command) option (which gives the command to achieve root access, usually
sudo, fakeroot, or
super ). The -r option overrides the other
means of setting the root command, namely, the environment variable
CVSDEB_ROOTCOMMAND, which in turn overrides the config file option
conf_rootcommand. No attempt is made to check any other option. Please
use the -h option to see which of the
dpkg-buildpackage options are
supported and passed on.
Apart from the runtime options,
cvs-buildpackage also looks for site-wide
defaults in the file
/etc/cvsdeb.conf. After that, it looks for and
reads
~/.cvsdeb.conf . The default configuration allows there to be a
site wide override for the root or the cvs-buildpackage working directories on
the site, but the
cvsdeb.conf files are actually Bourne shell snippets,
and any legal shell directives may be included in there.
Note: Caution
is urged with this file, since you can totally change the way that the script
behaves by suitable editing this file.
dpkg-buildpackage(1),
cvs-inject(1),
cvs-upgrade(1),
cvsdeb.conf(5),
cvs(1).
This manual page was written Manoj Srivastava <
[email protected]>, for
the Debian GNU/Linux system.