Package: dh-kpatches Version: 0.99.36 Severity: normal Tags: patch dpkg --print-installation-architecture is deprecated. Plase use dpkg-architecure -qDEB_HOST_ARCH instead in apply an unpatch scripts.
In addition, the testing for existence of APPLIED_<arch>_<patch> files and their creation may be inconsistent because the `dpkg --print-installation-architecture` value (or `dpkg-architecure -qDEB_HOST_ARCH`) may be different from the #PATCHARCH# value, e.g. in the case of building for a sub-architecture, or when using synonym architecture names (e.g. ppc is synonym to powerpc). But dh-kpatches cannot handle such cases itself correctly. So, only one architecture name should be used, preferably the value returned by `dpkg-architecure -qDEB_HOST_ARCH`, which is in fact set by make-kpkg. That way, handling synonymous architecture names and sub-architectures, and therefore choosing correct apply and unpatch scripts, is dealt with only by make-kpkg. The attached patch corrects those two problems. -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (990, 'unstable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.15-1-686 Locale: LANG=fr_FR.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8) Versions of packages dh-kpatches depends on: ii debhelper 5.0.24 helper programs for debian/rules ii perl 5.8.8-2 Larry Wall's Practical Extraction dh-kpatches recommends no packages. -- no debconf information
--- dh-kpatches-0.99.36/dh-kpatches.nw 2005-06-09 07:40:11.000000000 +0900 +++ dh-kpatches-0.99.36-patched/dh-kpatches.nw 2006-03-06 13:05:43.186155360 +0900 @@ -341,7 +341,7 @@ <<Store necessary info for unpatching>>= mkdir -p debian -cat > 'debian/APPLIED_#PATCHARCH#_#PATCHID#' <<EOF +cat > 'debian/APPLIED_${ARCHITECTURE}_#PATCHID#' <<EOF PATCHFILE='$PATCHFILE' STRIPLEVEL='$STRIPLEVEL' DEPENDS='$UNPATCHDEPS' @@ -368,7 +368,7 @@ chmod +x 'debian/image.d/register-#PATCHID#' <<Apply.tmpl constants>>= TOPPATCHDIR=/usr/src/kernel-patches -ARCHITECTURE=`dpkg --print-installation-architecture` +ARCHITECTURE=`dpkg-architecture -qDEB_HOST_ARCH` DECOMPRESSOR="zcat -f" PATCH_OPTIONS="--ignore-whitespace --silent" # This is informational only, used by lskpatches @@ -395,14 +395,13 @@ <<Assert this is a kernel tree>> -ARCHITECTURE=`dpkg --print-installation-architecture` +ARCHITECTURE=`dpkg-architecture -qDEB_HOST_ARCH` PATCHID=#PATCHID# -PATCHARCH=#PATCHARCH# TOPPATCHDIR=/usr/src/kernel-patches DECOMPRESSOR="zcat -f" -STAMP=debian/APPLIED_${PATCHARCH}_$PATCHID +STAMP=debian/APPLIED_${ARCHITECTURE}_$PATCHID PATCH_OPTIONS="--ignore-whitespace --silent" @@ -466,7 +465,7 @@ fi @ <<Do not unpatch if there are still dependants>>= -if grep -l "^DEPENDS=.*[' ]#PATCHARCH#/unpatch/#PATCHID#[' ]" debian/APPLIED_* >/dev/null 2>/dev/null +if grep -l "^DEPENDS=.*[' ]${ARCHITECTURE}/unpatch/#PATCHID#[' ]" debian/APPLIED_* >/dev/null 2>/dev/null then # There are patches depending on this one, to be removed before. # the dep will be removed by the last of those other patches. @@ -478,7 +477,7 @@ echo >&2 "START unpatching #PATCHID# patch (#PATCHNAME#)" $DECOMPRESSOR $PATCHFILE | patch -R -p$STRIPLEVEL $PATCH_OPTIONS -rm -f debian/APPLIED_${PATCHARCH}_$PATCHID debian/image.d/register-#PATCHID# +rm -f debian/APPLIED_${ARCHITECTURE}_$PATCHID debian/image.d/register-#PATCHID# <<Remove those patches we depended on>> <<Remove empty files>> @@ -1026,7 +1025,6 @@ " -e 's/#KVERSIONS#/$kversions{$arch}/g'" . " -e 's|#PATCHFILES#|$patchfiles{$arch}|g'" . " -e 's|#DEBPATCHFILES#|$debpatchfiles{$arch}|g'" . - " -e 's/#PATCHARCH#/$arch/g'" . " -e 's/#STRIPLEVELS#/$striplevels{$arch}/g'" ); doit ("chmod", "0755", "$tmp$pdir/$script/$patchid");