From 892b119c9d2c4e1bcf28a1adf24f7bd00b4a6626 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 28 Mar 2004 21:07:43 +0000 Subject: [PATCH] * 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 --- pkgs/development/libraries/aterm/builder.sh | 3 -- pkgs/development/libraries/aterm/default.nix | 4 +- pkgs/stdenv/nix-linux/default.nix | 43 ++++++++++++++------ 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/pkgs/development/libraries/aterm/builder.sh b/pkgs/development/libraries/aterm/builder.sh index 5946961adc58..77432d7ff5b6 100755 --- a/pkgs/development/libraries/aterm/builder.sh +++ b/pkgs/development/libraries/aterm/builder.sh @@ -1,6 +1,3 @@ -#! /bin/sh - . $stdenv/setup - configureFlags="--with-gcc" genericBuild diff --git a/pkgs/development/libraries/aterm/default.nix b/pkgs/development/libraries/aterm/default.nix index 2d2a946f60a9..bac496ecebca 100644 --- a/pkgs/development/libraries/aterm/default.nix +++ b/pkgs/development/libraries/aterm/default.nix @@ -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; } diff --git a/pkgs/stdenv/nix-linux/default.nix b/pkgs/stdenv/nix-linux/default.nix index 7219ae05726b..f7230ce1b298 100644 --- a/pkgs/stdenv/nix-linux/default.nix +++ b/pkgs/stdenv/nix-linux/default.nix @@ -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; }