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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#! /bin/bash
# pbuilder -- personal Debian package builder
# Copyright © 2001-2007 Junichi Uekawa <dancer@debian.org>
# 2015 Mattia Rizzolo <mattia@debian.org>
#
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
###############################################################################
set -e
export PBUILDER_OPERATION="pdebuild"
export PBCURRENTCOMMANDLINEOPERATION="pdebuild"
. /usr/lib/pbuilder/pdebuild-checkparams
. /usr/lib/pbuilder/pbuilder-buildpackage-funcs
while ! test -d ./debian -o "$(pwd)" = "/" ; do
cd ..;
done
if test ! -d ./debian; then
log.e "Cannot find ./debian dir"
exit 1
fi;
PKG_SOURCENAME=$(dpkg-parsechangelog -S Source)
PKG_VERSION=$(dpkg-parsechangelog -S Version|sed 's/.*://')
ARCHITECTURE="${ARCHITECTURE:-$(dpkg-architecture -qDEB_HOST_ARCH)}"
CHANGES="${PKG_SOURCENAME}_${PKG_VERSION}_${ARCHITECTURE}.changes"
SOURCE_CHANGES="${PKG_SOURCENAME}_${PKG_VERSION}_source.changes"
DSC="${PKG_SOURCENAME}_${PKG_VERSION}.dsc"
if [ -z "${PBUILDER_BUILD_LOGFILE}" ]; then
PBUILDER_BUILD_LOGFILE="../${PKG_SOURCENAME}_${PKG_VERSION}_${ARCHITECTURE}.build"
exec > >(tee "${PBUILDER_BUILD_LOGFILE}") 2>&1
fi
BUILDRESULTUID=$(id -u)
BUILDRESULTGID=$(id -g)
export BUILDRESULTUID BUILDRESULTGID
if [ "${USE_PDEBUILD_INTERNAL}" = 'yes' ]; then
PBINTERNALOPTS=()
if [ "${SOURCE_ONLY_CHANGES:-no}" = "yes" ]; then
PBINTERNALOPTS+=(--source-only-changes)
fi
${PBUILDERROOTCMD} \
${PDEBUILD_PBUILDER} \
--execute \
${EXTRA_CONFIGFILE[@]/#/--configfile } \
--bindmounts "$(readlink -f ..)" \
"$@" \
-- \
/usr/lib/pbuilder/pdebuild-internal \
"${PWD}" \
"${PBINTERNALOPTS[@]}" \
--debbuildopts "" \
--debbuildopts "${DEBBUILDOPTS}" \
--uid "${BUILDRESULTUID}" \
--gid "${BUILDRESULTGID}" \
--pbuildersatisfydepends "$PBUILDERSATISFYDEPENDSCMD"
if [ -d "${BUILDRESULT}" ]; then
if [ "${SOURCE_ONLY_CHANGES:-no}" = yes ]; then
FILES=$( { get822files "changes" "../$CHANGES" && get822files "changes" "../$SOURCE_CHANGES" ; } | sort -u)
else
FILES=$(get822files "changes" "../$CHANGES")
fi
log.d "Files to copy: $FILES"
while read -r FILE; do
if [ -f "$FILE" ]; then
conditional_cp_a "$FILE" "$BUILDRESULT"
else
log.w "Expected file $FILE not found, skipping."
fi
done <<< "$FILES"
for files in "${ADDITIONAL_BUILDRESULTS[@]}"; do
log.i "Trying to save additional result ${files}"
conditional_cp_a "${files}" "${BUILDRESULT}" || true
done
else
log.e "BUILDRESULT=[$BUILDRESULT] is not a directory."
exit 1
fi
else
if ! dpkg-checkbuilddeps -B ; then
log.w "Unmet build-dependency in source"
fi
# get_changes_options/get_source_options single-quote each element, so an
# eval is needed to reverse that.
SOURCE_OPTIONS=$(get_source_options)
eval dpkg-source ${SOURCE_OPTIONS} --before-build .
if should_clean_source; then
"${BUILDSOURCEROOTCMD}" debian/rules clean
fi
eval dpkg-source ${SOURCE_OPTIONS} -b .
if ! [ "../${DSC}" -ef "${BUILDRESULT}/${DSC}" ]; then
log.i "Generating source changes file for original dsc"
eval dpkg-genchanges -S $(get_changes_options) > "../${SOURCE_CHANGES}"
else
log.i "Generated dsc will be overwritten by build result; not generating changes file"
fi
eval dpkg-source ${SOURCE_OPTIONS} --after-build .
${PBUILDERROOTCMD} \
${PDEBUILD_PBUILDER} \
--build \
${EXTRA_CONFIGFILE[@]/#/--configfile } \
--buildresult "${BUILDRESULT}" \
--debbuildopts "" \
--debbuildopts "${DEBBUILDOPTS}" \
"$@" \
../"${PKG_SOURCENAME}_${PKG_VERSION}".dsc
fi
# do signing with optional key specifier
if [ "${AUTO_DEBSIGN}" = "yes" ]; then
unset DEBSIGN_PARAM || true
declare -a DEBSIGN_PARAM
if [ -n "${DEBSIGN_KEYID}" ]; then
DEBSIGN_PARAM[${#DEBSIGN_PARAM[@]}]="-k${DEBSIGN_KEYID}"
fi
DEBSIGN_PARAM[${#DEBSIGN_PARAM[@]}]="--no-re-sign"
DEBSIGN_PARAM[${#DEBSIGN_PARAM[@]}]="--"
for file in "$BUILDRESULT/$CHANGES" "$BUILDRESULT/$SOURCE_CHANGES"; do
if [ -f "$file" ]; then
DEBSIGN_PARAM[${#DEBSIGN_PARAM[@]}]="$file"
found=yes
fi
done
if [ -z "${found:-}" ]; then
log.e "No .changes file(s) can be found; debsign not done."
exit 1
fi
debsign "${DEBSIGN_PARAM[@]}"
fi
|