xenial (1) svn-buildpackage.1.gz

Provided by: svn-buildpackage_0.8.5+nmu1_all bug

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 not 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 © 2009 Eduard Bloch

NOTES

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