Hello community,

here is the log from the commit of package quilt for openSUSE:Factory checked 
in at 2020-12-12 20:27:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/quilt (Old)
 and      /work/SRC/openSUSE:Factory/.quilt.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "quilt"

Sat Dec 12 20:27:23 2020 rev:72 rq:854526 version:0.66

Changes:
--------
--- /work/SRC/openSUSE:Factory/quilt/quilt.changes      2019-04-02 
09:16:43.420428485 +0200
+++ /work/SRC/openSUSE:Factory/.quilt.new.2328/quilt.changes    2020-12-12 
20:27:30.365548541 +0100
@@ -1,0 +2,14 @@
+Wed Dec  9 14:15:38 UTC 2020 - Jean Delvare <[email protected]>
+
+- backup-files-restore-symbolic-links.patch: Handle git-generated
+  patches which include symbolic link manipulation (savannah bug
+  #59479).
+- quilt.spec: Recommend "ed", as the annotate command requires it.
+
+-------------------------------------------------------------------
+Tue Nov 24 14:37:49 UTC 2020 - Jean Delvare <[email protected]>
+
+- inspect-handle-link-in-path.patch: inspect-wrapper: procfs
+  resolves links, so we must do the same (bsc#1179023)
+
+-------------------------------------------------------------------

New:
----
  backup-files-restore-symbolic-links.patch
  inspect-handle-link-in-path.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ quilt.spec ++++++
--- /var/tmp/diff_new_pack.KG0uHV/_old  2020-12-12 20:27:31.025549226 +0100
+++ /var/tmp/diff_new_pack.KG0uHV/_new  2020-12-12 20:27:31.029549230 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package quilt
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -35,18 +35,21 @@
 Requires:       mktemp
 Requires:       patch
 Requires:       perl
-Url:            http://savannah.nongnu.org/projects/quilt
+URL:            http://savannah.nongnu.org/projects/quilt
 Source:         %{name}-%{version}.tar.bz2
 Source1:        suse-start-quilt-mode.el
 Patch1:         expand.diff
 Patch2:         quilt-support-vimdiff.patch
 Patch3:         test-faildiff-workaround-order-bug.patch
 Patch4:         suse-workaround-pseudo-release.patch
+Patch5:         inspect-handle-link-in-path.patch
+Patch6:         backup-files-restore-symbolic-links.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 %if 0%{?suse_version}
 Recommends:     procmail
 Recommends:     bzip2
+Recommends:     ed
 Recommends:     /usr/bin/rpmbuild
 %endif
 %if 0%{?suse_version} > 1120
@@ -64,6 +67,8 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
 
 %build
 # --with-rpmbuild=/usr/lib/rpm/rpmb:

++++++ backup-files-restore-symbolic-links.patch ++++++
From: Jean Delvare <[email protected]>
Date: Wed, 9 Dec 2020 11:39:56 +0100
Subject: backup-files: Restore symbolic links
Patch-mainline: yes
Git-commit: 26f7bc93d2bbe49a96d23f879b24e82651392497
References: https://savannah.nongnu.org/bugs/index.php?59479

As "patch" originally did not handle symbolic links, backup-files
didn't have to care about them either. But now that git has
introduced an extended syntax which allows manipulating symbolic
links in patch files, "quilt push" may create or delete symbolic
links, which means that backup-files must support such operations
too.

Also extend the backup-files test case to cover these operations.

This fixes bug #59479:
https://savannah.nongnu.org/bugs/index.php?59479

Signed-off-by: Jean Delvare <[email protected]>
---
 quilt/scripts/backup-files.in |   40 ++++++++++++++++++++++++++++++----------
 test/backup-files.test        |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 10 deletions(-)

--- a/quilt/scripts/backup-files.in
+++ b/quilt/scripts/backup-files.in
@@ -89,7 +89,7 @@ backup()
        dir=$(dirname "$backup")
        [ -d "$dir" ] || mkdir -p "$dir"
 
-       if [ -e "$file" ]; then
+       if [ -L "$file" -o -e "$file" ]; then
                $ECHO "Copying $file"
                if [ -n "$OPT_NOLINKS" -a "$(stat @STAT_HARDLINK@ "$file")" = 1 
]; then
                        cp -p "$file" "$backup"
@@ -110,24 +110,28 @@ restore()
        local file=$1
        local backup=$OPT_PREFIX$file
 
-       if [ ! -e "$backup" ]; then
+       if [ ! -L "$backup" -a ! -e "$backup" ]; then
                return 1
        fi
-       if [ -s "$backup" ]; then
+       if [ -L "$backup" -o -s "$backup" ]; then
                $ECHO "Restoring $file"
-               if [ -e "$file" ]; then
+               if [ -L "$file" -o -e "$file" ]; then
                        rm "$file"
                else
                        mkdir -p "$(dirname "$file")"
                fi
-               ln "$backup" "$file" 2>&4 || cp -p "$backup" "$file"
+               if [ -L "$backup" ]; then
+                       ln -s "$(readlink "$backup")" "$file"
+               else
+                       ln "$backup" "$file" 2>&4 || cp -p "$backup" "$file"
+               fi
 
-               if [ -n "$OPT_TOUCH" ]; then
+               if [ -n "$OPT_TOUCH" -a ! -L "$file" ]; then
                        touch "$file"
                fi
        else
                $ECHO "Removing $file"
-               if [ -e "$file" ]; then
+               if [ -L "$file" -o -e "$file" ]; then
                        rm "$file"
                fi
        fi
@@ -145,11 +149,13 @@ restore_all()
        # Store the list of files to process
        EMPTY_FILES=$(gen_tempfile)
        NONEMPTY_FILES=$(gen_tempfile)
-       trap "rm -f \"$EMPTY_FILES\" \"$NONEMPTY_FILES\"" EXIT
+       LINK_FILES=$(gen_tempfile)
+       trap "rm -f \"$EMPTY_FILES\" \"$NONEMPTY_FILES\" \"$LINK_FILES\"" EXIT
 
        cd "$OPT_PREFIX"
        find . -type f -size 0 -print0 > "$EMPTY_FILES"
        find . -type f -size +0 -print0 > "$NONEMPTY_FILES"
+       find . -type l -print0 > "$LINK_FILES"
        cd "$OLDPWD"
 
        if [ -s "$EMPTY_FILES" ]; then
@@ -189,6 +195,20 @@ restore_all()
                fi
        fi
 
+       if [ -s "$LINK_FILES" ]; then
+               (cd "$OPT_PREFIX" && find . -type d -print0) \
+               | xargs -0 mkdir -p
+
+               while read -d $'\0' -r
+               do
+                       local file=${REPLY#./}
+                       local backup=$OPT_PREFIX$file
+
+                       $ECHO "Restoring $file"
+                       ln -sf "$(readlink "$backup")" "$file"
+               done < "$LINK_FILES"
+       fi
+
        if [ -z "$OPT_KEEP_BACKUP" ]; then
                rm -rf "$OPT_PREFIX"
        fi
@@ -212,7 +232,7 @@ copy()
        dir=$(dirname "$backup")
        [ -d "$dir" ] || mkdir -p "$dir"
 
-       if [ -e "$file" ]; then
+       if [ -L "$file" -o -e "$file" ]; then
                $ECHO "Copying $file"
                cp -p "$file" "$backup"
        else
@@ -234,7 +254,7 @@ copy_many()
        cat "$OPT_FILE" \
        | while read
        do
-               if [ -e "$REPLY" ]; then
+               if [ -L "$REPLY" -o -e "$REPLY" ]; then
                        printf '%s\0' "$REPLY" >&3
                else
                        # This is a rare case, not worth optimizing
--- a/test/backup-files.test
+++ b/test/backup-files.test
@@ -229,3 +229,36 @@ Unit test of the backup-files script.
        > 1
        $ [ ! -s new ] || echo "file snapshot/new should be empty"
        $ rm -rf snapshot
+
+       # Test backup and restoration of a symbolic link
+       $ mkdir dir
+       $ ln -s foo dir/link
+       $ readlink dir/link
+       > foo
+       $ %{QUILT_DIR}/scripts/backup-files -B backup/ -b dir/link
+       > Copying dir/link
+       $ readlink backup/dir/link
+       > foo
+       $ rm -f dir/link
+       $ echo crap > dir/link
+       $ %{QUILT_DIR}/scripts/backup-files -B backup/ -r -k dir/link
+       > Restoring dir/link
+       $ readlink dir/link
+       > foo
+
+       # Same but reading from a file
+       $ rm -f dir/link
+       $ echo crap > dir/link
+       $ %{QUILT_DIR}/scripts/backup-files -B backup/ -r -k -f -
+       < dir/link
+       > Restoring dir/link
+       $ readlink dir/link
+       > foo
+
+       # Same but without specifying the file
+       $ rm -f dir/link
+       $ echo crap > dir/link
+       $ %{QUILT_DIR}/scripts/backup-files -B backup/ -r -
+       > Restoring dir/link
+       $ readlink dir/link
+       > foo
++++++ inspect-handle-link-in-path.patch ++++++
From: Jean Delvare <[email protected]>
Subject: inspect-wrapper: procfs resolves links
Patch-mainline: yes
Git-commit: 6363f217b08b07cabbbe09d2d2ddc68596502e38
References: boo#1179023

When patch files are passed through stdin, we get the actual patch
file name from procfs. It turns out that procfs resolves symbolic
links, and that breaks our later attempt to strip the prefix from
the path to extract a relative path to the patch file.

This is solved by also resolving symbolic links in the prefix
before stripping it.

Signed-off-by: Jean Delvare <[email protected]>
---
 quilt/scripts/inspect-wrapper.in |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

--- a/quilt/scripts/inspect-wrapper.in
+++ b/quilt/scripts/inspect-wrapper.in
@@ -268,7 +268,15 @@ esac
 if [ -n "$QUILT_SETUP_FAST" -a -z "$inputfile" ]
 then
        inputfile=$(readlink /proc/self/fd/0)
-       [ "${inputfile:0:1}" = / -a -f "$inputfile" ] || inputfile=
+       if [ "${inputfile:0:1}" = / -a -f "$inputfile" ]
+       then
+               # procfs resolved the symlinks, so do the same, otherwise the
+               # path prefix won't match
+               RPM_SOURCE_DIR=$(cd -P "$RPM_SOURCE_DIR" && echo "$PWD")/
+       else
+               # Didn't work, so fall back to the slow method
+               inputfile=
+       fi
 fi
 
 if [ -n "$inputfile" ]
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to