distro: Import 'gettext' under a different name.
[jackhill/guix/guix.git] / release.nix
index 28fde3b..1b913b4 100644 (file)
 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
@@ -29,9 +49,11 @@ let
         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 =
@@ -44,13 +66,51 @@ let
         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