[PATCH] rpm.eclass: don't die if grep errors out when detecting payload
Eli Schwartz <[email protected]>
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
While in theory, exquisitely timed memory exhaustion may result in grep, and only grep, failing... in practice: - we must handle "no match" - "no match" simply determines which of two extraction tools to use, and if we choose wrongly, the tool will fail and the ebuild will still die I guess this mean the *.src.rpm workaround was unnecessary too. Closes: https://bugs.gentoo.org/973157 Signed-off-by: Eli Schwartz <[email protected]> --- eclass/rpm.eclass | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eclass/rpm.eclass b/eclass/rpm.eclass index 920f11262bdd..1296e1f3641f 100644 --- a/eclass/rpm.eclass +++ b/eclass/rpm.eclass @@ -98,11 +98,11 @@ rpm_unpack() { fi local payload= usedep="" - if [[ ${a} = *.src.rpm ]]; then - payload=none - else - payload=$($(tc-getSTRINGS) "${a}" | grep -o 'PayloadIs[a-zA-Z]*'; pipestatus || die "failed to grep rpm payload") - fi + # grep may fail because no payload or because "unknown error", and distinguishing between + # the two is problematic. We do a token check that strings works, but rely on rpm failing + # with its own well-formed die if we erroneously decide no payload USE flag is needed due + # to external commands failing. + payload=$($(tc-getSTRINGS) "${a}" | grep -o 'PayloadIs[a-zA-Z]*'; if [[ ${PIPESTATUS[0]} != 0 ]]; then die "strings failed"; fi) case ${payload} in "") payload=none;; # gzip/uncompressed -- 2.52.0