From 3c53d6a630651369054673cac8c151410bad527d42dc16dea3a7ef4330a59442 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 14 Oct 2014 11:10:05 +0000 Subject: [PATCH] - quilt-check-modified-series.patch: Check for series file consistency. - setup-fix-tar-with-long-options.patch, inspect-skip-version-check.patch: Update upstream status. OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/quilt?expand=0&rev=90 --- inspect-skip-version-check.patch | 2 +- quilt-check-modified-series.patch | 139 ++++++++++++++++++++++++++ quilt.changes | 8 ++ quilt.spec | 2 + setup-fix-tar-with-long-options.patch | 2 +- 5 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 quilt-check-modified-series.patch diff --git a/inspect-skip-version-check.patch b/inspect-skip-version-check.patch index a6106bc..02d083e 100644 --- a/inspect-skip-version-check.patch +++ b/inspect-skip-version-check.patch @@ -1,6 +1,6 @@ From: Jean Delvare Subject: inspect: Skip version check -Upstream: Submitted (2014-10-09) +Upstream: Committed (6a5fcdc24dc47419da4cd688fe7fbfa189c91976) Commit a626fcf8b95f2ff51701a00d65043b9f65207514 (setup: Skip version check) is insufficient for spec file-based setup commands. inspect diff --git a/quilt-check-modified-series.patch b/quilt-check-modified-series.patch new file mode 100644 index 0000000..23db70b --- /dev/null +++ b/quilt-check-modified-series.patch @@ -0,0 +1,139 @@ +From: Jean Delvare +Subject: Check for series file consistency +Upstream: Submitted (2014-10-14) + +Quilt allows manual changes to the series file to some degree. For +example, adding comments or reordering patches in the unapplied +section of the series file is OK. However, changing the order of +applied patches breaks a number of assumptions and can cause quilt to +produce unexpected or confusing results. + +For example, starting from this: + ++ patches/01.patch += patches/02.patch + patches/03.patch + patches/04.patch + +and moving the last patch at the beginning of the series file, +"quilt series -v" will print: + ++ patches/04.patch ++ patches/01.patch += patches/02.patch + patches/03.patch + +That is, it will claim that 04.patch is applied, while it it not. +Likewise, 04.patch would be listed by neither "quilt applied" nor +"quilt unapplied". + +While addressing all such cases would certainly be possible, that +would require a significant amount of work, and would come with +performance penalties. It would also be difficult to be certain that +all issues have been found and addressed. So it seems more reasonable +to simply spot such manual changes to the series file and ask the user +to pop all patches to start from a clean state as needed. +--- + quilt/scripts/patchfns.in | 35 ++++++++++++++++++++++++++++++++--- + test/altered-series.test | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 76 insertions(+), 3 deletions(-) + +--- a/quilt/scripts/patchfns.in ++++ b/quilt/scripts/patchfns.in +@@ -948,6 +948,24 @@ version_check() + return 1 + } + ++consistency_check() ++{ ++ local top applied patches ++ ++ top=$(top_patch) ++ applied=$(applied_before "$top") ++ patches=$(patches_before "$top") ++ ++ if [ "$applied" != "$patches" ] ++ then ++ return 1 ++ else ++ # Skip check until series file is modified again ++ touch "$DB" ++ return 0 ++ fi ++} ++ + print_patch() + { + echo "${QUILT_PATCHES_PREFIX:+$SUBDIR_DOWN$QUILT_PATCHES/}$1" +@@ -1094,10 +1112,21 @@ fi + + DB="$QUILT_PC/applied-patches" + +-if [ -z "$skip_version_check" ] && ! version_check ++if [ -z "$skip_version_check" ] + then +- printf $"The working tree was created by an older version of quilt. Please run 'quilt upgrade'.\n" >&2 +- exit 1 ++ if ! version_check ++ then ++ printf $"The working tree was created by an older version of quilt. Please run 'quilt upgrade'.\n" >&2 ++ exit 1 ++ fi ++ ++ # Check if series file was modified manually, and if this is the case, ++ # make sure it is still consistent with the applied patches ++ if [ -s "$DB" -a ! "$DB" -nt "$SERIES" ] && [ "$QUILT_COMMAND" != pop ] && ! consistency_check ++ then ++ printf $"The series file no longer matches the applied patches. Please run 'quilt pop -a'.\n" >&2 ++ exit 1 ++ fi + fi + ### Local Variables: + ### mode: shell-script +--- /dev/null ++++ b/test/altered-series.test +@@ -0,0 +1,44 @@ ++# Check that manual changes to the series file are detected ++ ++$ mkdir patches ++$ cat > patches/series ++< 01.patch ++< 02.patch ++< 03.patch ++ ++$ quilt push -q ++> Applying patch patches/01.patch ++> Patch patches/01.patch does not exist; applied empty patch ++> Now at patch patches/01.patch ++ ++$ quilt series -v ++> = patches/01.patch ++> patches/02.patch ++> patches/03.patch ++ ++# Touch the series file but preserve the order -> OK ++$ touch patches/series ++ ++$ quilt series -v ++> = patches/01.patch ++> patches/02.patch ++> patches/03.patch ++ ++# Change the order of the patch series -> complain ++$ cat > patches/series ++< 03.patch ++< 01.patch ++< 02.patch ++ ++$ quilt series -v ++> The series file no longer matches the applied patches. Please run 'quilt pop -a'. ++ ++$ quilt pop -a ++> Patch patches/01.patch appears to be empty, removing ++> ++> No patches applied ++ ++$ quilt series -v ++> patches/03.patch ++> patches/01.patch ++> patches/02.patch diff --git a/quilt.changes b/quilt.changes index 58dc7f4..63b62af 100644 --- a/quilt.changes +++ b/quilt.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue Oct 14 13:07:53 CEST 2014 - jdelvare@suse.de + +- quilt-check-modified-series.patch: Check for series file + consistency. +- setup-fix-tar-with-long-options.patch, + inspect-skip-version-check.patch: Update upstream status. + ------------------------------------------------------------------- Thu Oct 9 15:00:35 CEST 2014 - jdelvare@suse.de diff --git a/quilt.spec b/quilt.spec index ef617a0..bc42cde 100644 --- a/quilt.spec +++ b/quilt.spec @@ -50,6 +50,7 @@ Patch8: quilt-format-options-pass-through.patch Patch9: pop-add-auto-refresh.patch Patch10: push-add-auto-refresh.patch Patch11: inspect-skip-version-check.patch +Patch12: quilt-check-modified-series.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch Recommends: procmail @@ -80,6 +81,7 @@ http://www.zip.com.au/~akpm/linux/patches/. %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 %build # --with-rpmbuild=/usr/lib/rpm/rpmb: diff --git a/setup-fix-tar-with-long-options.patch b/setup-fix-tar-with-long-options.patch index 41dda57..39b91d3 100644 --- a/setup-fix-tar-with-long-options.patch +++ b/setup-fix-tar-with-long-options.patch @@ -1,6 +1,6 @@ From: Jean Delvare Subject: inspect: Handle long options passed to tar -Upstream: Submitted +Upstream: Committed (1e9f433f693b4ee09ebf3267222b11694448e81f) The command line interface to tar is complex and sometimes confusing, but we should still do our best to figure out where the file name is