2010-10-07 17:14:15 +02:00
|
|
|
{ stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext
|
2012-02-23 23:04:54 +01:00
|
|
|
, libXcursor, libXmu, qt4, libIDL, SDL, hal, libcap, zlib, libpng, glib, kernel
|
2010-08-06 12:34:34 +02:00
|
|
|
, python, which, alsaLib, curl, gawk
|
2012-02-23 23:04:54 +01:00
|
|
|
, xorriso, makeself, perl, jdk, pkgconfig
|
2009-04-16 15:44:06 +02:00
|
|
|
}:
|
2009-04-12 23:59:40 +02:00
|
|
|
|
2012-02-23 23:04:54 +01:00
|
|
|
let version = "4.1.8"; in
|
2011-04-18 21:24:10 +02:00
|
|
|
|
2009-04-12 23:59:40 +02:00
|
|
|
stdenv.mkDerivation {
|
2011-04-18 21:24:10 +02:00
|
|
|
name = "virtualbox-${version}-${kernel.version}";
|
2009-04-12 23:59:40 +02:00
|
|
|
|
|
|
|
src = fetchurl {
|
2011-04-18 21:24:10 +02:00
|
|
|
url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
|
2012-02-23 23:04:54 +01:00
|
|
|
sha256 = "1q04825ayynzgh8zl6y038lzxp3jk1a3dxpg6f52kk4vkirdc5pg";
|
2009-04-12 23:59:40 +02:00
|
|
|
};
|
|
|
|
|
2012-02-23 23:04:54 +01:00
|
|
|
buildInputs =
|
|
|
|
[ iasl dev86 libxslt libxml2 xproto libX11 libXext libXcursor qt4 libIDL SDL
|
|
|
|
hal libcap glib kernel python alsaLib curl pam xorriso makeself perl jdk
|
|
|
|
pkgconfig which libXmu
|
|
|
|
];
|
2009-04-12 23:59:40 +02:00
|
|
|
|
2012-02-23 23:04:54 +01:00
|
|
|
patchPhase = ''
|
2009-04-12 23:59:40 +02:00
|
|
|
set -x
|
|
|
|
MODULES_BUILD_DIR=`echo ${kernel}/lib/modules/*/build`
|
2012-02-23 23:04:54 +01:00
|
|
|
sed -e 's@/lib/modules/`uname -r`/build@'$MODULES_BUILD_DIR@ \
|
|
|
|
-e 's@MKISOFS --version@MKISOFS -version@' \
|
2009-04-12 23:59:40 +02:00
|
|
|
-i configure
|
|
|
|
ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2
|
2009-04-15 14:16:50 +02:00
|
|
|
ls kBuild/bin/linux.amd64/k* tools/linux.amd64/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2
|
2011-08-06 22:52:11 +02:00
|
|
|
find . -type f | xargs sed 's/depmod -a/true/' -i
|
2009-04-12 23:59:40 +02:00
|
|
|
export USER=nix
|
|
|
|
set +x
|
2012-02-23 23:04:54 +01:00
|
|
|
'';
|
2009-04-12 23:59:40 +02:00
|
|
|
|
|
|
|
configurePhase = ''
|
2011-01-31 10:42:48 +01:00
|
|
|
./configure --with-qt4-dir=${qt4} --disable-python --disable-pulse --disable-hardening --with-mkisofs=${xorriso}/bin/xorrisofs
|
2009-04-12 23:59:40 +02:00
|
|
|
sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${libIDL}/lib/pkgconfig:${glib}/lib/pkgconfig ${libIDL}/bin/libIDL-config-2@' \
|
|
|
|
-i AutoConfig.kmk
|
|
|
|
sed -e 's@arch/x86/@@' \
|
|
|
|
-i Config.kmk
|
2010-11-20 11:41:53 +01:00
|
|
|
substituteInPlace Config.kmk --replace "VBOX_WITH_TESTCASES = 1" "#"
|
2009-04-12 23:59:40 +02:00
|
|
|
cat >> AutoConfig.kmk << END_PATHS
|
|
|
|
VBOX_PATH_APP_PRIVATE := $out
|
|
|
|
VBOX_PATH_APP_DOCS := $out/doc
|
2011-01-31 10:42:48 +01:00
|
|
|
VBOX_JAVA_HOME := ${jdk}
|
2009-04-12 23:59:40 +02:00
|
|
|
END_PATHS
|
2011-01-31 10:42:48 +01:00
|
|
|
echo "VBOX_WITH_DOCS :=" >> LocalConfig.kmk
|
2011-01-02 19:43:27 +01:00
|
|
|
echo "VBOX_WITH_WARNINGS_AS_ERRORS :=" >> LocalConfig.kmk
|
2009-04-12 23:59:40 +02:00
|
|
|
'';
|
|
|
|
|
2009-04-14 15:29:19 +02:00
|
|
|
buildPhase = ''
|
2009-04-12 23:59:40 +02:00
|
|
|
source env.sh
|
|
|
|
kmk
|
|
|
|
cd out/linux.*/release/bin/src
|
|
|
|
export KERN_DIR=${kernel}/lib/modules/*/build
|
|
|
|
make
|
|
|
|
cd ../../../../..
|
2009-04-14 15:29:19 +02:00
|
|
|
'';
|
2009-04-12 23:59:40 +02:00
|
|
|
|
|
|
|
installPhase = ''
|
2009-10-08 14:57:05 +02:00
|
|
|
# Install VirtualBox files
|
2009-04-12 23:59:40 +02:00
|
|
|
cd out/linux.*/release/bin
|
|
|
|
ensureDir $out/virtualbox
|
|
|
|
cp -av * $out/virtualbox
|
2009-10-08 14:57:05 +02:00
|
|
|
|
|
|
|
# Install kernel module
|
2009-04-12 23:59:40 +02:00
|
|
|
cd src
|
|
|
|
kernelVersion=$(cd ${kernel}/lib/modules; ls)
|
|
|
|
export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
|
2010-02-18 15:04:22 +01:00
|
|
|
|
|
|
|
# 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
|
2009-04-12 23:59:40 +02:00
|
|
|
make install
|
2009-10-08 14:57:05 +02:00
|
|
|
|
|
|
|
# Create wrapper script
|
2009-04-14 15:29:19 +02:00
|
|
|
ensureDir $out/bin
|
2009-04-16 15:44:06 +02:00
|
|
|
cp -v ${./VBox.sh} $out/bin/VBox.sh
|
2009-04-14 15:29:19 +02:00
|
|
|
sed -i -e "s|@INSTALL_PATH@|$out/virtualbox|" \
|
|
|
|
-e "s|@QT4_PATH@|${qt4}/lib|" \
|
|
|
|
-e "s|which|${which}/bin/which|" \
|
2010-08-06 12:34:34 +02:00
|
|
|
-e "s|awk|${gawk}/bin/awk|" \
|
2009-04-14 15:29:19 +02:00
|
|
|
$out/bin/VBox.sh
|
|
|
|
chmod 755 $out/bin/VBox.sh
|
|
|
|
for file in VirtualBox VBoxManage VBoxSDL
|
|
|
|
do
|
|
|
|
[ -f "$out/virtualbox/$file" ] && ln -sfv $out/bin/VBox.sh $out/bin/$file
|
|
|
|
done
|
2009-10-08 14:57:05 +02:00
|
|
|
|
|
|
|
# Create and fix desktop item
|
2009-04-14 15:29:19 +02:00
|
|
|
ensureDir $out/share/applications
|
2009-10-08 14:57:05 +02:00
|
|
|
sed -i -e "s|Icon=VBox|Icon=$out/virtualbox/VBox.png|" $out/virtualbox/virtualbox.desktop
|
2009-09-11 14:43:35 +02:00
|
|
|
ln -sfv $out/virtualbox/virtualbox.desktop $out/share/applications
|
2009-04-12 23:59:40 +02:00
|
|
|
'';
|
|
|
|
|
|
|
|
meta = {
|
|
|
|
description = "PC emulator";
|
|
|
|
homepage = http://www.virtualbox.org/;
|
2009-09-11 14:24:32 +02:00
|
|
|
maintainers = [ lib.maintainers.sander ];
|
2009-09-16 16:56:53 +02:00
|
|
|
platforms = lib.platforms.linux;
|
2009-04-12 23:59:40 +02:00
|
|
|
};
|
|
|
|
}
|