From 7914de9b8c9da562e2cd342b96a8547cf482a16c Mon Sep 17 00:00:00 2001 From: Dave Nicponski Date: Mon, 18 Nov 2019 15:48:04 -0500 Subject: substitute: init at 0 Similar to the colocated `substituteAll` script and derivation, this PR adds nix-level support for `substitute` directly. This is useful, for instance, to be able to easily make tweaks to patch files for an existing derivation's existing patch files. --- pkgs/build-support/substitute/substitute.nix | 14 ++++++++++++++ pkgs/build-support/substitute/substitute.sh | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/build-support/substitute/substitute.nix create mode 100644 pkgs/build-support/substitute/substitute.sh (limited to 'pkgs/build-support/substitute') diff --git a/pkgs/build-support/substitute/substitute.nix b/pkgs/build-support/substitute/substitute.nix new file mode 100644 index 0000000000000..7f0332334585b --- /dev/null +++ b/pkgs/build-support/substitute/substitute.nix @@ -0,0 +1,14 @@ +{ stdenvNoCC }: + +args: + +# This is a wrapper around `substitute` in the stdenv. +# The `replacements` attribute should be a list of list of arguments +# to `substitute`, such as `[ "--replace" "sourcetext" "replacementtext" ]` +stdenvNoCC.mkDerivation ({ + name = if args ? name then args.name else baseNameOf (toString args.src); + builder = ./substitute.sh; + inherit (args) src; + preferLocalBuild = true; + allowSubstitutes = false; +} // args // { replacements = args.replacements; }) diff --git a/pkgs/build-support/substitute/substitute.sh b/pkgs/build-support/substitute/substitute.sh new file mode 100644 index 0000000000000..dbac275a80ede --- /dev/null +++ b/pkgs/build-support/substitute/substitute.sh @@ -0,0 +1,18 @@ +source $stdenv/setup + +args= + +target=$out +if test -n "$dir"; then + target=$out/$dir/$name + mkdir -p $out/$dir +fi + +substitute $src $target $replacements + +if test -n "$isExecutable"; then + chmod +x $target +fi + +eval "$postInstall" + -- cgit 1.4.1