diff options
author | Bas van Dijk <v.dijk.bas@gmail.com> | 2019-09-02 11:13:19 +0200 |
---|---|---|
committer | Bas van Dijk <v.dijk.bas@gmail.com> | 2019-09-02 11:18:52 +0200 |
commit | 05393ca2170bf5db031372bdf2a714b006f9b2ca (patch) | |
tree | 337304a5e4c9ec939333d9e0d1a5e0b1f2688f0e /pkgs/build-support/trivial-builders.nix | |
parent | 0a8e54d1c6569be9a389270e9e0b13e78269b1db (diff) | |
download | nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar.gz nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar.bz2 nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar.lz nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar.xz nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.tar.zst nixpkgs-05393ca2170bf5db031372bdf2a714b006f9b2ca.zip |
trivial-builders: add the applyPatches function
applyPatches applies a list of patches to a source directory. For example to patch nixpkgs you can use: applyPatches { src = pkgs.path; patches = [ (pkgs.fetchpatch { url = "https://github.com/NixOS/nixpkgs/commit/1f770d20550a413e508e081ddc08464e9d08ba3d.patch"; sha256 = "1nlzx171y3r3jbk0qhvnl711kmdk57jlq4na8f8bs8wz2pbffymr"; }) ]; }
Diffstat (limited to 'pkgs/build-support/trivial-builders.nix')
-rw-r--r-- | pkgs/build-support/trivial-builders.nix | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix index 0bfe14a8539..55df09121b4 100644 --- a/pkgs/build-support/trivial-builders.nix +++ b/pkgs/build-support/trivial-builders.nix @@ -381,4 +381,37 @@ rec { # Copy a list of paths to the Nix store. copyPathsToStore = builtins.map copyPathToStore; + /* Applies a list of patches to a source directory. + * + * Examples: + * + * # Patching nixpkgs: + * applyPatches { + * src = pkgs.path; + * patches = [ + * (pkgs.fetchpatch { + * url = "https://github.com/NixOS/nixpkgs/commit/1f770d20550a413e508e081ddc08464e9d08ba3d.patch"; + * sha256 = "1nlzx171y3r3jbk0qhvnl711kmdk57jlq4na8f8bs8wz2pbffymr"; + * }) + * ]; + * } + */ + applyPatches = + { src + , name ? (if builtins.typeOf src == "path" + then builtins.baseNameOf src + else + if builtins.isAttrs src && builtins.hasAttr "name" src + then src.name + else throw "applyPatches: please supply a `name` argument because a default name can only be computed when the `src` is a path or is an attribute set with a `name` attribute." + ) + "-patched" + , patches ? [] + , postPatch ? "" + }: stdenvNoCC.mkDerivation { + inherit name src patches postPatch; + preferLocalBuild = true; + allowSubstitutes = false; + phases = "unpackPhase patchPhase installPhase"; + installPhase = "cp -R ./ $out"; + }; } |