blob: ebcf7143055b6e9f97ccf8e740e965dd63097e78 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#! /bin/bash
# pbuilder -- personal Debian package builder
# Copyright (C) 2001,2002 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
export LANG=C
export LC_ALL=C
set -e
. /usr/lib/pbuilder/pbuilder-checkparams
. /usr/lib/pbuilder/pbuilder-runhooks
. /usr/lib/pbuilder/pbuilder-buildpackage-funcs
PACKAGENAME="$1"
if [ ! -f "$PACKAGENAME" ]; then
echo "Command line parameter [$PACKAGENAME] is not a valid .dsc file name" >&2
exit 1;
fi;
if [ -n "$BUILDUSERNAME" -a -n "$BUILDUSERID" ]; then
SUTOUSER="HOME=/tmp/buildd su $BUILDUSERNAME -- "
DEBBUILDOPTS="$DEBBUILDOPTS -rfakeroot"
EXTRAPACKAGES="${EXTRAPACKAGES} fakeroot"
echo "I: using fakeroot in build."
else
# run the build in root
SUTOUSER=""
BUILDUSERID=0
BUILDUSERNAME=root
fi
showbuildbanner '$Id'
echobacktime
extractbuildplace
loadhooks
createbuilduser
echo Copying source file
copydsc "$PACKAGENAME" "$BUILDPLACE/tmp/buildd"
executehooks "D"
echo Extracting source
if ! $CHROOTEXEC /bin/bash -c "( cd tmp/buildd; chown $BUILDUSERNAME:$BUILDUSERNAME ../buildd *; $SUTOUSER /usr/bin/dpkg-source -x $(basename $PACKAGENAME) )"; then
echo "pbuilder: Failed extracting the source" >&2
umountproc_cleanbuildplace
exit 1;
fi
recover_aptcache
echo "Installing the build-deps"
checkbuilddep
save_aptcache
echo " -> Building the package"
export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
executehooks "A"
if [ -z "$DEBEMAIL" ]; then
DPKG_COMMANDLINE="cd tmp/buildd/*/; $SUTOUSER dpkg-buildpackage -us -uc $DEBBUILDOPTS"
else
DPKG_COMMANDLINE="cd tmp/buildd/*/; $SUTOUSER dpkg-buildpackage -us -uc \"-m$DEBEMAIL\" $DEBBUILDOPTS"
fi
(
: Build process
$CHROOTEXEC /bin/bash -c "${DPKG_COMMANDLINE}"
) &
BUILD_PID=$!
if [ -n "${TIMEOUT_TIME}" ]; then
(
: Timeout process
sleep "${TIMEOUT_TIME}"
echo " -> Terminating build process due to timeout "
kill ${BUILD_PID} || true
) & # timeout process
KILL_WAIT_PID="kill $! || true; echo \" -> Terminate timeout process\"; "
else
KILL_WAIT_PID=""
fi
if ! wait ${BUILD_PID}; then
trap umountproc_cleanbuildplace exit
eval ${KILL_WAIT_PID}
echo "pbuilder: Failed autobuilding of package" >&2
executehooks "C"
exit 1;
else
eval ${KILL_WAIT_PID}
# build was successful
fi
trap umountproc_cleanbuildplace exit
executehooks "B"
trap cleanbuildplace exit
umountproc
if [ -n "${BUILDRESULT}" ]; then
mkdir -p "${BUILDRESULT}"
if [ -d "${BUILDRESULT}" ]; then
if [ -n "${BUILDRESULTUID}" ]; then
chown "${BUILDRESULTUID}" "${BUILDPLACE}"/tmp/buildd/*
fi
if [ -n "${BUILDRESULTGID}" ]; then
chgrp "${BUILDRESULTGID}" "${BUILDPLACE}"/tmp/buildd/*
fi
cp -p "${BUILDPLACE}"/tmp/buildd/* "${BUILDRESULT}" 2>/dev/null || true
else
echo "E: BUILDRESULT=[$BUILDRESULT] is not a directory." >&2
fi
fi
echobacktime
|