From c90bd0756cbfe1225666a096b580d32c0101fda2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 25 Nov 2008 02:20:41 +0000 Subject: * 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 --- pkgs/build-support/release/debian-build.nix | 35 +++++++++++++++++++++++++---- pkgs/build-support/release/default.nix | 2 +- pkgs/build-support/vm/default.nix | 4 ++++ 3 files changed, 36 insertions(+), 5 deletions(-) (limited to 'pkgs/build-support') 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" ]; -- cgit 1.4.1