summaryrefslogblamecommitdiffstats
path: root/src/os-plugins/plugins/vmware/files/install-vmpl.sh
blob: e0795b30f55f415d6c49d09766d16c66765af8a9 (plain) (tree)
1
2
3
4
5
6

         

                                   
                                       
                            







                                                                                          



                     
                             

                                                           
                               

                                                           


                                                                  







                                                    



























































                                                                                                                        
                    








                                            
 


                                            
                                                                                                                              






                                                  
                                                                                                                            
         
                                            
       
    

                                   
                                                                                                                            


                                            
        




                                                     
 





                                                                                                
  
                                                     
                                           

                                                        
















                                                                       
                 
                     

                         
                                             
                                    
                                                                       

                                                 




                                                                   
                                   
                                   



                    


                                                                  












                                                                       
 
                                    
                                   
                                               



                                                    






























                                                                                                   
                    






                                      

                                                                






















                                                                                                                            





                                                                                                                            
 

                                                     
 
                                    

  
#!/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