diff -Nru pbuilder-0.225/debian/changelog pbuilder-0.225.1/debian/changelog --- pbuilder-0.225/debian/changelog 2016-06-12 12:50:18.000000000 +0000 +++ pbuilder-0.225.1/debian/changelog 2016-06-24 14:36:47.000000000 +0000 @@ -1,3 +1,25 @@ +pbuilder (0.225.1) unstable; urgency=medium + + [ James Clarke ] + * satisfydepends-experimental: Add support for build profiles. + + [ Michael Gilbert ] + * modules: let tar automatically determine decompression program. + This makes possible to switch compression of the tarball by just chaning the + COMPRESSIONPROG option and run `pbuilder update`, and makes possible to use + uncompressed tarballs by using cat(1) as a "compression program". + Closes: #731099 + + [ Mattia Rizzolo ] + * pbuilder.8: document new --compressprog details. + * pbuilderrc.5: document new --compressprog details. + * modules: + + don't remove eatmydata from the chroot if it's not available outside. + + remove_packages: don't remove packages explicitly listed in EXTRAPACKAGES. + + Closes: #827206 + + -- Mattia Rizzolo Fri, 24 Jun 2016 14:36:45 +0000 + pbuilder (0.225) unstable; urgency=medium [ Mattia Rizzolo ] diff -Nru pbuilder-0.225/pbuilder.8 pbuilder-0.225.1/pbuilder.8 --- pbuilder-0.225/pbuilder.8 2016-05-27 21:21:07.000000000 +0000 +++ pbuilder-0.225.1/pbuilder.8 2016-06-22 12:14:05.000000000 +0000 @@ -630,13 +630,15 @@ .TP .BI "\-\-compressprog" -Program to use for compression and decompression of the base.tgz. -The default is to use gzip, and any program that can be used for -the \-\-use\-compress-program option of tar can be given. +Program to use for compression of the base.tgz. +The default is to use gzip, and any program that can be used to compress data +using a pipe can be used. If set to "pigz", compression and decompression is gzip compatible but will use all available CPUs. - +.br +If set to "cat", there will be no compression at all (so compression/decompression +will be a lot faster but takes much more space on the disk). .TP .BI "\-\-twice" Build the package twice in a row. Useful to ensure the package cleans up diff -Nru pbuilder-0.225/pbuilder-checkparams pbuilder-0.225.1/pbuilder-checkparams --- pbuilder-0.225/pbuilder-checkparams 2016-05-27 21:18:07.000000000 +0000 +++ pbuilder-0.225.1/pbuilder-checkparams 2016-06-22 12:14:57.000000000 +0000 @@ -349,11 +349,11 @@ if /sbin/ldconfig -p | grep libeatmydata >/dev/null 2>&1 ; then if ! which eatmydata > /dev/null 2>&1 ; then log.w "the eatmydata binary is not installed on the host, not using it." - EATMYDATA=no + EATMYDATA=not-available fi else log.w "libeatmydata is not installed on the host, not using it." - EATMYDATA=no + EATMYDATA=not-available fi fi fi diff -Nru pbuilder-0.225/pbuilder-modules pbuilder-0.225.1/pbuilder-modules --- pbuilder-0.225/pbuilder-modules 2016-06-09 19:45:34.000000000 +0000 +++ pbuilder-0.225.1/pbuilder-modules 2016-06-22 12:15:19.000000000 +0000 @@ -137,6 +137,18 @@ esac } +# call like `_contains $list $value`, returns 0 if $value is in $list, 1 otherwise +_contains() { + local n=$# + local value=${!n} + for ((i=1; i < $#; i++)) { + if [ "${!i}" == "${value}" ]; then + return 0 + fi + } + return 1 +} + # test whether a directory is empty # fails if "$*" exists but isn't a directory # fails and outputs garbage if "$*" doesn't actually exist @@ -503,7 +515,11 @@ local toremove=() for pkg in "$@"; do if (dpkg -s "$pkg" 2>&1)>/dev/null ; then - toremove+=("$pkg") + if (_contains ${EXTRAPACKAGES[@]} "$pkg" || _contains ${EXTRAPACKAGES[@]} "${pkg}-"); then + log.d "not removing $pkg as it's also explicitely listed in EXTRAPACKAGES" + else + toremove+=("$pkg") + fi else log.d "not removing $pkg as not installed" fi @@ -521,7 +537,7 @@ fi if [ "$#" -eq 0 ]; then local tocopy=(hosts hostname mailname resolv.conf) - else tocopy=("$@") ; fi + else local tocopy=("$@") ; fi if [ "$USENETWORK" = "yes" ]; then local tocopy[${#tocopy[@]}]=resolv.conf fi @@ -557,7 +573,7 @@ if [ "$EATMYDATA" = "yes" ]; then TAR="eatmydata tar" fi - if ! (cd "$BUILDPLACE" && $TAR -x --use-compress-program "$COMPRESSPROG" -p -f "$BASETGZ"); then + if ! (cd "$BUILDPLACE" && $TAR -x -p -f "$BASETGZ"); then log.e "failed to extract $BASETGZ to $BUILDPLACE" exit 1 fi @@ -773,11 +789,11 @@ fi if [ "$EATMYDATA" = "yes" ]; then - # the eatmydata binary is going nowhere anytime soon, while the libeatmydata1 + # the eatmydata binary is going nowhere anytime soon, whilst the libeatmydata1 # binary is shaped like a shared library, so the name might change, etc. # Install this package instead, it's cheap enough. EXTRAPACKAGES="$EXTRAPACKAGES eatmydata" - else + elif [ "$EATMYDATA" != "not-available" ]; then REMOVEPACKAGES="$REMOVEPACKAGES eatmydata" fi diff -Nru pbuilder-0.225/pbuilderrc.5 pbuilder-0.225.1/pbuilderrc.5 --- pbuilder-0.225/pbuilderrc.5 2016-06-10 17:57:10.000000000 +0000 +++ pbuilder-0.225.1/pbuilderrc.5 2016-06-22 12:14:05.000000000 +0000 @@ -180,12 +180,15 @@ option. .TP .BI "COMPRESSPROG=" "gzip" -Program to use for compression and decompression of the base.tgz. -The default is to use gzip, and any program that can be used for -the \-\-use\-compress\-program option of tar can be given. +Program to use for compression of the base.tgz. +The default is to use gzip, and any program that can be used to compress data +using a pipe can be used. If set to "pigz", compression and decompression is gzip compatible but will use all available CPUs. +.br +If set to "cat", there will be no compression at all (so compression/decompression +will be a lot faster but takes much more space on the disk). .TP .BI "export http_proxy=" "http://your-proxy:8080/" Defines the proxy for http connection. diff -Nru pbuilder-0.225/pbuilder-satisfydepends-experimental pbuilder-0.225.1/pbuilder-satisfydepends-experimental --- pbuilder-0.225/pbuilder-satisfydepends-experimental 2016-05-19 12:45:30.000000000 +0000 +++ pbuilder-0.225.1/pbuilder-satisfydepends-experimental 2016-06-16 09:58:23.000000000 +0000 @@ -55,6 +55,13 @@ continue fi fi + if echo "$INSTALLPKG" | grep -q '<'; then + if checkbuilddep_restrictiondeps "$INSTALLPKG" "$DEB_BUILD_PROFILES"; then + SATISFIED="yes" + echo " -> This package is not for the current build profiles" + continue + fi + fi CURRENT_APT_COMMAND="$(versioneddep_to_aptcmd "$INSTALLPKG")" @@ -150,6 +157,13 @@ continue fi fi + if echo "$INSTALLPKG" | grep -q '<'; then + # this package has build-profiles-conflicts. + if checkbuilddep_restrictiondeps "$INSTALLPKG" "$DEB_BUILD_PROFILES"; then + echo "I: Ignoring other-buildprofiles" + continue + fi + fi if echo "$INSTALLPKG" | grep -q '('; then # this package has version-conflicts if ! checkbuilddep_versiondeps $CURRENTREALPKGNAME \