You are not logged in.

#1 2009-05-12 16:05:24

Synss
Member
From: Germany
Registered: 2009-04-14
Posts: 15

Compile open-vm-tools and open-vm-modules for x86_64

Before anything, the packages open-vm-* are in community, they should be available for x86_64 when that maintainer decides it is time. Before going through this how to, search for the packages in pacman, if they are not present, good luck following my step by step.

- Get the PKGBUILD from abs repository for i686 -

sudo -e /etc/abs.conf

Change these two lines (only)

ARCH="i686"
REPOS=(community)
sudo abs

mkdir -p ~/arch.abs
cd ~/arch.abs
mkdir -p community/{system,modules}
cp -R {/var/abs/,}community/system/open-vm-tools/
cp -R {/var/abs/,}community/modules/open-vm-tools-modules/

Now, you may want to revert the changes in /etc/abs.conf.

- Enable Unity -

Since we are going to build the package, I chose to make it depend on uriparser, which is in AUR and provides support for unity.

mkdir -p aur/uriparser
cd aur/uriparser
wget aur.archlinux.org/packages/uriparser/uriparser/PKGBUILD

note that the dep on libxss is also necessary for unity.

- Enable DnD V3 protocol -

I do not know what the difference is and the old protocol is still supported. Feel free to either add a dep on gtkmm or live without: no gtkmm dep and configure with --without-gtkmm

- Disable support for nicinfo -

libdnet needs to be compiled with -fPIC to be linked properly by open-vm-tools

- review, patch PKGBUILD, compile and install -

still in the directory for uriparser
makepkg -s
sudo pacman -U --asdeps uriparser-*.pkg.tar.gz

change to the dir for open-vm-modules
patch PKGBUILD:

--- PKGBUILD-orig    2009-05-12 15:39:05.671978827 +0200
+++ PKGBUILD    2009-05-12 19:33:12.104432747 +0200
@@ -6,15 +6,15 @@
 pkgver=2009.04.23
 _pkgsubver=162451
 _kernver=`pacman -Q kernel26 | cut -d . -f 3 | cut -f 1 -d -`
-pkgrel=1
+pkgrel=1_ML
 pkgdesc="The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools."
-arch=('i686')
+arch=('x86_64')
 url="http://open-vm-tools.sourceforge.net/"
 license=('GPL')
-makedepends=('libdnet' 'icu')
+makedepends=('glib2' 'gtk2' 'libx11' 'libxss' 'libdnet' 'icu' 'uriparser')
 depends=("kernel26>=2.6.${_kernver}" "kernel26<2.6.`expr ${_kernver} + 1`")
 install=$pkgname.install
-source=(http://easynews.dl.sourceforge.net/sourceforge/open-vm-tools/open-vm-tools-$pkgver-${_pkgsubver}.tar.gz)
+source=(http://download.sourceforge.net/sourceforge/open-vm-tools/open-vm-tools-$pkgver-${_pkgsubver}.tar.gz)
 md5sums=('3ccdf1d0b45926ca98740994b8e52cdc')
 
 build() {
@@ -23,7 +23,7 @@
 
   cd "$srcdir/open-vm-tools-$pkgver-${_pkgsubver}"
 
-  ./configure --prefix=/usr --disable-unity
+  ./configure --prefix=/usr --without-gtkmm --disable-docs
 
   (cd modules && make modules) || return 1

makepkg -s
sudo pacman -U --asdeps open-vm-modules-*.pkg.tar.gz

change to the dir for open-vm-tools
Add the two patches I provide in the next forum post and patch PKGBUILD

--- PKGBUILD-orig    2009-05-12 15:34:08.422037378 +0200
+++ PKGBUILD    2009-05-13 09:36:44.884151938 +0200
@@ -5,24 +5,31 @@
 pkgname=open-vm-tools
 pkgver=2009.04.23
 _pkgsubver=162451
-pkgrel=4
+pkgrel=4_ML
 pkgdesc="The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools."
-arch=('i686')
+arch=('x86_64')
 url="http://open-vm-tools.sourceforge.net/"
 license=('LGPL')
-depends=('open-vm-tools-modules' 'libdnet' 'icu' 'procps')
-optdepends=('gtkmm' 'libnotify' 'libxtst')
+depends=('open-vm-tools-modules' 'icu' 'procps' 'uriparser')
+optdepends=('doxygen' 'gtkmm' 'libdnet' 'libnotify' 'libxtst')
 install=$pkgname.install
-source=(http://switch.dl.sourceforge.net/$pkgname/$pkgname-$pkgver-${_pkgsubver}.tar.gz)
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver-${_pkgsubver}.tar.gz)
 md5sums=('3ccdf1d0b45926ca98740994b8e52cdc')
 
 build() {
   cd "$srcdir/$pkgname-$pkgver-${_pkgsubver}"
 
-  ./configure --prefix=/usr --disable-unity --without-kernel-modules
+  # libdnet fails to link, requires -fPIC C[XX]FLAGS
+  # doc fail, wrong dir (build instead of api/build)
+  ./configure --prefix=/usr --without-kernel-modules --without-dnet --disable-docs
+
   make || return 1
   make install DESTDIR=$pkgdir || return 1
 
+  cd $pkgdir
+  patch -Np1 -i ../suspend-vm-default.patch || return 1
+  patch -Np1 -i ../resume-vm-default.patch || return 1
+
   ln -fs /usr/sbin/mount.vmhgfs $pkgdir/sbin/mount.vmhgfs || return 1
 
   install -D -m 755 $startdir/open-vm-tools.rc.d $pkgdir/etc/rc.d/open-vm-tools && \

makepkg -s
sudo pacman -U open-vm-tools-*.pkg.tar.gz

Last edited by Synss (2009-05-13 07:38:42)

Offline

#2 2009-05-12 21:56:18

Synss
Member
From: Germany
Registered: 2009-04-14
Posts: 15

Re: Compile open-vm-tools and open-vm-modules for x86_64

- Patches -

Some files in /etc/vmware-tools also need patching (which should be done before installation) because Archlinux uses BSD-style network scripts instead of the sysv init scripts vmware expects (which is a reasonable expectation on GNU/Linux!)

Put these files in the same directory as the PKGBUILD for open-vm-tools

suspend-vm-default.patch

--- pkg/etc/vmware-tools/suspend-vm-default-orig    2009-05-13 08:55:15.597688761 +0200
+++ pkg/etc/vmware-tools/suspend-vm-default    2009-05-13 08:56:11.771255575 +0200
@@ -25,37 +25,6 @@
 echo `date` ": Executing '$0'"
 echo
 
-find_networking_script() {
-    local script="error"
-    for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do
-        if [ -d "$dir/rc0.d" ] &&
-        [ -d "$dir/rc1.d" ] &&
-        [ -d "$dir/rc2.d" ] &&
-        [ -d "$dir/rc3.d" ] &&
-        [ -d "$dir/rc4.d" ] &&
-        [ -d "$dir/rc5.d" ] &&
-        [ -d "$dir/rc6.d" ]; then
-
-        # Now find the appropriate networking script.
-        if [ -d "$dir/init.d" ]; then
-        if [ -x "$dir/init.d/network" ]; then
-            script="$dir/init.d/network"
-        elif [ -x "$dir/init.d/networking" ]; then
-            script="$dir/init.d/networking"
-        fi
-        else
-        if [ -x "$dir/network" ]; then
-            script="$dir/network"
-        elif [ -x "$dir/networking" ]; then
-            script="$dir/networking"
-        fi
-        fi
-        fi
-    done
-
-    echo "$script"
-}
-
 save_active_NIC_list() {
     ifconfig_path=`which ifconfig 2>/dev/null`
     if [ $? ]; then
@@ -76,7 +45,7 @@
 
 save_active_NIC_list
 
-network=`find_networking_script`
+network=/etc/rc.d/network
 if [ "$network" != "error" ]; then
    "$network" stop
    # If the network is down, this may fail but that's not a good reason

resume-vm-default.patch

--- pkg/etc/vmware-tools/resume-vm-default-orig    2009-05-13 08:57:19.359887162 +0200
+++ pkg/etc/vmware-tools/resume-vm-default    2009-05-13 08:58:01.385676276 +0200
@@ -25,37 +25,6 @@
 echo `date` ": Executing '$0'"
 echo
 
-find_networking_script() {
-    local script="error"
-    for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do
-        if [ -d "$dir/rc0.d" ] &&
-        [ -d "$dir/rc1.d" ] &&
-        [ -d "$dir/rc2.d" ] &&
-        [ -d "$dir/rc3.d" ] &&
-        [ -d "$dir/rc4.d" ] &&
-        [ -d "$dir/rc5.d" ] &&
-        [ -d "$dir/rc6.d" ]; then
-
-        # Now find the appropriate networking script.
-        if [ -d "$dir/init.d" ]; then
-        if [ -x "$dir/init.d/network" ]; then
-            script="$dir/init.d/network"
-        elif [ -x "$dir/init.d/networking" ]; then
-            script="$dir/init.d/networking"
-        fi
-        else
-        if [ -x "$dir/network" ]; then
-            script="$dir/network"
-        elif [ -x "$dir/networking" ]; then
-            script="$dir/networking"
-        fi
-        fi
-        fi
-    done
-
-    echo "$script"
-}
-
 rescue_NIC() {
    niclist="/var/run/vmware-active-nics"
 
@@ -88,7 +57,7 @@
 # main
 #
 
-network=`find_networking_script`
+network=/etc/rc.d/network
 if [ "$network" != "error" ]; then
    "$network" restart
    # Continue even if the networking init script wasn't successful.

Last edited by Synss (2009-05-13 07:32:35)

Offline

#3 2009-05-12 22:09:55

Synss
Member
From: Germany
Registered: 2009-04-14
Posts: 15

Re: Compile open-vm-tools and open-vm-modules for x86_64

- Make use of all that -

start /etc/rc.d/open-vm-tools (and add it to rc.conf)

Useful info is provided at http://open-vm-tools.wiki.sourceforge.net/Packaging
But in short, you need to have an instance of vmware-user to be started for copy-paste between the host and the guest under X. I tested, it works.
Mounting the host FS also works.
specifiying xorg.conf the vmmouse driver in xorg.conf (after installation with pacman) works.
vmxnet is not loaded automatically but can be loaded manually (modprobe) in any case, I had no problem with networking from within the VM.
Even Unity works (also needs vmware-user).

That is Perfect!!

Offline

Board footer

Powered by FluxBB