commit:     725aa5a066e69f5611e40c3cc84660eee07f940c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 28 20:44:47 2022 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Sep 28 20:55:24 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=725aa5a0

unpacker.eclass: Workaround zstd refusing to process symlinks

Closes: https://bugs.gentoo.org/873352
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/tests/unpacker.sh | 7 ++++++-
 eclass/unpacker.eclass   | 4 ++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/eclass/tests/unpacker.sh b/eclass/tests/unpacker.sh
index b15953966f65..105f28fd4858 100755
--- a/eclass/tests/unpacker.sh
+++ b/eclass/tests/unpacker.sh
@@ -42,9 +42,14 @@ test_unpack() {
        eval "${packcmd}"
        assert "packing ${archive} failed"
        cd testdir || die
+
+       # create a symlink to flush out compressor issues and resemble distdir 
more
+       # https://bugs.gentoo.org/873352
+       ln -s "../${archive}" "${archive}" || die
+
        local out
        out=$(
-               _unpacker "../${archive}" 2>&1
+               _unpacker "${archive}" 2>&1
        )
        ret=$?
        if [[ ${ret} -eq 0 ]]; then

diff --git a/eclass/unpacker.eclass b/eclass/unpacker.eclass
index 3d23151b636e..6c9bcbdd7a7b 100644
--- a/eclass/unpacker.eclass
+++ b/eclass/unpacker.eclass
@@ -523,11 +523,11 @@ _unpacker() {
        if [[ -z ${arch} ]] ; then
                # Need to decompress the file into $PWD #408801
                local _a=${a%.*}
-               ${comp} "${a}" > "${_a##*/}"
+               ${comp} < "${a}" > "${_a##*/}"
        elif [[ -z ${comp} ]] ; then
                ${arch} "${a}"
        else
-               ${comp} "${a}" | ${arch} -
+               ${comp} < "${a}" | ${arch} -
        fi
 
        assert "unpacking ${a} failed (comp=${comp} arch=${arch})"

Reply via email to