Merge branch 'virtualbox-manual-kernel' of github.com:aszlig/nixpkgs

virtualbox: Fix build for manual kernel.

This should fix building VirtualBox against kernels made using the new
manual kernel configuration system.

This has been tested with the standard nixpkgs kernel as well.
This commit is contained in:
Shea Levy 2012-08-19 10:03:45 -04:00
commit 18bbb2fa5c

View File

@ -8,13 +8,27 @@
with stdenv.lib; with stdenv.lib;
let version = "4.1.18"; in let
version = "4.1.18";
stdenv.mkDerivation { forEachModule = action: ''
for mod in \
$sourcedir/out/linux.*/release/bin/src/vboxdrv \
$sourcedir/out/linux.*/release/bin/src/vboxpci \
$sourcedir/out/linux.*/release/bin/src/vboxnetadp \
$sourcedir/out/linux.*/release/bin/src/vboxnetflt
do
if [ "x$(basename "$mod")" != xvboxdrv -a ! -e "$mod/Module.symvers" ]
then
cp -v $sourcedir/out/linux.*/release/bin/src/vboxdrv/Module.symvers \
"$mod/Module.symvers"
fi
INSTALL_MOD_PATH="$out" INSTALL_MOD_DIR=misc \
make -C "$MODULES_BUILD_DIR" "M=$mod" DEPMOD=/do_not_use_depmod ${action}
done
'';
in stdenv.mkDerivation {
name = "virtualbox-${version}-${kernel.version}"; name = "virtualbox-${version}-${kernel.version}";
NIX_CFLAGS_COMPILE="-I${kernel}/lib/modules/${kernel.modDirVersion}/build/include/generated";
src = fetchurl { src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2"; url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
sha256 = "e650e4fdc23581b9edc0e5d5705cc596c76796851ebf65ccda0edb8e413fa3b7"; sha256 = "e650e4fdc23581b9edc0e5d5705cc596c76796851ebf65ccda0edb8e413fa3b7";
@ -42,10 +56,11 @@ stdenv.mkDerivation {
''; '';
configurePhase = '' configurePhase = ''
sourcedir="$(pwd)"
./configure --with-qt4-dir=${qt4} \ ./configure --with-qt4-dir=${qt4} \
${optionalString (!javaBindings) "--disable-java"} \ ${optionalString (!javaBindings) "--disable-java"} \
${optionalString (!pythonBindings) "--disable-python"} \ ${optionalString (!pythonBindings) "--disable-python"} \
--disable-pulse --disable-hardening \ --disable-pulse --disable-hardening --disable-kmods \
--with-mkisofs=${xorriso}/bin/xorrisofs --with-mkisofs=${xorriso}/bin/xorrisofs
sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \ sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \
-i AutoConfig.kmk -i AutoConfig.kmk
@ -63,15 +78,10 @@ stdenv.mkDerivation {
enableParallelBuilding = true; enableParallelBuilding = true;
preBuild = '' buildPhase = ''
source env.sh source env.sh
kmk kmk
cd out/linux.*/release/bin/src ${forEachModule "modules"}
export KERN_DIR=${kernel}/lib/modules/*/build
'';
postBuild = ''
cd ../../../../..
''; '';
installPhase = '' installPhase = ''
@ -82,19 +92,8 @@ stdenv.mkDerivation {
mkdir -p $libexec mkdir -p $libexec
cp -av * $libexec cp -av * $libexec
# Install kernel module
cd src
kernelVersion=$(cd ${kernel}/lib/modules; ls)
export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
# Remove root ownership stuff, since this does not work in a chroot environment
for i in `find . -name Makefile`; do
sed -i -e "s|-o root||g" \
-e "s|-g root||g" $i
done
# Install kernel modules # Install kernel modules
make install ${forEachModule "modules_install"}
# Create wrapper script # Create wrapper script
mkdir -p $out/bin mkdir -p $out/bin