release.nix: Build outside of a chroot.
* release.nix (unchroot): New function. (jobs)[tarball, build, build_disable_daemon]: Use it.
This commit is contained in:
		
							parent
							
								
									eb0880e71d
								
							
						
					
					
						commit
						11a7ceb9e8
					
				
					 1 changed files with 19 additions and 7 deletions
				
			
		
							
								
								
									
										26
									
								
								release.nix
									
										
									
									
									
								
							
							
						
						
									
										26
									
								
								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 = { | ||||
|  |  | |||
		Reference in a new issue