#! /bin/bash # pbuilder-internal -- personal Debian package builder, internal routine # Copyright (C) 2003,2004,2005 Junichi Uekawa # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # invoke this as # pbuilder execute pdebuild-internal --bindmount "${pwd}/.." "$1" # does not support --buildresult, but should that be required ? # # Risk: May corrupt your files depending on how user-mode-linux works, if used inside UML. # Will take longer if your package does not successfully run 'debian/rules clean' # # This script is running inside 'pbuilder execute' as root. set -e echo "Using: $Id$" # I am probably running as root; make sure I have pbuilder installed here. apt-get install -y --force-yes pbuilder # I'm not going to have the same LOGNAME as outside, I'm root. export LOGNAME=root cd "$1" shift; while [ -n "$1" ]; do case "$1" in --debbuildopts) echo "Setting DEBBUILDOPTS=$2" DEBBUILDOPTS="$2" shift; shift; ;; --uid) BUILDRESULTUID=$2 shift; shift; ;; --gid) BUILDRESULTGID=$2 shift; shift; ;; --debug) PBUILDER_DEBUGMODE=yes set -x shift; ;; --*) echo "Error: Unknown option [$1] was specified " >&2 exit 1; ;; *) break; ;; esac done export PBCURRENTCOMMANDLINEOPERATION="pdebuild" /usr/lib/pbuilder/pbuilder-satisfydepends apt-get install -y --force-yes fakeroot # create the user similar to that used outside groupadd -g "${BUILDRESULTGID}" -o pbgroup useradd -g pbgroup -u "${BUILDRESULTUID}" -o pbuser # what about id -G output? if other groups than the designated is used, we're stuffed. # do build with that user. echo /usr/bin/dpkg-buildpackage -rfakeroot -us -uc '${DEBBUILDOPTS}' | su pbuser