* 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
This commit is contained in:
parent
da8bcbd9a5
commit
c90bd0756c
@ -3,7 +3,7 @@
|
|||||||
# just for portability testing: it doesn't produce any Debian
|
# just for portability testing: it doesn't produce any Debian
|
||||||
# packages.
|
# packages.
|
||||||
|
|
||||||
vmTools: args: with args;
|
{vmTools, fetchurl}: args: with args;
|
||||||
|
|
||||||
vmTools.runInLinuxImage (stdenv.mkDerivation (
|
vmTools.runInLinuxImage (stdenv.mkDerivation (
|
||||||
|
|
||||||
@ -12,10 +12,9 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
|
|||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
# Don't install the result in the Nix store.
|
prefix = "/usr";
|
||||||
useTempPrefix = true;
|
|
||||||
|
|
||||||
phases = "sysInfoPhase unpackPhase patchPhase configurePhase buildPhase checkPhase installPhase distPhase";
|
phases = "installExtraDebsPhase sysInfoPhase unpackPhase patchPhase configurePhase buildPhase checkPhase installPhase distPhase";
|
||||||
}
|
}
|
||||||
|
|
||||||
// args //
|
// args //
|
||||||
@ -37,6 +36,19 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
|
|||||||
fi
|
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 = ''
|
sysInfoPhase = ''
|
||||||
echo "System/kernel: $(uname -a)"
|
echo "System/kernel: $(uname -a)"
|
||||||
if test -e /etc/debian_version; then echo "Debian release: $(cat /etc/debian_version)"; fi
|
if test -e /etc/debian_version; then echo "Debian release: $(cat /etc/debian_version)"; fi
|
||||||
@ -45,6 +57,21 @@ vmTools.runInLinuxImage (stdenv.mkDerivation (
|
|||||||
stopNest
|
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 = {
|
meta = {
|
||||||
description = "Test build on ${args.diskImage.fullName} (${args.diskImage.name})";
|
description = "Test build on ${args.diskImage.fullName} (${args.diskImage.name})";
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@ rec {
|
|||||||
|
|
||||||
rpmBuild = args: import ./rpm-build.nix vmTools args;
|
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;
|
{ inherit stdenv;
|
||||||
} // args);
|
} // args);
|
||||||
|
|
||||||
|
@ -863,6 +863,10 @@ rec {
|
|||||||
"patch"
|
"patch"
|
||||||
"diff"
|
"diff"
|
||||||
"locales"
|
"locales"
|
||||||
|
# Needed by checkinstall:
|
||||||
|
"util-linux"
|
||||||
|
"file"
|
||||||
|
"dpkg-dev"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
24
pkgs/tools/package-management/checkinstall/default.nix
Normal file
24
pkgs/tools/package-management/checkinstall/default.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{stdenv, fetchurl, gettext}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "checkinstall-1.6.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = http://checkinstall.izto.org/files/source/checkinstall-1.6.1.tgz;
|
||||||
|
sha256 = "0p6gbbnk4hjwkmv8dr7c4v5wpdnanczavi7yiiivvf45zyfl8lil";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [gettext];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
makeFlagsArray=(PREFIX=$out)
|
||||||
|
|
||||||
|
substituteInPlace checkinstall --replace /usr/local/lib/checkinstall $out/lib/checkinstall
|
||||||
|
substituteInPlace checkinstallrc-dist --replace /usr/local $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = http://checkinstall.izto.org/;
|
||||||
|
description = "A tool for automatically generating Slackware, RPM or Debian packages when doing `make install'";
|
||||||
|
};
|
||||||
|
}
|
@ -572,6 +572,10 @@ let
|
|||||||
inherit fetchurl stdenv cmake libcap zlib bzip2;
|
inherit fetchurl stdenv cmake libcap zlib bzip2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
checkinstall = import ../tools/package-management/checkinstall {
|
||||||
|
inherit fetchurl stdenv gettext;
|
||||||
|
};
|
||||||
|
|
||||||
cheetahTemplate = builderDefsPackage (selectVersion ../tools/text/cheetah-template "2.0.1") {
|
cheetahTemplate = builderDefsPackage (selectVersion ../tools/text/cheetah-template "2.0.1") {
|
||||||
inherit makeWrapper python;
|
inherit makeWrapper python;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user