Package: quilt
Severity: normal
Hi,
I updated the patch as per the feedback. The reason why
relativize_path is needed is that dpkg-source uses absolute paths when
unpacking a 3.0 (quilt) package and tools like dch rename the top
directory when changing the (upstream) version. Without relative paths
quilt would then not find the patches dir and series file or, when
the directory is copied, even use the original ones. I think that would
be highly confusing to the user.
If you fix dpkg-source to use relative paths then I don't really care
if relativize_path is removed. But there might be other tools out
there that use abolute paths where a relative one is called for and
what harm does it do? I think if the path is not specifically outside
the top directory then a relative path is always preferable.
MfG
Goswin
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable-i386
APT policy: (1001, 'unstable-i386'), (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.29.4-frosties-2 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=de_DE (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash
Versions of packages quilt depends on:
ii bzip2 1.0.5-3 high-quality block-sorting file co
ii diffstat 1.47-1 produces graph of changes introduc
ii gawk 1:3.1.6.dfsg-3 GNU awk, a pattern scanning and pr
ii gettext 0.17-6 GNU Internationalization utilities
ii libc6 2.10.1-2 GNU C Library: Shared libraries
ii patch 2.5.9-5 Apply a diff file to an original
quilt recommends no packages.
Versions of packages quilt suggests:
ii ccache 2.4-17 Compiler results cacher, for fast
-- no debconf information
Description: remember locations for patches and series file
Create .pc/.quilt_patches and .pc/.quilt_series files when creating
the .pc directory containing the path to the patches directory and
series file used that first time. The paths are made relative when
they point inside the directory .pc resides in, to allow renaming
of the top directory, and are left absolute otherwise. This allows to
be set QUILT_PATCHES only on the first invocation and have it correct
automatically on subsequent calls.
Bug-Debian: http://bugs.debian.org/557623
Author: Goswin von Brederlow <[email protected]>
Last-Update: 2009-11-28
diff --git a/quilt/scripts/patchfns.in b/quilt/scripts/patchfns.in
index 9ed4fd1..7468349 100644
--- a/quilt/scripts/patchfns.in
+++ b/quilt/scripts/patchfns.in
@@ -20,9 +20,14 @@ export LANG=POSIX
export QUILT_PATCHES QUILT_PC SUBDIR SERIES DB
DB_VERSION=2
-: ${QUILT_PATCHES:=patches}
: ${QUILT_PC:=.pc}
+if [ -r $QUILT_PC/.quilt_patches ]; then
+ : ${QUILT_PATCHES:="$(< $QUILT_PC/.quilt_patches)"}
+else
+ : ${QUILT_PATCHES:=patches}
+fi
+
# Support compatibility layer
if [ -d $QUILT_DIR/compat ]
then
@@ -943,11 +948,29 @@ next_filename()
echo "${base%-$num}-$((num+1))${patch#$base}"
}
+relativize_path() {
+ local dir=$1 base=$2
+ if ! [ "${dir:0:1}" = "/" ]
+ then
+ echo "$dir"
+ return
+ fi
+ LEN="${#base}"
+ if [ "${dir:0:$LEN}" = "$base" ]
+ then
+ echo "${dir:$LEN}"
+ else
+ echo "$dir"
+ fi
+}
+
create_db() {
if ! [ -e $QUILT_PC ]
then
mkdir -p $QUILT_PC
echo $DB_VERSION > $QUILT_PC/.version
+ relativize_path "$QUILT_PATCHES" "$(pwd)/" >
"$QUILT_PC/.quilt_patches"
+ relativize_path "$QUILT_SERIES" "$(pwd)/" >
"$QUILT_PC/.quilt_series"
fi
}
@@ -1073,7 +1096,11 @@ then
unset basedir down
fi
-: ${QUILT_SERIES:=series}
+if [ -r $QUILT_PC/quilt_series ]; then
+ : ${QUILT_SERIES:="$(< $QUILT_PC/.quilt_series)"}
+else
+ : ${QUILT_SERIES:=series}
+fi
if [ "${QUILT_SERIES:0:1}" = / ]
then