about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-11-25 02:20:41 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-11-25 02:20:41 +0000
commitc90bd0756cbfe1225666a096b580d32c0101fda2 (patch)
treeff7436da1a6602152211f508fce414a59c91c895 /pkgs/build-support
parentda8bcbd9a589a3b7ab4b36551337b68ff4f4ca0c (diff)
* Automatically build Debian packages using checkinstall, as suggested
  by Pjotr Prins a while back.  This could also be used to generate
  RPMs for packages that don't have a spec-file.

* Added checkinstall to Nixpkgs.  However we don't use our own build
  yet because with it "make install" segfaults in a Debian VM, while
  the pre-built binary does work.

svn path=/nixpkgs/trunk/; revision=13400
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/release/debian-build.nix35
-rw-r--r--pkgs/build-support/release/default.nix2
-rw-r--r--pkgs/build-support/vm/default.nix4
3 files changed, 36 insertions, 5 deletions
diff --git a/pkgs/build-support/release/debian-build.nix b/pkgs/build-support/release/debian-build.nix
index 96efd1913cc69..3bae38e1d06d8 100644
--- a/pkgs/build-support/release/debian-build.nix
+++ b/pkgs/build-support/release/debian-build.nix
@@ -3,7 +3,7 @@
 # just for portability testing: it doesn't produce any Debian
 # packages.
 
-vmTools: args: with args;
+{vmTools, fetchurl}: args: with args;
 
 vmTools.runInLinuxImage (stdenv.mkDerivation (
 
@@ -12,10 +12,9 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
 
     doCheck = true;
 
-    # Don't install the result in the Nix store.
-    useTempPrefix = true;
+    prefix = "/usr";
 
-    phases = "sysInfoPhase unpackPhase patchPhase configurePhase buildPhase checkPhase installPhase distPhase";
+    phases = "installExtraDebsPhase sysInfoPhase unpackPhase patchPhase configurePhase buildPhase checkPhase installPhase distPhase";
   }
 
   // args //
@@ -37,6 +36,19 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
       fi
     ''; # */
 
+    extraDebs = [
+      (fetchurl {
+        url = http://checkinstall.izto.org/files/deb/checkinstall_1.6.1-1_i386.deb;
+        sha256 = "0c9wwk1m0w677gr37zd4lhvkskkcrwa0bk7csh7b3qy94pnab618";
+      })
+    ];
+
+    installExtraDebsPhase = ''
+      for i in $extraDebs; do
+        dpkg --install $i    
+      done
+    '';
+
     sysInfoPhase = ''
       echo "System/kernel: $(uname -a)"
       if test -e /etc/debian_version; then echo "Debian release: $(cat /etc/debian_version)"; fi
@@ -45,6 +57,21 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
       stopNest
     '';
 
+    installCommand = ''
+      /usr/local/sbin/checkinstall -y -D make install
+
+      ensureDir $out/debs
+      find . -name "*.deb" -exec cp {} $out/debs \;
+
+      shopt -s nullglob
+      for i in $out/debs/*.deb; do
+        header "Generated DEB package: $i"
+        dpkg-deb --info $i
+        echo "file deb $i" >> $out/nix-support/hydra-build-products
+        stopNest
+      done
+    ''; # */
+
     meta = {
       description = "Test build on ${args.diskImage.fullName} (${args.diskImage.name})";
     };
diff --git a/pkgs/build-support/release/default.nix b/pkgs/build-support/release/default.nix
index dd46164d9f299..f90c56fbc8e53 100644
--- a/pkgs/build-support/release/default.nix
+++ b/pkgs/build-support/release/default.nix
@@ -19,7 +19,7 @@ rec {
 
   rpmBuild = args: import ./rpm-build.nix vmTools args;
 
-  debBuild = args: import ./debian-build.nix vmTools (
+  debBuild = args: import ./debian-build.nix {inherit vmTools fetchurl;} (
     { inherit stdenv;
     } // args);
 
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 427e7dc58ff16..756aa14c09551 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -863,6 +863,10 @@ rec {
     "patch"
     "diff"
     "locales"
+    # Needed by checkinstall:
+    "util-linux" 
+    "file"
+    "dpkg-dev"
   ];