svn-buildpackage(1)



NAME

   svn-buildpackage - build Debian packages from SVN repository

SYNOPSIS

   svn-buildpackage [[ OPTIONS... ] [ OPTIONS for dpkg-buildpackage ]]

DESCRIPTION

   Builds a Debian package from a Subversion repository. The source code
   repository must be in the format created by svn-inject, and this script
   must be executed from the working directory (trunk/package).

   By default, the working directory is used as the main source directory
   (assuming the whole upstream source is being stored in the repository).
   The alternative is so called "merge mode". With this method, only the
   debian directory (and maybe some other modified files) are stored in
   the repository. At build time, the contents of the svn trunk are copied
   to the extracted tarball contents (and can overwrite parts of it). To
   choose this working model, set the svn property mergeWithUpstream on
   the debian directory

       $ svn propset mergeWithUpstream 1 debian

   mergeWithUpstream requires that the build system can prepare a tarball,
   typically using make dist and autotools. All upstream packages will
   have some form of tarball creation support and native packages that use
   autotools or which have internal tarball support can use
   mergeWithUpstream to handle generated files that are needed to build
   the package but are not present in SVN. See the HOWTO guide for
   examples of how this can be done. Native packages that do not use
   autotools and do not have internal tarball support can still add
   generated files to the source package tarball using the useNativeDist
   make target in the top level Makefile. This custom target must be
   idempotent and only modify / generate the desired files using only the
   exported SVN source and build dependencies. To allow svn-buildpackage
   to use an make native-dist target in your top level Makefile, set the
   useNativeDist property on the ./debian/ directory:

       $ svn propset useNativeDist 1 debian

   The default behaviour of svn-buildpackage is as follows:

   Check the working directory, complain on uncommited files (also see
   --svn-ignore-new)

   Copy the orig tarball to the build area if necessary (also see
   --svn-no-links)

   Extract the tarball (in merge mode) or export the svn work directory to
   the build directory (also see below and --svn-no-links)

   Build with dpkg-buildpackage (also see --svn-builder, --svn-lintian,
   etc.)

   Create a changelog entry for the future version

OPTIONS

   svn-buildpackage accepts the following options on the command-line:

   --svn-builder=COMMAND
       Specifies alternative build command instead of dpkg-buildpackage,
       eg.  debuild, pdebuild, etc. Every parameter that svn-buildpackage
       doesn't know (--svn-*) is passed to COMMAND. There is no difference
       between the command line and config file parameters . They are used
       at the same time.

       WARNING: shell quotation rules do not completely apply here, better
       use wrappers for complex constructs. Using this option may break
       --svn-lintian and --svn-move functionality. Some functions may be
       disabled when a custom build command is used because the output
       file location is not predictable.

       Default: use dpkg-buildpackage.

   --svn-ignore-new | --svn-ignore
       Don't stop on svn conflicts or new/changed files. To set this
       behaviour for single files set the deb:ignoreM property to 1 on
       them. Also see documentation of the svn:ignore property in the SVN
       book.

       Default: Stop on conflicts or new/changed files.

   --svn-dont-clean
       Don't run debian/rules clean.

       Default: clean first

   --svn-no-links
       Don't use file links but try to export or do hard copies of the
       working directory. This is useful if your package fails to build
       because some files, empty directories, broken links, ... cannot be
       transported with in the default link-copy mode.

       Default: use links where possible.

   --svn-dont-purge
       Don't remove the build directory when the build is done.

       Default: remove after successful build.

   --svn-reuse
       If possible, reuse an existing build directory in subsequent
       builds. The build directory is not purged after the build, it is
       not renamed when a build starts and the files are just copied over
       into it. Useful in mergeWithUpstream mode with large packages.

       Default: build directory is removed.

   --svn-rm-prev-dir
       If a previous build directory is found, remove it before building
       instead of renaming it. If --svn-reuse is also given in the same
       line, the reuse behaviour occurs.

       Default: rename old directories with a 'obsolete' suffix.

   --svn-export
       Just export the working directory and do necessary code merge
       operations, then exit.

       Default: Off.

   --svn-tag
       Final build: Tag, export, build cleanly & make new changelog entry.

       Default: Off.

   --svn-tag-only | --svn-only-tag
       Don't build the package, do only the tag copy.

       Default: Off.

   --svn-retag
       If an existing target directory has been found while trying to
       create the tag copy, remove the target directory first.

       Default: Off.

   --svn-noautodch
       No new Debian changelog entry is added automatically.

       Default: A new UNRELEASED changelog entry is set via dch.

   --svn-lintian
       Run lintian on the resulting changes file when done.

       Default: Off.

   --svn-move
       When done, move the created files (as listed in .changes) to the
       parent directory, relative to the one where svn-buildpackage was
       started.

       Default: Off.

   --svn-move-to=...
       Specifies the target directory to which to move the generated
       files.

       Default: Off. (Files are left where the build command puts them.)

   --svn-pkg=packagename
       Overrides the detected package name. Use with caution since it
       could be set too late during the processing (eg. still have the old
       value when expanding shell variables).

       Default: Off.

   --svn-arch=ARCH
       Allows specifying the build architecture (e.g. i386 build on an
       amd64 machine).

       Default: Off.

   --svn-override=var=value,anothervar=value
       Overrides any config variable that has been autodetected or found
       in .svn/deb-layout.

       Default: Off.

   --svn-prebuild | --svn-postbuild | --svn-pretag | --svn-posttag
       Commands (hooks) to be executed before/after the build/tag command
       invocations, e.g. to download the orig tarballs from the archive.
       Shell code can be emdded here though it is not recommended. Various
       helping variables are available in the environment, see ENVIRONMENT
       VARIABLES below for detailed explanation.

       Please note that the prebuild and postbuild hooks replace the
       normal prebuild and postbuild actions of svn-buildpackage. For
       prebuild, this means that the build dependencies will not be
       checked. For postbuild, this means that the resulting files won't
       be moved, and lintian will not be run.

       Defaults: Off.

   --svn-noninteractive
       With this parameter svn-buildpackage will not interact with the
       user.

       Default: Off.

   --svn-savecfg
       By default, svn-buildpackage used to create .svn/deb-layout on
       every invocation. Since version 0.6.22 this behaviour is
       deprecated.

       With this parameter svn-buildpackage will (partly) replicate the
       old behaviour. In contrast to the deprecated behaviour, the
       .svn/deb-layout is regarded as a local override; the old behaviour
       simply ignored any versioned layout information if it found
       .svn/deb-layout.

       This option was provided since it can be useful when creating a
       local override file.

       Default: Off.

   --svn-download-orig
       This option makes svn-buildpackage try to download the upstream
       tarball using apt and uscan.

       Default: Off.

   --svn-verbose
       More verbose program output.

       Default: Off.

   -h | --help
       Show the help message.

EXAMPLES

   For more detailed information on how to use svn-buildpackage, see the
   HOWTO http://svn-bp.alioth.debian.org/[1].

   To start working with existing native Debian package from a *.dsc file,
   import it into the repository with command:

       svn-inject package_0.1.dsc svn://host/debian/devel/packages

   To start working with existing upstream package in Debian from a *.dsc
   file, import it into the repository with command:

       svn-inject -o package_0.1-2.dsc svn://host/debian/devel/packages

   Before building an upstream package, ensure the original source is
   available, e.g. if uscan is working:

       svn mkdir ../tarballs
       svn propset svn:ignore "*" ../tarballs
       uscan --force-download --destdir ../tarballs

   To test building the package from Subversion repository, use command
   below. Refer to dpkg-buildpackage(1) manual page for the -us etc.
   options:

       svn-buildpackage --svn-lintian -us -uc -rfakeroot

   To check that package build in a clean state, test it with pbuilder(1):

       svn mkdir ../build-area  # To store results
       svn propset svn:ignore "*" ../build-area
       svn-buildpackage --svn-ignore-new --svn-builder=pdebuild

   When a new upstream release becomes available, commit all changes and
   have the working tree in clean state. Then use svn-upgrade(1) to import
   the new release:

       svn status   # Check that there are no uncommited changes
       svn-upgrade --verbose ../package-2.0.tar.gz

CONFIGURATION FILE

   svn-buildpackage's behaviour can be modified using the file
   ~/.svn-buildpackage.conf. Additional parts can be added in each package
   working directory using the file .svn/svn-buildpackage.conf. It is
   essentially a list of the long command line options (without leading
   minus signs), one argument per line (without quotes surrounding
   multi-word arguments). The variables are expanded with the system shell
   if shell variables are found there. Avoid ~ sign because of unreliable
   expansion: it is better to use $HOME instead. Example:

       svn-builder=debuild -EPATH
       svn-no-links
       svn-override=origDir=$HOME/debian/upstream/$PACKAGE
       # svn-ignore-new
       #svn-lintian

DIRECTORY LAYOUT HANDLING

   By default, svn-buildpackage expects a configuration file with path/url
   declaration, .svn/deb-layout. The values there can be overridden with
   the --svn-override option, see above. If a config file could not be
   found, the settings are autodetected following the usual assumptions
   about local directories and repository layout. In addition, the
   contents of a custom file debian/svn-deblayout will be imported during
   the initial configuration. Package maintainers can store this file in
   the repository to pass correct defaults to new svn-buildpackage users.
   The format is the same as in the file .svn/deb-layout. As an
   alternative to the debian/svn-deblayout file, maintainers can set
   Subversion properties for the debian/ directory; any properties of
   debian/ which have a name of the form svn-bp:PROP will be the source of
   a PROP setting which has the value indicated by the first line of the
   property value. If a full svn URL is not given, the repository root
   will be prepended to this value.

ENVIRONMENT VARIABLES

   The following environment variables are exported by svn-buildpackage
   and can be used in hook commands or the package build system.

   PACKAGE, package
       The source package name.

   SVN_BUILDPACKAGE
       Version of svn-buildpackage.

   TAG_VERSION, debian_version
       The complete Debian version string, also used for the tag copy.

   non_epoch_version
       Same as debian_version but without any epoch strings.

   upstream_version
       Same as debian_version but without Debian extensions

   guess_loc
       Guessed upstream source package name in the pool, something like
       libm/libmeta-html-perl_3.2.1.0.orig.tar.gz

   DIFFSRC
       (experimental) shows the location of generated diff file

   All the layout properties are exported to the environment, too. The
   following ones have meaning to svn-buildpackage.

   buildArea
       the location of build area directory

   trunkUrl
       the URL of the trunk directory for the current package.

   tagsUrl
       the URL of the tags base directory for the current package.

   origDir
       the local directory where the orig tarball should be located.

   origUrl
       the URL from where the orig tarball for the current package can be
       pulled from.

   The following variables are understood by svn-buildpackage:

   FORCETAG
       Ignore the signs of an incomplete changelog and tag the repository
       anyway.

   FORCEEXPORT
       Export upstream source from the repository even if
       mergeWithUpstream property is set.

   DEBIAN_FRONTEND
       If DEBIAN_FRONTEND is set to 'noninteractive' --svn-noninteractive
       is called silently.

RECOMMENDATIONS

   Use shell aliases. Here are some examples for Bash:

       alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore"
       alias svn-br="svn-b --svn-dont-purge --svn-reuse"
       alias svn-bt="svn-buildpackage --svn-tag -rfakeroot"

   Those commands have respective meanings: build regardless of new or
   changed files; build regardless of new or changed files and reuse the
   build directory; build (for upload) and tag.

   SSH is the easiest way to access remote repositories, although it
   usually requires entering a password more frequently with
   svn-buildpackage. Workarounds include using an ssh key without a
   passphrase (although this is insecure and still relatively slow), or
   the SSH connection caching feature present in recent versions of SSH.
   For details, see the svn-buildpackage manual.

   Another way to get a remote link is using the Subversion DAV module
   (with SSL and Apache user authentication), see the svn-buildpackage
   HOWTO manual for details.

SEE ALSO

   /usr/share/doc/svn-buildpackage/()
       The svn-buildpackage HOWTO manual

   svn-inject(1)
       puts a Debian source package into Subversion repository

   svn-upgrade(1)
       upgrade source package from a new upstream revision

   svn(1)
       Subversion command line client tool

   dpkg-buildpackage(1)
       Debian source package tools

   lintian(1)
       Debian package checker

AUTHORS

   Eduard Bloch
       This manual page was written by Eduard Bloch in roff.

   Goneri Le Bouder
       Converted manpages to SGML.

   Neil Williams
       Converted manpages to DocBook XML and current Debian maintainer

COPYRIGHT

   Copyright  2009 Eduard Bloch

NOTES

    1. http://svn-bp.alioth.debian.org/
       http://svn-bp.alioth.debian.org/




Free and Open Source Software


Free Software Video

Useful Programs

Free Online Courses

Open Opportunity

Open Business