fetchpatch: fail on empty patch
Since this is probably never the desired case and has led to actual
issues, see the comments at:
af1313e915
This might also happen when pulling a patch from GitHub or a similar web
interface without explicitly selecting the "raw" format.
This commit is contained in:
parent
1ddab0efb1
commit
8f9b985e60
@ -10,6 +10,10 @@
|
||||
fetchurl ({
|
||||
postFetch = ''
|
||||
tmpfile="$TMPDIR/${args.sha256}"
|
||||
if [ ! -s "$out" ]; then
|
||||
echo "error: Fetched patch file '$out' is empty!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
"${patchutils}/bin/lsdiff" "$out" \
|
||||
| sort -u | sed -e 's/[*?]/\\&/g' \
|
||||
| xargs -I{} \
|
||||
@ -21,12 +25,26 @@ fetchurl ({
|
||||
--addnewprefix=b/${extraPrefix} \
|
||||
''} \
|
||||
--clean "$out" > "$tmpfile"
|
||||
if [ ! -s "$tmpfile" ]; then
|
||||
echo "error: Normalized patch '$tmpfile' is empty (while the fetched file was not)!" 1>&2
|
||||
echo "Did you maybe fetch a HTML representation of a patch instead of a raw patch?" 1>&2
|
||||
echo "Fetched file was:" 1>&2
|
||||
cat "$out" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
${patchutils}/bin/filterdiff \
|
||||
-p1 \
|
||||
${builtins.toString (builtins.map (x: "-x ${lib.escapeShellArg x}") excludes)} \
|
||||
${builtins.toString (builtins.map (x: "-i ${lib.escapeShellArg x}") includes)} \
|
||||
"$tmpfile" > "$out"
|
||||
${args.postFetch or ""}
|
||||
if [ ! -s "$out" ]; then
|
||||
echo "error: Filtered patch '$out$' is empty (while the original patch file was not)!" 1>&2
|
||||
echo "Check your includes and excludes." 1>&2
|
||||
echo "Normalizd patch file was:" 1>&2
|
||||
cat "$tmpfile" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
meta.broken = excludes != [] && includes != [];
|
||||
} // builtins.removeAttrs args ["stripLen" "extraPrefix" "excludes" "includes" "postFetch"])
|
||||
|
Loading…
Reference in New Issue
Block a user