summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2008-12-04 15:25:28 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2008-12-04 15:25:28 +0000
commit9850262a72d1eb77c8f36cf44a9a4aaffedc5d6b (patch)
tree4b76684f44a3d1902262bde28347e18e6c40f130
parent909fbb9de1e3e2d020a3dd000b9009a5ff1aaeca (diff)
downloadguix-9850262a72d1eb77c8f36cf44a9a4aaffedc5d6b.tar.gz
* Build RPMs, Debs, coverage analysis.
-rw-r--r--release.nix204
1 files changed, 154 insertions, 50 deletions
diff --git a/release.nix b/release.nix
index af2c435d72..fd815cf5c7 100644
--- a/release.nix
+++ b/release.nix
@@ -1,57 +1,125 @@
-let jobs = rec {
+let
 
+  jobs = rec {
 
-  tarball =
-    { nix ? {path = ./.; rev = 1234;}
-    , nixpkgs ? {path = ../nixpkgs;}
-    , officialRelease ? false
-    }:
-    
-    with import nixpkgs.path {};
-    
-    releaseTools.makeSourceTarball {
-      name = "nix-tarball";
-      src = nix;
-      inherit officialRelease;
 
-      buildInputs = [curl bison flex2533 perl libxml2 libxslt w3m bzip2 jing_tools];
+    tarball =
+      { nix ? {path = ./.; rev = 1234;}
+      , nixpkgs ? {path = ../nixpkgs;}
+      , officialRelease ? false
+      }:
 
-      configureFlags = ''
-        --with-docbook-rng=${docbook5}/xml/rng/docbook
-        --with-docbook-xsl=${docbook5_xsl}/xml/xsl/docbook
-        --with-xml-flags=--nonet
-      '';
+      with import nixpkgs.path {};
 
-      # Include the BDB, ATerm and Bzip2 tarballs in the distribution.
-      preConfigure = ''
-        stripHash ${db45.src}
-        # Remove unnecessary stuff from the Berkeley DB tarball.
-        ( mkdir bdb-temp
-          cd bdb-temp
-          tar xfz ${db45.src}
-          cd *
-          rm -rf docs test tcl perl libdb_java java rpc_server build_vxworks \
-            examples_java examples_c examples_cxx dist/tags
-          mkdir test
-          touch test/include.tcl
-          cd ..
-          tar cvfz ../externals/$strippedName *
-        )
-
-        stripHash ${aterm242fixes.src}
-        cp -pv ${aterm242fixes.src} externals/$strippedName
-
-        stripHash ${bzip2.src}
-        cp -pv ${bzip2.src} externals/$strippedName
-      '';
-    };
+      releaseTools.makeSourceTarball {
+        name = "nix-tarball";
+        src = nix;
+        inherit officialRelease;
 
+        buildInputs = [curl bison flex2533 perl libxml2 libxslt w3m bzip2 jing_tools];
+
+        configureFlags = ''
+          --with-docbook-rng=${docbook5}/xml/rng/docbook
+          --with-docbook-xsl=${docbook5_xsl}/xml/xsl/docbook
+          --with-xml-flags=--nonet
+        '';
+
+        # Include the BDB, ATerm and Bzip2 tarballs in the distribution.
+        preConfigure = ''
+          stripHash ${db45.src}
+          # Remove unnecessary stuff from the Berkeley DB tarball.
+          ( mkdir bdb-temp
+            cd bdb-temp
+            tar xfz ${db45.src}
+            cd *
+            rm -rf docs test tcl perl libdb_java java rpc_server build_vxworks \
+              examples_java examples_c examples_cxx dist/tags
+            mkdir test
+            touch test/include.tcl
+            cd ..
+            tar cvfz ../externals/$strippedName *
+          )
+
+          stripHash ${aterm242fixes.src}
+          cp -pv ${aterm242fixes.src} externals/$strippedName
+
+          stripHash ${bzip2.src}
+          cp -pv ${bzip2.src} externals/$strippedName
+        '';
+      };
 
-  build =
-    { tarball ? {path = jobs.tarball {};}
-    , nixpkgs ? {path = ../nixpkgs;}
-    , system ? "i686-linux"
-    }:
+
+    build =
+      { tarball ? {path = jobs.tarball {};}
+      , nixpkgs ? {path = ../nixpkgs;}
+      , system ? "i686-linux"
+      }:
+
+      with import nixpkgs.path {inherit system;};
+
+      releaseTools.nixBuild {
+        name = "nix-build";
+        src = tarball;
+
+        buildInputs = [curl perl bzip2 openssl];
+
+        configureFlags = ''
+          --disable-init-state
+          --with-bdb=${db45} --with-aterm=${aterm242fixes} --with-bzip2=${bzip2}
+        '';
+
+        postInstall = ''
+          echo "doc manual $out/share/doc/nix/manual" >> $out/nix-support/hydra-build-products
+          echo "doc release-notes $out/share/doc/nix/release-notes" >> $out/nix-support/hydra-build-products
+        '';
+      };
+
+      
+    coverage =
+      { tarball ? {path = jobs.tarball {};}
+      , nixpkgs ? {path = ../nixpkgs;}
+      }:
+
+      with import nixpkgs.path {};
+
+      releaseTools.coverageAnalysis {
+        name = "nix-build";
+        src = tarball;
+
+        buildInputs = [
+          curl perl bzip2 openssl
+          # These are for "make check" only:
+          graphviz libxml2 libxslt
+        ];
+
+        configureFlags = ''
+          --disable-init-state --disable-shared
+          --with-bdb=${db45} --with-aterm=${aterm242fixes} --with-bzip2=${bzip2}
+        '';
+
+        lcovFilter = ["*/boost/*" "*-tab.*"];
+
+        # We call `dot', and even though we just use it to
+        # syntax-check generated dot files, it still requires some
+        # fonts.  So provide those.
+        FONTCONFIG_FILE = texFunctions.fontsConf;
+      };
+
+      
+    rpm_fedora9i386 = makeRPM (diskImages: diskImages.fedora9i386) 50;
+    rpm_fedora10i386 = makeRPM (diskImages: diskImages.fedora10i386) 40;
+    rpm_opensuse103i386 = makeRPM (diskImages: diskImages.opensuse103i386) 40;
+
+    
+    deb_debian40i386 = makeDeb (diskImages: diskImages.debian40i386) 30;
+    deb_ubuntu804i386 = makeDeb (diskImages: diskImages.ubuntu804i386) 40;
+
+
+  };
+
+
+  doBuild =
+    { tarball, nixpkgs, system, coverageAnalysis }:
 
     with import nixpkgs.path {inherit system;};
 
@@ -65,12 +133,48 @@ let jobs = rec {
         --disable-init-state
         --with-bdb=${db45} --with-aterm=${aterm242fixes} --with-bzip2=${bzip2}
       '';
-      
-      postInstall = ''
+
+      postInstall = if coverageAnalysis then "" else ''
         echo "doc manual $out/share/doc/nix/manual" >> $out/nix-support/hydra-build-products
         echo "doc release-notes $out/share/doc/nix/release-notes" >> $out/nix-support/hydra-build-products
       '';
+
+      inherit coverageAnalysis;
+    };
+
+
+  makeRPM =
+    diskImageFun: prio:
+    { tarball ? {path = jobs.tarball {};}
+    , nixpkgs ? {path = ../nixpkgs;}
+    }:
+
+    with import nixpkgs.path {};
+
+    releaseTools.rpmBuild rec {
+      name = "nix-rpm-${diskImage.name}";
+      src = tarball;
+      diskImage = diskImageFun vmTools.diskImages;
+      memSize = 1024;
+      meta = { schedulingPriority = toString prio; };
+    };
+
+
+  makeDeb =
+    diskImageFun: prio:
+    { tarball ? {path = jobs.tarball {};}
+    , nixpkgs ? {path = ../nixpkgs;}
+    }:
+
+    with import nixpkgs.path {};
+
+    releaseTools.debBuild {
+      name = "nix-deb";
+      src = tarball;
+      diskImage = diskImageFun vmTools.diskImages;
+      memSize = 1024;
+      meta = { schedulingPriority = toString prio; };
     };
 
 
-}; in jobs
+in jobs