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 - }: + 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]; + + 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" + }: + + 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; + - with import nixpkgs.path {}; - - 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 - ''; - }; + deb_debian40i386 = makeDeb (diskImages: diskImages.debian40i386) 30; + deb_ubuntu804i386 = makeDeb (diskImages: diskImages.ubuntu804i386) 40; - build = - { tarball ? {path = jobs.tarball {};} - , nixpkgs ? {path = ../nixpkgs;} - , system ? "i686-linux" - }: + }; + + + 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; }; -}; in jobs + 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