diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-03-02 15:14:22 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-03-02 15:14:22 +0100 |
commit | 11a7ceb9e804c63a22e4bc0ce2a3c302d7ecb18e (patch) | |
tree | d735f9f28da9971f872f609fcca33b40d5586fe7 | |
parent | eb0880e71d326753829a41b7afd66392960434cc (diff) | |
download | gnu-guix-11a7ceb9e804c63a22e4bc0ce2a3c302d7ecb18e.tar gnu-guix-11a7ceb9e804c63a22e4bc0ce2a3c302d7ecb18e.tar.gz |
release.nix: Build outside of a chroot.
* release.nix (unchroot): New function.
(jobs)[tarball, build, build_disable_daemon]: Use it.
-rw-r--r-- | release.nix | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/release.nix b/release.nix index 369d54ed96..aed99717df 100644 --- a/release.nix +++ b/release.nix @@ -1,5 +1,5 @@ /* GNU Guix --- Functional package management for GNU - Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org> + Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org> This file is part of GNU Guix. @@ -26,6 +26,15 @@ let succeedOnFailure = true; keepBuildDirectory = true; + # Run the given derivation in outside of a chroot. This hack is used on + # hydra.gnu.org where we want Guix derivations to run in a chroot that lacks + # /bin, whereas Nixpkgs relies on /bin/sh. + unchroot = + let pkgs = import nixpkgs {}; in + drv: pkgs.lib.overrideDerivation drv (args: { + __noChroot = true; + }); + # The Guile used to bootstrap the whole thing. It's normally # downloaded by the build system, but here we download it via a # fixed-output derivation and stuff it into the build tree. @@ -44,7 +53,8 @@ let jobs = { tarball = - let pkgs = import nixpkgs {}; in + unchroot + (let pkgs = import nixpkgs {}; in pkgs.releaseTools.sourceTarball { name = "guix-tarball"; src = <guix>; @@ -55,12 +65,13 @@ let [ "--with-libgcrypt-prefix=${pkgs.libgcrypt}" "--localstatedir=/nix/var" ]; - }; + }); build = { system ? builtins.currentSystem }: - let pkgs = import nixpkgs { inherit system; }; in + unchroot + (let pkgs = import nixpkgs { inherit system; }; in pkgs.releaseTools.nixBuild { name = "guix"; buildInputs = with pkgs; [ guile sqlite bzip2 libgcrypt ]; @@ -83,13 +94,14 @@ let inherit succeedOnFailure keepBuildDirectory buildOutOfSourceTree; - }; + }); build_disable_daemon = { system ? builtins.currentSystem }: - let + unchroot + (let pkgs = import nixpkgs { inherit system; }; build = jobs.build { inherit system; }; in @@ -101,7 +113,7 @@ let # the chroot. preConfigure = "export NIX_REMOTE=daemon"; __noChroot = true; - }); + })); # Jobs to test the distro. distro = { |