#!/bin/sh
cd /opt/openslx/plugin-repo/vmware/
### Check if player are still installed
if [ -d ${1}/vmroot/ ]; then
echo " * $1 seems to be installed. There shouldn't be a need for a new installation."
echo " If you want to reinstall $1 press \"y\" else we will exit"
read
if [ "${REPLY}" != "y" ]; then
echo " * $1 is already installed. Nothing to do."
exit
fi
echo " * $1 will be reinstalled"
fi
### Now define values
if [ "$1" = "vmpl1.0" ]; then
vmplversion="vmpl1.0"
tgzfile=$(ls packages/VMware-player-1.0.*|sort|tail -n 1)
elif [ "$1" = "vmpl2.0" ]; then
vmplversion="vmpl2.0"
tgzfile=$(ls packages/VMware-player-2.0.*|sort|tail -n 1)
elif [ "$1" = "vmpl2.5" ]; then
vmplversion="vmpl2.5"
tgzfile=$(ls packages/VMware-Player-2.5.*.bundle|sort|tail -n 1)
else
echo "Attribute of install-vmpl.sh isn't valid!"
echo "This shouldn't happen! Fix vmware.pm!"
exit 1;
fi
### Main installation part
if [ "${vmplversion}" != "vmpl2.5" ]; then
# tgz Installation of vmpl1.0 and vmpl2.0
cd ${vmplversion}
echo " * Unpacking vmplayer ${vmplversion}"
tar xfz ../${tgzfile}
# TODO: errorcheck if tgz wasnt downloaded properly.
# ask on mailinglist if theres a way how to handle it
# in preInstallation() "exit 1" is enough. Perhaps it will work
# here, too. Try first, and then document it in the wiki
# reduce some errors
echo " * deleting old files if available"
rm -rf vmroot
echo " * copying files..."
mkdir vmroot
mkdir -p vmroot/modules
mkdir -p vmroot/lib
mv vmware-player-distrib/lib vmroot/lib/vmware
mv vmware-player-distrib/bin vmroot/
if [ "${vmplversion}" != "vmpl1.0" ]; then
mv vmware-player-distrib/sbin vmroot/
fi
mv vmware-player-distrib/doc vmroot/
rm -rf vmware-player-distrib/
rm -rf vmroot/lib/vmware/modules/binary
echo " * fixing file permission"
chmod 04755 vmroot/lib/vmware/bin/vmware-vmx
# I don't want to understand what vmware is doing, but without this
# step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to
# library hell
echo " * fixing librarys..."
cd vmroot/lib/vmware/lib
mkdir test
mv lib* test
mv test/lib*/* .
rm -rf test
cd ../../../..
echo " * fixing gdk and pango config files"
sed -i \
"s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders
sed -i \
"s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules
sed -i \
"s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/pango/pango.modules
sed -i \
"s,/build/mts/.*/vmui/../libdir/libconf,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/pango/pangorc
sed -i \
"s,/etc/pango/pango/,/etc/pango/," \
vmroot/lib/vmware/libconf/etc/pango/pangorc
echo " * creating /etc/vmware"
rm -rf /etc/vmware
mkdir -p /etc/vmware
echo " * unpacking kernel modules"
cd vmroot/lib/vmware/modules/source
tar xf vmnet.tar
tar xf vmmon.tar
if [ "${vmplversion}" != "vmpl1.0" ]; then
tar xf vmblock.tar
fi
echo " * building vmblock module"
if [ "${vmplversion}" != "vmpl1.0" ]; then
cd vmblock-only/
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmblock.ko vmblock.o ../../../../../modules
cd ..
fi
echo " * building vmmon module"
cd vmmon-only
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmmon.ko vmmon.o ../../../../../modules
cd ..
echo " * building vmnet module"
cd vmnet-only
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmnet.ko vmnet.o ../../../../../modules
cd ../../../../../..
echo " * setting up EULA"
mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt
echo " * finishing installation"
else
# bundle Installation of vmpl2.5
# note: the rpm just include the stupid .bundle file...
cd ${vmplversion}
echo " * Manipulating and extracting vmplayer ${vmplversion} package. this may take a while"
# fool non-root user extraction... just for testing
sed -i 's/ exit 1/ echo 1/' ../${tgzfile}
# don't use deinstallation stuff and checks of /etc...
# and don't modify file size, else it wont work!
sed -i 's/ migrate_networks/ echo te_networks/' ../${tgzfile}
sed -i 's/ uninstall_legacy/ echo tall_legacy/' ../${tgzfile}
sed -i 's/ uninstall_rpm/ echo tall_rpm/' ../${tgzfile}
sed -i 's/ uninstall_bundle/ echo tall_bundle/' ../${tgzfile}
# this won't work as root on our clients... I hope it don't break
# anything on our clients in stage1
sh ../${tgzfile} -x temp
# TODO: errorcheck if rpm wasnt downloaded properly.
# ask on mailinglist if theres a way how to handle it
# in preInstallation() "exit 1" is enough. Perhaps it will work
# here, too. Try first, and then document it in the wiki
# reduce some errors
echo " * deleting old files if available"
rm -rf vmroot
echo " * copying files..."
mkdir -p vmroot
mkdir -p vmroot/lib
mkdir -p vmroot/modules
mv temp/vmware-player/lib vmroot/lib/vmware
mv temp/vmware-player/sbin vmroot/
# the following shouldn't be needed, just to have it 1:1 self-created
# copy of /usr/lib/vmware
# Todo: clean it out when everything is running
mv temp/vmware-installer vmroot/lib/vmware/installer
rm -rf vmroot/lib/vmware/installer/.installer
rm -rf vmroot/lib/vmware/installer/bootstrap
mkdir -p vmroot/lib/vmware/setup
mv temp/vmware-player-setup/vmware-config vmroot/lib/vmware/setup
mv temp/vmware-player/doc vmroot/
mv temp/vmware-player/bin vmroot/
##
## left files/dirs
##
# temp/vmware-player/files/index.theme ... hopefully not needed,
# temp/vmware-player/share => /usr/share ... icons
# temp/vmware-player/etc/... => /etc
# temp/vmware-player/build => unknown... not found...
# etc/vmware/
# bootstrap => Path definitions. confusing due of version 1.0
# which looks like the instller version
# perhaps just for installer... hopefully
# config => path definition, networking, different configurations
# database => sqlite3 db. includes all files mapped to component
# hopefully just used by installer and some path config
# networking => networking config... has options which are in
# dhcpd.conf, hopefully not needed
# vmnet(1|8) => we know it from v1/v2
echo " * fixing file permission"
chmod 755 vmroot/lib/vmware/bin/*
chmod 04755 vmroot/lib/vmware/bin/vmware-vmx
chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-debug
chmod 04755 vmroot/lib/vmware/bin/vmware-vmx-stats
chmod 755 vmroot/bin/*
chmod 755 vmroot/lib/vmware/lib/wrapper-gtk24.sh
# I don't want to understand what vmware is doing, but without this
# step we need to have LD_LIBRARY_PATH with 53 entrys. welcome to
# library hell
# if this fact is still valid for 2.5 is unclear, but lets do it
echo " * fixing librarys..."
cd vmroot/lib/vmware/lib
mkdir test
mv lib* test
mv test/lib*/* .
rm -rf test
cd ../../../..
echo " * fixing gdk and pango config files"
sed -i \
"s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/gtk-2.0/gdk-pixbuf.loaders
sed -i \
"s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/gtk-2.0/gtk.immodules
sed -i \
"s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/pango/pango.modules
sed -i \
"s,@@LIBCONF_DIR@@,/opt/openslx/plugin-repo/vmware/${vmplversion}/vmroot/lib/vmware/libconf," \
vmroot/lib/vmware/libconf/etc/pango/pangorc
sed -i \
"s,/etc/pango/pango/,/etc/pango/," \
vmroot/lib/vmware/libconf/etc/pango/pangorc
echo " * creating /etc/vmware"
rm -rf /etc/vmware
mkdir -p /etc/vmware
echo " * unpacking kernel modules"
cd vmroot/lib/vmware/modules/source
tar xf vmnet.tar
tar xf vmmon.tar
tar xf vmblock.tar
#tar xf vmci.tar # just for 2 or more VMs => not needed
#tar xf vmppuser.tar # we don't need it
tar xf vsock.tar
echo " * building vmblock module"
cd vmblock-only/
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmblock.ko vmblock.o ../../../../../modules
cd ..
echo " * building vmmon module"
cd vmmon-only
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmmon.ko vmmon.o ../../../../../modules
cd ..
echo " * building vmnet module"
cd vmnet-only
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vmnet.ko vmnet.o ../../../../../modules
cd ..
echo " * building vmsock module"
cd vsock-only
sed -i "s%^VM_UNAME = .*%VM_UNAME = $(find /boot/vmlinuz* -maxdepth 0|sed 's,/boot/vmlinuz-,,g'|sort|tail -n 1)%" Makefile
make -s
mv vsock.ko vsock.o ../../../../../modules
cd ../../../../../..
echo " * setting up EULA"
mv vmroot/doc/EULA vmroot/lib/vmware/share/EULA.txt
echo " * finishing installation"
fi