nixpkgs/pkgs/stdenv/generic/default.nix
Eelco Dolstra 07bc3fbf00 * Push packages from the final stdenv bootstrapping phase to
all-packages.  That is, an attribute like "bash" in all-packages.nix
  should evaluate to the "bash" used to build stdenv, it shouldn't
  build a new one.

  Hm, this would be a lot cleaner if we had lazy_rec ;-)

svn path=/nixpkgs/branches/usability/; revision=4775
2006-02-09 17:04:18 +00:00

46 lines
1.2 KiB
Nix

{ stdenv, name, preHook ? null, postHook ? null, initialPath, gcc, shell
, param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? ""
, extraAttrs ? {}
}:
let {
body =
stdenv.mkDerivation {
inherit name;
builder = ./builder.sh;
substitute = ../../build-support/substitute/substitute.sh;
setup = ./setup.sh;
inherit preHook postHook initialPath gcc shell;
# TODO: make this more elegant.
inherit param1 param2 param3 param4 param5;
}
# Add a utility function to produce derivations that use this
# stdenv and its shell.
// {
mkDerivation = attrs: derivation (attrs // {
builder = if attrs ? realBuilder then attrs.realBuilder else shell;
args = if attrs ? args then attrs.args else
["-e" (if attrs ? builder then attrs.builder else ./default-builder.sh)];
stdenv = body;
system = body.system;
});
}
# Propagate any extra attributes. For instance, we use this to
# "lift" packages like curl from the final stdenv for Linux to
# all-packages.nix for that platform (meaning that it has a line
# like curl = if stdenv ? curl then stdenv.curl else ...).
// extraAttrs;
}