let
nixpkgs = <nixpkgs>;
+ buildOutOfSourceTree = true;
+ succeedOnFailure = true;
+ keepBuildDirectory = 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.
+ bootstrap_guile =
+ let pkgs = import nixpkgs {}; in {
+ i686 = pkgs.fetchurl {
+ url = http://www.fdn.fr/~lcourtes/software/guix/packages/i686-linux/guile-bootstrap-2.0.6.tar.xz;
+ sha256 = "93b537766dfab3ad287143523751e3ec02dd32d3ccaf88ad2d31c63158f342ee";
+ };
+
+ x86_64 = pkgs.fetchurl {
+ url = http://www.fdn.fr/~lcourtes/software/guix/packages/x86_64-linux/guile-bootstrap-2.0.6.tar.xz;
+ sha256 = "0467a82cbe4136f60a79eb4176011bf88cf28ea19c9ad9defa365811ff8e11cf";
+ };
+ };
+
jobs = {
tarball =
let pkgs = import nixpkgs {}; in
name = "guix-tarball";
src = <guix>;
buildInputs = with pkgs; [ guile ];
- buildNativeInputs = with pkgs; [ gettext cvs pkgconfig ];
+ buildNativeInputs = with pkgs; [ texinfo gettext cvs pkgconfig ];
configureFlags =
- [ "--with-nixpkgs=${nixpkgs}" "--with-nix-prefix=${pkgs.nix}" ];
+ [ "--with-nix-prefix=${pkgs.nix}"
+ "--with-libgcrypt-prefix=${pkgs.libgcrypt}"
+ ];
};
build =
buildNativeInputs = [ pkgs.pkgconfig ];
src = jobs.tarball;
configureFlags =
- [ "--with-nixpkgs=${nixpkgs}" "--with-nix-prefix=${pkgs.nix}" ];
+ [ "--with-nix-prefix=${pkgs.nix}"
+ "--with-libgcrypt-prefix=${pkgs.libgcrypt}"
+ ];
+
+ preBuild =
+ # Use our pre-downloaded bootstrap tarballs instead of letting
+ # the build system download it over and over again.
+ '' mkdir -p distro/packages/bootstrap/{i686,x86_64}-linux
+ cp -v "${bootstrap_guile.i686}" \
+ distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz
+ cp -v "${bootstrap_guile.x86_64}" \
+ distro/packages/bootstrap/x86_64-linux/guile-bootstrap-2.0.6.tar.xz
+ '';
# XXX: Since we need to talk to a running daemon, for the benefit of
# `nixpkgs-derivation*' & co., we need to escape the chroot.
preConfigure = "export NIX_REMOTE=daemon";
__noChroot = true;
+
+ inherit succeedOnFailure keepBuildDirectory
+ buildOutOfSourceTree;
};
+
+
+ # Jobs to test the distro.
+ distro = {
+ hello =
+ { system ? builtins.currentSystem }:
+
+ let
+ pkgs = import nixpkgs { inherit system; };
+ guix = jobs.build { inherit system; };
+ in
+ # XXX: We have no way to tell the Nix code to swallow the .drv
+ # produced by `guix-build', so we have a pointless indirection
+ # here. This could be worked around by generating Nix code
+ # from the .drv, and importing that.
+ pkgs.releaseTools.nixBuild {
+ src = null;
+ name = "guix-hello";
+ phases = "buildPhase";
+ buildPhase = "${guix}/bin/guix-build --no-substitutes hello | tee $out";
+ __noChroot = true;
+ };
+ };
};
in
jobs