Merge pull request #238 from dysinger/virtualbox-fix-vboxsf-and-vboxservice

VirtualBox Guest Additions fully working
This commit is contained in:
Rob Vermaas 2013-01-02 00:16:45 -08:00
commit df8fc1b452

View File

@ -1,5 +1,6 @@
{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper { stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
, libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor}: , libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor
, dbus }:
let version = "4.2.4"; in let version = "4.2.4"; in
@ -13,7 +14,7 @@ stdenv.mkDerivation {
KERN_DIR = "${kernel}/lib/modules/*/build"; KERN_DIR = "${kernel}/lib/modules/*/build";
buildInputs = [ patchelf cdrkit makeWrapper ]; buildInputs = [ patchelf cdrkit makeWrapper dbus ];
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
@ -56,7 +57,7 @@ stdenv.mkDerivation {
cd .. cd ..
# Change the interpreter for various binaries # Change the interpreter for various binaries
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} for i in sbin/VBoxService bin/{VBoxClient,VBoxControl} lib/VBoxGuestAdditions/mount.vboxsf
do do
${if stdenv.system == "i686-linux" then '' ${if stdenv.system == "i686-linux" then ''
patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 $i patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux.so.2 $i
@ -66,14 +67,12 @@ stdenv.mkDerivation {
'' ''
else throw ("Architecture: "+stdenv.system+" not supported for VirtualBox guest additions") else throw ("Architecture: "+stdenv.system+" not supported for VirtualBox guest additions")
} }
patchelf --set-rpath ${stdenv.gcc.gcc}/lib:${dbus}/lib:${libX11}/lib:${libXt}/lib:${libXext}/lib:${libXmu}/lib:${libXfixes}/lib:${libXrandr}/lib:${libXcursor}/lib $i
done done
# Change rpath for various binaries and libraries
patchelf --set-rpath ${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXt}/lib:${libXext}/lib:${libXmu}/lib:${libXfixes}/lib:${libXrandr}/lib:${libXcursor}/lib bin/VBoxClient
for i in lib/VBoxOGL*.so for i in lib/VBoxOGL*.so
do do
patchelf --set-rpath $out/lib $i patchelf --set-rpath $out/lib:${dbus}/lib $i
done done
# Remove references to /usr from various scripts and files # Remove references to /usr from various scripts and files
@ -82,6 +81,7 @@ stdenv.mkDerivation {
# Install binaries # Install binaries
mkdir -p $out/sbin mkdir -p $out/sbin
install -m 4755 lib/VBoxGuestAdditions/mount.vboxsf $out/sbin/mount.vboxsf
install -m 755 sbin/VBoxService $out/sbin install -m 755 sbin/VBoxService $out/sbin
mkdir -p $out/bin mkdir -p $out/bin