[pbuilder] 01/02: Add new --source-only-changes option
James Clarke
jrtc27 at moszumanska.debian.org
Sat Jan 14 17:26:59 UTC 2017
This is an automated email from the git hooks/post-receive script.
jrtc27 pushed a commit to branch wip/source-only-changes
in repository pbuilder.
commit 2210311e8458a72961405c9a628a5f5531530bc8
Author: James Clarke <jrtc27 at jrtc27.com>
Date: Fri Jan 6 16:47:04 2017 +0000
Add new --source-only-changes option
---
pbuilder-buildpackage | 47 +++++++++++++++++++++++++++++++++++++++++++----
pbuilder-checkparams | 4 ++++
pbuilder.8 | 5 +++++
pbuilderrc | 4 ++++
pbuilderrc.5 | 6 ++++++
5 files changed, 62 insertions(+), 4 deletions(-)
diff --git a/pbuilder-buildpackage b/pbuilder-buildpackage
index 1b60cfb..9c9e526 100755
--- a/pbuilder-buildpackage
+++ b/pbuilder-buildpackage
@@ -128,6 +128,9 @@ log.i "Copying source file"
copydsc "$PACKAGENAME" "${BUILDPLACE}$BUILDDIR"
copyinputfile "${BUILDPLACE}$BUILDDIR"
+SUBDIR_NAME=$(dsc_get_basename "$PACKAGENAME" "no")
+SUBDIR_NAME=${SUBDIR_NAME//_/-}
+
log.i "Extracting source"
if echo "chown $BUILDUSERNAME:$BUILDUSERNAME $BUILDDIR $BUILDDIR/*" | $CHROOTEXEC /bin/bash; then
: # success
@@ -135,7 +138,7 @@ else
log.e "pbuilder: Failed chowning to $BUILDUSERNAME:$BUILDUSERNAME"
exit 1;
fi
-if echo "( cd $BUILDDIR; env PATH=\"$PATH\" dpkg-source -x $(basename "$PACKAGENAME") )" | $UNSHARE $CHROOTEXEC env $SUTOUSER ; then
+if echo "( cd $BUILDDIR; env PATH=\"$PATH\" dpkg-source -x $(basename "$PACKAGENAME") "$SUBDIR_NAME" )" | $UNSHARE $CHROOTEXEC env $SUTOUSER ; then
: # success
else
log.e "pbuilder: Failed extracting the source"
@@ -155,7 +158,14 @@ log.i "Building the package"
executehooks "A"
-DPKG_COMMANDLINE="env PATH=\"$PATH\" HOME=\"$BUILD_HOME\" dpkg-buildpackage -us -uc $DEBBUILDOPTS"
+CHANGES_BASENAME=$(dsc_get_basename "$PACKAGENAME" "yes")
+
+ENV_PREFIX="env PATH=\"$PATH\" HOME=\"$BUILD_HOME\""
+DPKG_COMMANDLINE="$ENV_PREFIX dpkg-buildpackage -us -uc $DEBBUILDOPTS"
+
+if [ "${SOURCE_ONLY_CHANGES}" = "yes" ]; then
+ DPKG_COMMANDLINE="$DPKG_COMMANDLINE && $ENV_PREFIX dpkg-genchanges -S > ../${CHANGES_BASENAME}_source.changes"
+fi
# https://launchpad.net/bugs/816556
unset DISPLAY
@@ -171,7 +181,7 @@ fi
if [ -n "$TWICE" ]; then
DPKG_COMMANDLINE="$DPKG_COMMANDLINE && $DPKG_COMMANDLINE"
fi
- DPKG_COMMANDLINE="cd ${BUILDDIR}/*/ && $DPKG_COMMANDLINE"
+ DPKG_COMMANDLINE="cd ${BUILDDIR}/$SUBDIR_NAME/ && $DPKG_COMMANDLINE"
log.i "Running $DPKG_COMMANDLINE"
echo "$DPKG_COMMANDLINE" | $UNSHARE $CHROOTEXEC env $SUTOUSER
) &
@@ -211,12 +221,41 @@ if [ "$USENETWORK" = "no" ]; then
copy_local_configuration resolv.conf
fi
+CHANGES_ARCHITECTURE=${HOST_ARCH:-$(dpkg-architecture -qDEB_HOST_ARCH)}
+
+# dpkg pre-1.18.8 generated _$arch.changes even for indep-only builds,
+# so search for both.
+INDEP_CHANGES_FILE="${BUILDPLACE}$BUILDDIR/${CHANGES_BASENAME}_all.changes"
+if [ "${BINARY_ARCH}" = "all" -a -f "${INDEP_CHANGES_FILE}" ]; then
+ ARCH_CHANGES_FILE="$INDEP_CHANGES_FILE"
+else
+ ARCH_CHANGES_FILE="${BUILDPLACE}$BUILDDIR/${CHANGES_BASENAME}_${CHANGES_ARCHITECTURE}.changes"
+
+ if [ ! -f "${ARCH_CHANGES_FILE}" ]; then
+ log.e "Missing changes file: ${ARCH_CHANGES_FILE}"
+ exit 1
+ fi
+fi
+
+SOURCE_CHANGES_FILE="${BUILDPLACE}$BUILDDIR/${CHANGES_BASENAME}_source.changes"
+
+if [ "${SOURCE_ONLY_CHANGES}" = "yes" -a ! -f "${SOURCE_CHANGES_FILE}" ]; then
+ log.e "Missing source-only changes file: ${SOURCE_CHANGES_FILE}"
+ exit 1
+fi
+
executehooks "B"
if [ -d "${BUILDRESULT}" ]; then
chown "${BUILDRESULTUID}:${BUILDRESULTGID}" "${BUILDPLACE}$BUILDDIR/"*
chgrp "${BUILDRESULTGID}" "${BUILDPLACE}$BUILDDIR/"*
- for FILE in $(get822files "changes" "${BUILDPLACE}$BUILDDIR"/*.changes) ; do
+ if [ "${SOURCE_ONLY_CHANGES}" = "yes" ]; then
+ cp -p "${SOURCE_CHANGES_FILE}" "${BUILDRESULT}"
+ FILES=$( ( get822files "changes" "$ARCH_CHANGES_FILE" && get822files "changes" "$SOURCE_CHANGES_FILE" ) | sort -u)
+ else
+ FILES=$(get822files "changes" "$ARCH_CHANGES_FILE")
+ fi
+ for FILE in $FILES; do
if [ -f "${FILE}" ]; then
cp -p "${FILE}" "${BUILDRESULT}" || true
fi
diff --git a/pbuilder-checkparams b/pbuilder-checkparams
index 507d52e..fd4c4a4 100755
--- a/pbuilder-checkparams
+++ b/pbuilder-checkparams
@@ -233,6 +233,10 @@ while [ -n "$1" ]; do
DEBBUILDOPTS="${DEBBUILDOPTS} -A"
shift
;;
+ --source-only-changes)
+ SOURCE_ONLY_CHANGES="yes"
+ shift;
+ ;;
--bin-nmu)
BIN_NMU="yes"
BINARY_ARCH="binary"
diff --git a/pbuilder.8 b/pbuilder.8
index ee6fb6a..6a5e532 100644
--- a/pbuilder.8
+++ b/pbuilder.8
@@ -497,6 +497,11 @@ effect.
Use this option rather than using \fB\-\-debbuildopts \-A\fR.
.TP
+.BI "\-\-source\-only\-changes
+Specify to generate an additional .changes file for a source-only upload,
+whilst still producing a full .changes file for any binary packages built.
+
+.TP
.BI "\-\-bin\-nmu [" "changelog message" "]"
Specify to build a binary-NMU instead of a standard package.
This option takes the changelog message to pass to the binary-NMU package as parameter.
diff --git a/pbuilderrc b/pbuilderrc
index 9302e68..ddbd095 100644
--- a/pbuilderrc
+++ b/pbuilderrc
@@ -64,6 +64,10 @@ PBUILDERROOTCMD="sudo -E"
# use cowbuilder for pdebuild
#PDEBUILD_PBUILDER="cowbuilder"
+# Whether to generate an additional .changes file for a source-only upload,
+# whilst still producing a full .changes file for any binary packages built.
+SOURCE_ONLY_CHANGES=no
+
# additional build results to copy out of the package build area
#ADDITIONAL_BUILDRESULTS=(xunit.xml .coverage)
diff --git a/pbuilderrc.5 b/pbuilderrc.5
index d095154..cee3c68 100644
--- a/pbuilderrc.5
+++ b/pbuilderrc.5
@@ -405,6 +405,12 @@ The default is now "aptitude".
Array of flags to give to pbuilder\-satisfydepends.
.TP
+.BI "SOURCE_ONLY_CHANGES=" "no"
+Specify whether to generate an additional .changes file for a source-only
+upload, whilst still producing a full .changes file for any binary packages
+built.
+
+.TP
.BI "ALLOWUNTRUSTED=" "no"
Allow untrusted (no key installed) and unsigned repositories.
.BI Warning:
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pbuilder/pbuilder.git
More information about the Pbuilder-maint
mailing list