Merge pull request #151386 from jtojnar/davhau-fetchpatch

fetchpatch: allow empty hash
This commit is contained in:
Jan Tojnar 2022-02-02 19:26:54 +01:00 committed by GitHub
commit 59f74190d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,19 +9,24 @@ let
# 0.3.4 would change hashes: https://github.com/NixOS/nixpkgs/issues/25154
patchutils = buildPackages.patchutils_0_3_3;
in
{ stripLen ? 0, extraPrefix ? null, excludes ? [], includes ? [], revert ? false, ... }@args:
{ stripLen ? 0
, extraPrefix ? null
, excludes ? []
, includes ? []
, revert ? false
, postFetch ? ""
, ...
}@args:
let
# Make base-64 encoded SRI hash filename-safe using RFC 4648 §5
tmpname = lib.replaceStrings [ "+" "/" "=" ] [ "-" "_" "" ] args.sha256;
in
fetchurl ({
postFetch = ''
tmpfile="$TMPDIR/${tmpname}"
tmpfile="$TMPDIR/patch"
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{} \
@ -33,6 +38,7 @@ 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
@ -40,6 +46,7 @@ fetchurl ({
cat "$out" 1>&2
exit 1
fi
${patchutils}/bin/filterdiff \
-p1 \
${builtins.toString (builtins.map (x: "-x ${lib.escapeShellArg x}") excludes)} \
@ -56,6 +63,6 @@ fetchurl ({
'' + lib.optionalString revert ''
${patchutils}/bin/interdiff "$out" /dev/null > "$tmpfile"
mv "$tmpfile" "$out"
'' + (args.postFetch or "");
'' + postFetch;
meta.broken = excludes != [] && includes != [];
} // builtins.removeAttrs args ["stripLen" "extraPrefix" "excludes" "includes" "revert" "postFetch"])