summary refs log tree commit diff
path: root/pkgs/build-support/fetchpatch
diff options
context:
space:
mode:
authorTimo Kaufmann <timokau@zoho.com>2018-07-16 22:45:07 +0200
committerTimo Kaufmann <timokau@zoho.com>2018-07-16 22:46:54 +0200
commit30585139410578e9cbf3091a3f930dcd22de1ebc (patch)
tree3ab1b20627547e85bb79414f6edd9eae5222a5c0 /pkgs/build-support/fetchpatch
parent8f9b985e60de16883b2e67eaf2924144d647f31e (diff)
downloadnixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar.gz
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar.bz2
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar.lz
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar.xz
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.tar.zst
nixpkgs-30585139410578e9cbf3091a3f930dcd22de1ebc.zip
fetchpatch: add option to revert a patch
Diffstat (limited to 'pkgs/build-support/fetchpatch')
-rw-r--r--pkgs/build-support/fetchpatch/default.nix11
1 files changed, 7 insertions, 4 deletions
diff --git a/pkgs/build-support/fetchpatch/default.nix b/pkgs/build-support/fetchpatch/default.nix
index 1e231d649b3..40a7675b7ac 100644
--- a/pkgs/build-support/fetchpatch/default.nix
+++ b/pkgs/build-support/fetchpatch/default.nix
@@ -5,7 +5,7 @@
 # stripLen acts as the -p parameter when applying a patch.
 
 { lib, fetchurl, patchutils }:
-{ stripLen ? 0, extraPrefix ? null, excludes ? [], includes ? [], ... }@args:
+{ stripLen ? 0, extraPrefix ? null, excludes ? [], includes ? [], revert ? false, ... }@args:
 
 fetchurl ({
   postFetch = ''
@@ -37,7 +37,7 @@ fetchurl ({
       ${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
@@ -45,6 +45,9 @@ fetchurl ({
       cat "$tmpfile" 1>&2
       exit 1
     fi
-  '';
+  '' + lib.optionalString revert ''
+    ${patchutils}/bin/interdiff "$out" /dev/null > "$tmpfile"
+    mv "$tmpfile" "$out"
+  '' + (args.postFetch or "");
   meta.broken = excludes != [] && includes != [];
-} // builtins.removeAttrs args ["stripLen" "extraPrefix" "excludes" "includes" "postFetch"])
+} // builtins.removeAttrs args ["stripLen" "extraPrefix" "excludes" "includes" "revert" "postFetch"])