summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2022-09-28 22:44:47 +0200
committerMichał Górny <mgorny@gentoo.org>2022-09-28 22:55:24 +0200
commit725aa5a066e69f5611e40c3cc84660eee07f940c (patch)
treecfbd690e3b5d1c2df3286e986ea315077febf550
parentx11-misc/obconf: fix build with clang16 (diff)
downloadgentoo-725aa5a0.tar.gz
gentoo-725aa5a0.tar.bz2
gentoo-725aa5a0.zip
unpacker.eclass: Workaround zstd refusing to process symlinks
Closes: https://bugs.gentoo.org/873352 Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rwxr-xr-xeclass/tests/unpacker.sh7
-rw-r--r--eclass/unpacker.eclass4
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})"