* Utility: the generic substituter. It substitutes all occurences of

`@var@' in the file `src', writing the result to $out, where `var'
  is any environment variable starting with a lowercase character.
  Example:

    genericSubstituter {
      src = ./file;
      foo = "bla";
      shell = bash + "/bin/sh";
    };

  will replace `@foo@' with `bla' and `@shell@' with
  `/nix/store/...-bash-.../bin/sh'.

svn path=/nixpkgs/trunk/; revision=6928
This commit is contained in:
Eelco Dolstra 2006-11-02 22:44:32 +00:00
parent 2f0d625a7a
commit 05c884b471
3 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,10 @@
{stdenv}:
args:
stdenv.mkDerivation ({
name = if args ? name then args.name else baseNameOf (toString args.src);
builder = ./generic-substituter.sh;
substitute = ./substitute.sh;
inherit (args) src;
} // args)

View File

@ -0,0 +1,16 @@
source $stdenv/setup
source $substitute
args=
# Select all environment variables that start with a lowercase character.
for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do
echo "$envVar -> ${!envVar}"
args="$args --subst-var $envVar"
done
substitute $src $out $args
if test -n "$isExecutable"; then
chmod +x $out
fi

View File

@ -188,6 +188,10 @@ rec {
substituter = ../build-support/substitute/substitute.sh;
genericSubstituter = import ../build-support/substitute/generic-substituter.nix {
inherit stdenv;
};
### TOOLS