[pbuilder] 02/03: Add new --source-only-changes option

James Clarke jrtc27 at moszumanska.debian.org
Fri Jan 13 18:09:54 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 cd44484ff968e7e7ed2260e0cd0109243012052c
Author: James Clarke <jrtc27 at jrtc27.com>
Date:   Fri Jan 6 16:47:04 2017 +0000

    Add new --source-only-changes option
---
 pbuilder-buildpackage       | 45 ++++++++++++++++++++++++++++++++++++++++++---
 pbuilder-buildpackage-funcs |  3 +++
 pbuilder-checkparams        |  4 ++++
 pbuilderrc                  |  4 ++++
 4 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/pbuilder-buildpackage b/pbuilder-buildpackage
index 1b60cfb..081b3d1 100755
--- a/pbuilder-buildpackage
+++ b/pbuilder-buildpackage
@@ -155,7 +155,17 @@ log.i "Building the package"
 
 executehooks "A"
 
-DPKG_COMMANDLINE="env PATH=\"$PATH\" HOME=\"$BUILD_HOME\" dpkg-buildpackage -us -uc $DEBBUILDOPTS"
+SUBDIR_NAME=$(dsc_get_basename "$PACKAGENAME" "no")
+SUBDIR_NAME=${SUBDIR_NAME//_/-}
+
+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 --build=source > ../${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-buildpackage-funcs b/pbuilder-buildpackage-funcs
index 739f02d..a4f1d1d 100644
--- a/pbuilder-buildpackage-funcs
+++ b/pbuilder-buildpackage-funcs
@@ -84,6 +84,9 @@ function dsc_get_basename() {
     esac
 
     local vs
+    if [ "$with_revision" = "yes" -a -z "${revision:-}" ]; then
+        with_revision=no
+    fi
     # Epoch always omitted
     case "$with_revision" in
         yes) vs="${version}-${revision}" ;;
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/pbuilderrc b/pbuilderrc
index 9302e68..fcf564a 100644
--- a/pbuilderrc
+++ b/pbuilderrc
@@ -64,6 +64,10 @@ PBUILDERROOTCMD="sudo -E"
 # use cowbuilder for pdebuild
 #PDEBUILD_PBUILDER="cowbuilder"
 
+# Whether to generate an additional source-only .changes file as well as the
+# one generated during the build.
+SOURCE_ONLY_CHANGES=no
+
 # additional build results to copy out of the package build area
 #ADDITIONAL_BUILDRESULTS=(xunit.xml .coverage)
 

-- 
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