forked from mirrors/nixpkgs
* It is now possible to execute a builder using a shell inside the Nix
store, rather than outside (such as /bin/sh). For instance, the Nix expression for the ATerm library now looks like this: {stdenv, fetchurl}: stdenv.mkDerivation { name = "aterm-2.0.5"; builder = ./builder.sh; ... } where `mkDerivation' is a helper function in `stdenv' that massages the given attribute set into using the bash shell that is part of the standard environment: mkDerivation = attrs: derivation (att s // { builder = pkgs.bash ~ /bin/sh; args = ["-e" attrs.builder]; stdenv = (...); system = (...).system; }); Note that this makes it unnecessary to set the `stdenv' and `system' attributes, since `mkDerivation' already does that. svn path=/nixpkgs/trunk/; revision=866
This commit is contained in:
parent
f8f9f4d12c
commit
892b119c9d
|
@ -1,6 +1,3 @@
|
|||
#! /bin/sh
|
||||
|
||||
. $stdenv/setup
|
||||
|
||||
configureFlags="--with-gcc"
|
||||
genericBuild
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
{stdenv, fetchurl}:
|
||||
|
||||
derivation {
|
||||
stdenv.mkDerivation {
|
||||
name = "aterm-2.0.5";
|
||||
system = stdenv.system;
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://www.cwi.nl/projects/MetaEnv/aterm/aterm-2.0.5.tar.gz;
|
||||
md5 = "68aefb0c10b2ab876b8d3c0b2d0cdb1b";
|
||||
};
|
||||
inherit stdenv;
|
||||
}
|
||||
|
|
|
@ -1,19 +1,36 @@
|
|||
{stdenv, glibc, pkgs, genericStdenv, gccWrapper}:
|
||||
|
||||
genericStdenv {
|
||||
name = "stdenv-nix-linux";
|
||||
preHook = ./prehook.sh;
|
||||
initialPath = (import ../nix/path.nix) {pkgs = pkgs;};
|
||||
let {
|
||||
|
||||
inherit stdenv;
|
||||
body =
|
||||
|
||||
gcc = gccWrapper {
|
||||
name = pkgs.gcc.name;
|
||||
nativeTools = false;
|
||||
nativeGlibc = false;
|
||||
inherit (pkgs) gcc binutils;
|
||||
inherit stdenv glibc;
|
||||
};
|
||||
genericStdenv {
|
||||
name = "stdenv-nix-linux";
|
||||
preHook = ./prehook.sh;
|
||||
initialPath = (import ../nix/path.nix) {pkgs = pkgs;};
|
||||
|
||||
inherit stdenv;
|
||||
|
||||
gcc = gccWrapper {
|
||||
name = pkgs.gcc.name;
|
||||
nativeTools = false;
|
||||
nativeGlibc = false;
|
||||
inherit (pkgs) gcc binutils;
|
||||
inherit stdenv glibc;
|
||||
};
|
||||
|
||||
param1 = pkgs.bash;
|
||||
}
|
||||
|
||||
# Add a utility function to produce derivations that use this
|
||||
# stdenv and its the bash shell.
|
||||
// {
|
||||
mkDerivation = attrs: derivation (attrs // {
|
||||
builder = pkgs.bash ~ /bin/sh;
|
||||
args = ["-e" attrs.builder];
|
||||
stdenv = body;
|
||||
system = body.system;
|
||||
});
|
||||
};
|
||||
|
||||
param1 = pkgs.bash;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue