From e28ea0740a7b4eb2ef4c1bd3079d77a40c6072b8 Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Sun, 30 Oct 2011 20:03:33 +0100 Subject: Get rid of the symlink by moving the commands to gbp/scripts/ --- bin/gbp-clone | 5 + bin/gbp-create-remote-repo | 5 + bin/gbp-pq | 5 + bin/gbp-pull | 5 + bin/git-buildpackage | 5 + bin/git-dch | 5 + bin/git-import-dsc | 5 + bin/git-import-dscs | 5 + bin/git-import-orig | 5 + bin/git-pbuilder | 335 +++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 380 insertions(+) create mode 100755 bin/gbp-clone create mode 100755 bin/gbp-create-remote-repo create mode 100755 bin/gbp-pq create mode 100755 bin/gbp-pull create mode 100755 bin/git-buildpackage create mode 100755 bin/git-dch create mode 100755 bin/git-import-dsc create mode 100755 bin/git-import-dscs create mode 100755 bin/git-import-orig create mode 100755 bin/git-pbuilder (limited to 'bin') diff --git a/bin/gbp-clone b/bin/gbp-clone new file mode 100755 index 00000000..33e8226b --- /dev/null +++ b/bin/gbp-clone @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.clone import main + +sys.exit(main(sys.argv)) diff --git a/bin/gbp-create-remote-repo b/bin/gbp-create-remote-repo new file mode 100755 index 00000000..81ca8c15 --- /dev/null +++ b/bin/gbp-create-remote-repo @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.create_remote_repo import main + +sys.exit(main(sys.argv)) diff --git a/bin/gbp-pq b/bin/gbp-pq new file mode 100755 index 00000000..733be7b6 --- /dev/null +++ b/bin/gbp-pq @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.pq import main + +sys.exit(main(sys.argv)) diff --git a/bin/gbp-pull b/bin/gbp-pull new file mode 100755 index 00000000..21c22c56 --- /dev/null +++ b/bin/gbp-pull @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.pull import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-buildpackage b/bin/git-buildpackage new file mode 100755 index 00000000..bc093ab0 --- /dev/null +++ b/bin/git-buildpackage @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.buildpackage import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-dch b/bin/git-dch new file mode 100755 index 00000000..68eacd9d --- /dev/null +++ b/bin/git-dch @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.dch import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-import-dsc b/bin/git-import-dsc new file mode 100755 index 00000000..fd6737a5 --- /dev/null +++ b/bin/git-import-dsc @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.import_dsc import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-import-dscs b/bin/git-import-dscs new file mode 100755 index 00000000..cd0f8806 --- /dev/null +++ b/bin/git-import-dscs @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.import_dscs import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-import-orig b/bin/git-import-orig new file mode 100755 index 00000000..812e3ec0 --- /dev/null +++ b/bin/git-import-orig @@ -0,0 +1,5 @@ +#! /usr/bin/python -u +import sys +from gbp.scripts.import_orig import main + +sys.exit(main(sys.argv)) diff --git a/bin/git-pbuilder b/bin/git-pbuilder new file mode 100755 index 00000000..d82b58b1 --- /dev/null +++ b/bin/git-pbuilder @@ -0,0 +1,335 @@ +#!/bin/sh +# $Id: git-pbuilder,v 1.22 2011-05-23 06:03:13 eagle Exp $ +# +# git-pbuilder -- Wrapper around pbuilder for git-buildpackage +# +# Written by Russ Allbery +# Based on the example in the git-buildpackage documentation +# Copyright 2008, 2009, 2010, 2011 +# The Board of Trustees of the Leland Stanford Junior University +# +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose and without fee is hereby granted, provided +# that the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Stanford University not be used in +# advertising or publicity pertaining to distribution of the software without +# specific, written prior permission. Stanford University makes no +# representations about the suitability of this software for any purpose. It +# is provided "as is" without express or implied warranty. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +set -e + +# Set BUILDER, DIST, and ARCH based on the name we were invoked as. This +# allows people to create symlinks like git-pbuilder-lenny and +# git-qemubuilder-lenny-amd64 pointing to git-pbuilder and auto-detecting the +# builder, distribution, and architecture from that. +if [ -z "$BUILDER" ] && [ -z "$DIST" ] ; then + BUILDER=${0#*git-} + DIST=${BUILDER#*-} + BUILDER=${BUILDER%%-*} + case $BUILDER in + pbuilder|cowbuilder) BUILDER=cowbuilder ;; + /*) BUILDER=cowbuilder ;; + esac + case $BUILDER in + *builder) ;; + *) BUILDER=cowbuilder ;; + esac + case $DIST in + *builder) + DIST= + ;; + *-*) + ARCH=${DIST#*-} + DIST=${DIST%%-*} + ;; + esac +else + BUILDER=cowbuilder +fi + +# Make sure we have the necessary tools +if [ ! -x /usr/sbin/"$BUILDER" ]; then + echo "$BUILDER not found; you need to install the $BUILDER package" >&2 + exit 1 +fi + +# Default options come from the environment. +OPTIONS="$GIT_PBUILDER_OPTIONS" + +# How we handle options depends on what type of builder we're using. +case $BUILDER in + cowbuilder) + # The root directory where different cowbuilder --basepath directories + # are found. git-pbuilder expects them to be named base-.cow. + : ${COWBUILDER_BASE:=/var/cache/pbuilder} + + # If DIST is set, use base-$DIST.cow. If DIST is not set, the sid + # chroot may be either base.cow or base-sid.cow. Try both. If ARCH + # is set, use base-$DIST-$ARCH.cow. + if [ -z "$DIST" ] ; then + DIST=sid + fi + if [ -n "$ARCH" ] ; then + BASE="$COWBUILDER_BASE/base-$DIST-$ARCH.cow" + OPTIONS="$OPTIONS --architecture $ARCH" + elif [ "$DIST" = 'sid' ] ; then + if [ -d "$COWBUILDER_BASE/base-sid.cow" ] ; then + BASE="$COWBUILDER_BASE/base-sid.cow" + else + BASE="$COWBUILDER_BASE/base.cow" + fi + else + BASE="$COWBUILDER_BASE/base-$DIST.cow" + fi + OPTIONS="$OPTIONS --basepath $BASE" + + # Make sure the base directory exists. + if [ ! -d "$BASE" ] && [ "$1" != "create" ]; then + echo "Base directory $BASE does not exist" >&2 + exit 1 + fi + + # Set --debian-etch-workaround if DIST is etch. Assume that + # everything else is new enough that it will be fine. + if [ "$DIST" = 'etch' ] || [ "$DIST" = 'ebo' ] ; then + OPTIONS="$OPTIONS --debian-etch-workaround" + fi + ;; + + qemubuilder) + # There always has to be an architecture for qemubuilder, and it + # doesn't make much sense to default to the current architecture. + # There's probably no good default, but this one at least makes some + # sense. + if [ -z "$DIST" ] ; then + DIST=sid + fi + if [ -z "$ARCH" ]; then + ARCH=armel + fi + + # There has to be a configuration file matching our distribution and + # architecture. + QEMUBUILDER_CONFIG="/var/cache/pbuilder/qemubuilder-$ARCH-$DIST.conf" + if [ ! -r "$QEMUBUILDER_CONFIG" ]; then + echo "Cannot read configuration file $QEMUBUILDER_CONFIG" >&2 + exit 1 + fi + OPTIONS="$OPTIONS --config $QEMUBUILDER_CONFIG" + ;; + + *) + echo "Unknown builder $BUILDER" >&2 + exit 1 + ;; +esac + +# If the first argument to the script is update, create, or login, run the +# builder with the corresponding option under sudo rather than proceeding. +case $1 in +update|create|login) + action="$1" + shift + sudo "$BUILDER" --"$action" --dist "$DIST" $OPTIONS "$@" + exit $? + ;; +*) + if [ -z "$GBP_BUILD_DIR" ]; then + echo "Warning: git-pbuilder should be run via git-buildpackage" >&2 + fi + ;; +esac + +# Print out some information about what we're doing. +if [ -n "$ARCH" ] ; then + echo "Building with $BUILDER for distribution $DIST, architecture $ARCH" +else + echo "Building with $BUILDER for distribution $DIST" +fi + +# Source package format 1.0 doesn't automatically exclude Git files, so we +# want to add the appropriate flags to do that. But source package format 3.0 +# does exclude by default and has many other ways of controlling those +# exclusions that we don't want to tromp on. So we don't want to give any -i +# or -I flags unless we're using source format 1.0. +if [ ! -f debian/source/format ] || grep -qs '^1.0' debian/source/format ; then + echo 'Source format 1.0 detected, adding exclude flags' + DEBBUILDOPTS="-i'(?:^|/)\\.git(attributes)?(?:\$|/.*\$)' -I.git $*" +else + DEBBUILDOPTS="$*" +fi + +# Now we can finally run pdebuild. The quoting here is tricky, but this +# seems to pass everything through properly. +pdebuild --buildresult .. --pbuilder "$BUILDER" \ + --debbuildopts "$DEBBUILDOPTS" -- $OPTIONS +status="$?" +if [ -n "`ls ../*_source.changes`" ] ; then + rm ../*_source.changes +fi +exit "$status" + +# Documentation. Use a hack to hide this from the shell. Because of the +# above exit line, this should never be executed. +DOCS=<<__END_OF_DOCS__ + +=head1 NAME + +git-pbuilder - Wrapper around cowbuilder/qemubuilder for git-buildpackage + +=head1 SYNOPSIS + +DIST=I ARCH=I [BUILDER=qemubuilder] \ + B I + +DIST=I ARCH=I [BUILDER=qemubuilder] \ + B (update | create | login) I + +=head1 DESCRIPTION + +B is a wrapper around B intended for use by +B. It configures B to use B by +default, passes appropriate options to B, and sets the base path +for B based on the environment variable DIST and, if set, the +environment variable ARCH. B can be selected instead by +setting the environment variable BUILDER to C. + +By default, B assumes the target distribution is C, the +same architecture as the B default, and uses +F if it exists. If it doesn't, +F is tried. If DIST is set, its value is +the target distribution and F.cow> is +used instead. If DIST is C or C, B<--debian-etch-workaround> +is also passed to B. If ARCH is set, its value is the target +architecture and F-I.cow> is used, +with I being set to C if DIST was not set. + +If B is used as the builder, no base directory is used. +Instead, B is invoked with the B<--config> option pointing to +the file F-I.conf> + +If neither BUILDER nor DIST are set in the environment and B +is invoked via a name that starts with C, the part between the +hyphens is taken to be the name of the builder to use (with C +mapped to B.). The part after the last hyphen is taken to be +the distribution (if it contains no additional hyphen) or the distribution +followed by the architecture (if it contains a hyphen). One can therefore +create symlinks like C pointing to B and +use that name when wanting to use a distribution of C, or +C to use B to build for the +C architecture and the C distribution. + +Any arguments are passed as-is to B via the +B<--debbuildopts> option to B. To pass arguments to the builder +instead, put them in the environment variable GIT_PBUILDER_OPTIONS. + +Normally, one does not run this script directly. Instead, it's used as +the builder script for B. To configure +B to use it, add a stanza like: + + [DEFAULT] + builder = /path/to/git-pbuilder + +in your F file (which can be F<.gbp.conf> in your home directory +or at the top level of the repository, or F in the F<.git> +directory). DIST and ARCH are read as an environment variable so that you +can set it before running B without having to worry +about passing parameters through B. + +Alternately, B may be called with an argument of C, +C, or C. In this case, it calls B (or the +configured builder as described above) using B and passes the +corresponding command to the builder, using the same logic as above to +determine the base directory and distribution. Any additional arguments +to B are passed along to the builder. + +=head1 ENVIRONMENT + +=over 4 + +=item ARCH + +Sets the target architecture. For a B builder, this sets both +the base path and is passed as the B<--architecture> option. For a +B, this controls the path to the configuration file. + +=item BUILDER + +Sets the builder to use. The only supported settings are C +(the default) and C. + +=item COWBUILDER_BASE + +Set this environment variable to change the default location for the +cowbuilder base directories (F). + +=item DIST + +Sets the target distribution. This is used primarily to determine the +base path for B or the configuration file path for +B, but it's also used to determine whether to pass +B<--debian-etch-workaround> to B. + +=item GIT_PBUILDER_OPTIONS + +Add additional options for the builder. These options are passed as-is to +B or B via B. The contents of this +variable will undergo shell expansion, so any arguments containing shell +metacharacters or whitespace need to be quoted in the value of the +environment variable. + +=back + +=head1 FILES + +=over 4 + +=item /var/cache/pbuilder/base-sid.cow + +=item /var/cache/pbuilder/base.cow + +The default C directories, searched for in that +order, if neither DIST nor ARCH is set. + +=item /var/cache/pbuilder/base-sid-$ARCH.cow + +The C directory used if ARCH is set and DIST is not +set. + +=item /var/cache/pbuilder/base-$DIST.cow + +The C directory used if DIST is set and ARCH is +not. + +=item /var/cache/pbuilder/base-$DIST-$ARCH.cow + +The C directory used if DIST and ARCH are both set. + +=item /var/cache/pbuilder/qemubuilder-$ARCH-$DIST.conf + +The C file used. $ARCH defaults to C and +$DIST defaults to C if not set. + +=back + +=head1 SEE ALSO + +cowbuilder(8), dpkg-buildpackage(1), git-buildpackage(1), pdebuild(1), +qemubuilder(8), sudo(8) + +The latest version of this script is available from +L. + +=head1 AUTHOR + +Russ Allbery + +=cut + +__END_OF_DOCS__ -- cgit v1.2.3