#!/bin/sh # ME=$(readlink -f "$0") MEDIR=${ME%/*} EXT=open-vm-tools . $MEDIR/phase-default-init.sh DEPS="glibc_apps libtool-dev icu-dev libtirpc-dev procps-ng-dev glib2-dev gtkmm-dev gtk3-dev glibmm-dev gdk-pixbuf2-dev Xorg-7.7-3d-dev libSM-dev libXau-dev libdnet-dev" # DEPS needed for deploypkg and pam linux-pam-dev libmspack-dev test "$KBITS" = "64" && DEPS="$DEPS fuse-dev" || DEPS="$DEPS fuse" . $MEDIR/phase-default-deps.sh . $MEDIR/phase-cc-opts-flto.sh export LDFLAGS="-lm -ltirpc" #export CFLAGS="-std=c17" #export CXXFLAGS="-std=c++11" #####autoreconf -i export RPCGEN=$(readlink -f $(which rpcgen)) export RPCGENFLAGS="-Y $(dirname $(which cpp))" #for a in $(grep -r -l vmware-tools *); do sed -i -e "s/vmware-tools/$EXT/g" $a; done sed -i -e '/vmware_drv.so/s#/usr/lib#/usr/local/lib#' services/plugins/resolutionSet/resolutionCommon.c sed -i -e '/^CFLAGS/s/-Werror/-Wno-error -Wno-unused-result/' configure test "$KBITS" = "32" && sudo sed -i -e '661s/ gobject/ \&gobject/' /usr/local/include/glibmm-2.4/glibmm/threads.h ### create Makefiles ./configure \ --prefix=/usr/local \ --localstatedir=/var \ --sysconfdir=/etc \ --disable-glibc-check \ --disable-static \ --without-xerces \ --without-xmlsecurity \ --without-xmlsec1 \ --without-xml2 \ --disable-deploypkg \ --without-pam \ --enable-resolutionkms \ --with-x \ || exit ### compile open-vm-tools . $MEDIR/phase-default-make.sh . $MEDIR/phase-default-make-install.sh sudo chown -R tc.staff /tmp/$EXT ### create tcz extension onload script mkdir -p $TCZ/usr/local/tce.installed cat > $TCZ/usr/local/tce.installed/$EXT < $TCZ/usr/local/etc/init.d/$EXT <<'EOF' #!/bin/sh # Start, stop, and restart vmtoolsd grep -q user_allow_other /etc/fuse.conf || echo "user_allow_other" >>/etc/fuse.conf case "$1" in start) # Interface check NIF1=$(wc -l < /proc/net/dev) # Load vmblock vmblock_dev=/tmp/VMwareDnD vmblockfusemntpt=/var/run/vmblock-fuse [ -d $vmblock_dev ] || mkdir -m 1777 -p $vmblock_dev if grep -q "$vmblockfusemntpt" /etc/mtab; then true else mkdir -m 1777 -p $vmblockfusemntpt vmware-vmblock-fuse -o subtype=vmware-vmblock,default_permissions,allow_other $vmblockfusemntpt fi # Start vmtoolsd if pidof vmtoolsd &>/dev/null; then echo vmtoolsd already running else rm -f /var/run/vmtoolsd.pid /usr/local/bin/vmtoolsd --background=/var/run/vmtoolsd.pid fi # add the following to .xession after mouse initialization if .xsession doesn't run scripts in /usr/local/etc/X.d # [ $(which vmware-checkvm) ] && # [ vmware-checkvm ] && # vmware-user # Use ethtool to optimize vmxnet if which ethtool &> /dev/null; then for e in $(grep eth /proc/net/dev|cut -d: -f1); do ethtool -K $e gso on &> /dev/null ethtool -K $e tso on &> /dev/null done fi # Start DHCP client for new interfaces if ! grep -q nodhcp /proc/cmdline; then NIF2=$(wc -l < /proc/net/dev) if [ $NIF2 -gt $NIF1 ]; then /etc/init.d/dhcp.sh fi fi ;; stop) if pidof vmtoolsd &>/dev/null; then killall vmtoolsd echo stopped vmtoolsd umount -l /mnt/hgfs else echo vmtoolsd is not running fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac EOF chmod 775 $TCZ/usr/local/etc/init.d/$EXT mkdir -p $TCZ/etc/profile.d cat >$TCZ/etc/profile.d/$EXT.sh <<'EOF' # Mount vmhgfs now a userspace program # /dev/fuse needs to be writable to user # /mnt/hgfs-* needs to be a directory and 777 if [ vmware-checkvm ]; then for a in $(vmware-hgfsclient); do vmhgfsmntpt=/mnt/hgfs-$a if grep -q $vmhgfsmntpt /etc/mtab; then sudo umount -f -l $vmhgfsmntpt fi if [ -e $vmhgfsmntpt ]; then if [ -d $vmhgfsmntpt ]; then sudo chmod 777 $vmhgfsmntpt else sudo rm -f $vmhgfsmntpt sudo mkdir -m 777 -p $vmhgfsmntpt fi else sudo mkdir -m 777 -p $vmhgfsmntpt fi vmhgfs-fuse -o allow_other .host:/$a /mnt/hgfs-$a done fi EOF mkdir -p $TCZ-desktop/usr/local/etc/X.d cat >$TCZ-desktop/usr/local/etc/X.d/$EXT <<'EOF' [ $(which vmware-checkvm) ] && [ vmware-checkvm ] && vmware-user EOF ### create -dev directory if anyone ever wants it mkdir -p $TCZ-dev/usr/local/lib mv $TCZ/usr/local/share $TCZ-dev/usr/local mv $TCZ/usr/local/include $TCZ-dev/usr/local mv $TCZ/usr/local/lib/pkgconfig $TCZ-dev/usr/local/lib mkdir -p $TCZ-dev/etc mv $TCZ/etc/pam.d $TCZ-dev/etc for a in $(find $TCZ -name '*.la'); do b=$(echo $(dirname $a) | sed "s#$TCZ#$TCZ-dev#") mkdir -p $b mv $a $b done ### fix up files mv $TCZ/lib/udev $TCZ/usr/local/etc rm -rf $TCZ/lib rm -rf $TCZ/sbin mkdir -p $TCZ/etc/vmware-tools/scripts/poweroff-vm-default.d cat >$TCZ/etc/vmware-tools/scripts/poweroff-vm-default.d/99-shutdown <