VirtualBox

Changeset 57812 in vbox for trunk/src/VBox/Installer/linux


Ignore:
Timestamp:
Sep 17, 2015 6:09:28 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
102761
Message:

Installer/linux: rework service handling in RPM to use shared scripts and add systemd support.

Location:
trunk/src/VBox/Installer/linux
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/linux/Makefile.kmk

    r57809 r57812  
    210210          ExtensionPacks/VNC/ExtPack-license.rtf \
    211211          ExtensionPacks/VNC/ExtPack-license.txt,) \
     212        postinst-common.sh \
     213        prerm-common.sh \
     214        routines.sh \
    212215        VBoxSysInfo.sh \
    213216        vboxautostart-service.sh \
  • trunk/src/VBox/Installer/linux/install.sh

    r57809 r57812  
    348348    fi
    349349
    350     cp uninstall.sh routines.sh $INSTALLATION_DIR
    351     echo "routines.sh" >> $CONFIG_DIR/$CONFIG_FILES
     350    cp uninstall.sh $INSTALLATION_DIR
    352351    echo "uninstall.sh" >> $CONFIG_DIR/$CONFIG_FILES
    353352
  • trunk/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec

    r57809 r57812  
    171171  mv accessible $RPM_BUILD_ROOT/usr/lib/virtualbox
    172172fi
    173 install -D -m 755 vboxdrv.init $RPM_BUILD_ROOT%{_initrddir}/vboxdrv
    174 ln -sf %{_initrddir}/vboxdrv $RPM_BUILD_ROOT/sbin/rcvboxdrv
    175 install -D -m 755 vboxballoonctrl-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxballoonctrl-service
    176 install -D -m 755 vboxautostart-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxautostart-service
    177 install -D -m 755 vboxweb-service.init $RPM_BUILD_ROOT%{_initrddir}/vboxweb-service
    178 %if %{?rpm_suse:1}%{!?rpm_suse:0}
    179 ln -sf ../etc/init.d/vboxballoonctrl-service $RPM_BUILD_ROOT/sbin/rcvboxballoonctrl-service
    180 ln -sf ../etc/init.d/vboxautostart-service $RPM_BUILD_ROOT/sbin/rcvboxautostart-service
    181 ln -sf ../etc/init.d/vboxweb-service $RPM_BUILD_ROOT/sbin/rcvboxweb-service
    182 %endif
     173mv vboxdrv.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     174ln -sf /usr/lib/virtualbox/vboxdrv.sh $RPM_BUILD_ROOT/sbin/rcvboxdrv
     175mv vboxballoonctrl-service.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     176ln -sf /usr/lib/virtualbox/vboxballoonctrl-service.sh $RPM_BUILD_ROOT/sbin/rcvboxballoonctrl-service
     177mv vboxautostart-service.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     178ln -sf /usr/lib/virtualbox/vboxautostart-service.sh $RPM_BUILD_ROOT/sbin/rcvboxautostart-service
     179mv vboxweb-service.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     180ln -sf /usr/lib/virtualbox/vboxweb-service.sh $RPM_BUILD_ROOT/sbin/rcvboxweb-service
     181mv postinst-common.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     182mv prerm-common.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
     183mv routines.sh $RPM_BUILD_ROOT/usr/lib/virtualbox
    183184ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBox
    184185ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualbox
     
    207208[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
    208209
    209 # check for active VMs of the installed (old) package
    210 VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
    211 if [ -n "$VBOXSVC_PID" ]; then
    212   # executed before the new package is installed!
    213   if [ -f /etc/init.d/vboxballoonctrl-service ]; then
    214     # try graceful termination; terminate the balloon control service first
    215     /etc/init.d/vboxballoonctrl-service stop 2>/dev/null || true
    216   fi
    217   if [ -f /etc/init.d/vboxautostart-service ]; then
    218     # try graceful termination; terminate the autostart service first
    219     /etc/init.d/vboxautostart-service stop 2>/dev/null || true
    220   fi
    221   if [ -f /etc/init.d/vboxweb-service ]; then
    222     # try graceful termination; terminate the webservice first
    223     /etc/init.d/vboxweb-service stop 2>/dev/null || true
    224   fi
    225   # ask the daemon to terminate immediately
    226   kill -USR1 $VBOXSVC_PID
    227   sleep 1
    228   if pidof VBoxSVC > /dev/null 2>&1; then
    229     echo "A copy of VirtualBox is currently running.  Please close it and try again."
    230     echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
    231     echo "the VBoxSVC daemon) to finish running."
    232     exit 1
    233   fi
    234 fi
    235 
    236210# check for old installation
    237211if [ -r /etc/vbox/vbox.cfg ]; then
     
    246220fi
    247221
     222# check for active VMs of the installed (old) package
     223# Execute the installed packages pre-uninstaller if present.
     224/usr/lib/virtualbox/prerm-common.sh 2>/dev/null
     225# Stop services from older versions without pre-uninstaller.
     226/etc/init.d/vboxballoonctrl-service stop 2>/dev/null
     227/etc/init.d/vboxautostart-service stop 2>/dev/null
     228/etc/init.d/vboxweb-service stop 2>/dev/null
     229VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
     230if [ -n "$VBOXSVC_PID" ]; then
     231  # ask the daemon to terminate immediately
     232  kill -USR1 $VBOXSVC_PID
     233  sleep 1
     234  if pidof VBoxSVC > /dev/null 2>&1; then
     235    echo "A copy of VirtualBox is currently running.  Please close it and try again."
     236    echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
     237    echo "the VBoxSVC daemon) to finish running."
     238    exit 1
     239  fi
     240fi
     241
    248242# XXX remove old modules from previous versions (disable with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox)
    249243if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
     
    290284# and /dev/vboxdrv and /dev/vboxusb/*/* device nodes
    291285install_device_node_setup root 0600 /usr/share/virtualbox "${usb_group}"
    292 %if %{?rpm_redhat:1}%{!?rpm_redhat:0}
    293 /sbin/chkconfig --add vboxdrv
    294 /sbin/chkconfig --add vboxballoonctrl-service
    295 /sbin/chkconfig --add vboxautostart-service
    296 /sbin/chkconfig --add vboxweb-service
    297 %endif
    298 %if %{?rpm_suse:1}%{!?rpm_suse:0}
    299 %{fillup_and_insserv -f -y -Y vboxdrv vboxballoonctrl-service vboxautostart-service vboxweb-service}
    300 %endif
    301286%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
    302287/sbin/ldconfig
    303 %_post_service vboxdrv
    304 %_post_service vboxballoonctrl-service
    305 %_post_service vboxautostart-service
    306 %_post_service vboxweb-service
    307288%update_menus
    308289%endif
     
    335316fi
    336317if [ $BUILD_MODULES -eq 1 ]; then
    337   /etc/init.d/vboxdrv setup || true
     318  /sbin/rcvboxdrv setup || true
    338319else
    339320  if lsmod | grep -q "vboxdrv[^_-]"; then
    340     /etc/init.d/vboxdrv stop || true
     321    /sbin/rcvboxdrv stop || true
    341322  fi
    342323  if [ $REGISTER_MODULES -eq 1 ]; then
     
    346327    fi
    347328  fi
    348   /etc/init.d/vboxdrv start > /dev/null
    349 fi
    350 /etc/init.d/vboxballoonctrl-service start > /dev/null
    351 /etc/init.d/vboxautostart-service start > /dev/null
    352 /etc/init.d/vboxweb-service start > /dev/null
     329fi
     330# Install and start the new service scripts.
     331/usr/lib/virtualbox/prerm-common.sh
     332/usr/lib/virtualbox/postinst-common.sh /usr/lib/virtualbox --start > /dev/null
    353333
    354334
     
    357337# $1==1: install the first time
    358338# $1>=2: upgrade
    359 %if %{?rpm_suse:1}%{!?rpm_suse:0}
    360 %stop_on_removal vboxballoonctrl-service
    361 %stop_on_removal vboxautostart-service
    362 %stop_on_removal vboxweb-service
    363 %endif
    364 %if %{?rpm_mdv:1}%{!?rpm_mdv:0}
    365 %_preun_service vboxballoonctrl-service
    366 %_preun_service vboxautostart-service
    367 %_preun_service vboxweb-service
    368 %endif
    369 %if %{?rpm_redhat:1}%{!?rpm_redhat:0}
    370339if [ "$1" = 0 ]; then
    371   /sbin/service vboxballoonctrl-service stop > /dev/null
    372   /sbin/chkconfig --del vboxballoonctrl-service
    373   /sbin/service vboxautostart-service stop > /dev/null
    374   /sbin/chkconfig --del vboxautostart-service
    375   /sbin/service vboxweb-service stop > /dev/null
    376   /sbin/chkconfig --del vboxweb-service
    377 fi
    378 %endif
    379 
    380 if [ "$1" = 0 ]; then
    381   # check for active VMs
    382   VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
    383   if [ -n "$VBOXSVC_PID" ]; then
    384     kill -USR1 $VBOXSVC_PID
    385     sleep 1
    386     if pidof VBoxSVC > /dev/null 2>&1; then
    387       echo "A copy of VirtualBox is currently running.  Please close it and try again."
    388       echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
    389       echo "the VBoxSVC daemon) to finish running."
    390       exit 1
    391     fi
    392   fi
    393 fi
    394 %if %{?rpm_suse:1}%{!?rpm_suse:0}
    395 %stop_on_removal vboxdrv
    396 %endif
    397 %if %{?rpm_mdv:1}%{!?rpm_mdv:0}
    398 %_preun_service vboxdrv
    399 %endif
    400 if [ "$1" = 0 ]; then
    401 %if %{?rpm_redhat:1}%{!?rpm_redhat:0}
    402   /sbin/service vboxdrv stop > /dev/null
    403   /sbin/chkconfig --del vboxdrv
    404 %endif
     340  /usr/lib/virtualbox/prerm-common.sh || exit 1
    405341  rm -f /etc/udev/rules.d/60-vboxdrv.rules
    406342  rm -f /etc/vbox/license_agreed
     
    414350
    415351%postun
    416 %if %{?rpm_redhat:1}%{!?rpm_redhat:0}
    417 if [ "$1" -ge 1 ]; then
    418   /sbin/service vboxdrv restart > /dev/null 2>&1
    419   /sbin/service vboxballoonctrl-service restart > /dev/null 2>&1
    420   /sbin/service vboxautostart-service restart > /dev/null 2>&1
    421   /sbin/service vboxweb-service restart > /dev/null 2>&1
    422 fi
    423 %endif
    424 %if %{?rpm_suse:1}%{!?rpm_suse:0}
    425 %restart_on_update vboxdrv vboxballoonctrl-service vboxautostart-service vboxweb-service
    426 %insserv_cleanup
    427 %endif
    428352%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
    429353/sbin/ldconfig
     
    447371%doc UserManual*.pdf
    448372%doc %{!?is_ose: VirtualBox*.chm}
    449 %{_initrddir}/vboxdrv
    450 %{_initrddir}/vboxballoonctrl-service
    451 %{_initrddir}/vboxautostart-service
    452 %{_initrddir}/vboxweb-service
    453373%{?rpm_suse: %{py_sitedir}/*}
    454374%{!?rpm_suse: %{python_sitelib}/*}
    455375/sbin/rcvboxdrv
    456 %{?rpm_suse: /sbin/rcvboxballoonctrl-service}
    457 %{?rpm_suse: /sbin/rcvboxautostart-service}
    458 %{?rpm_suse: /sbin/rcvboxweb-service}
     376/sbin/rcvboxballoonctrl-service
     377/sbin/rcvboxautostart-service
     378/sbin/rcvboxweb-service
    459379/etc/vbox
    460380/usr/bin/*
  • trunk/src/VBox/Installer/linux/rpm/rules

    r57809 r57812  
    249249            -e "s|%VERSION%|$(VBOX_VERSION_STRING)|g" \
    250250            -e "s|%GROUP%|$(if $(VBOX_WITHOUT_HARDENING),vboxusers,root)|g" \
    251             vboxdrv.sh.in > $(archdir)/vboxdrv.init
    252         cp vboxballoonctrl-service.sh $(archdir)/vboxballoonctrl-service.init
    253         cp vboxautostart-service.sh $(archdir)/vboxautostart-service.init
    254         cp vboxweb-service.sh $(archdir)/vboxweb-service.init
     251            vboxdrv.sh.in > $(archdir)/vboxdrv.sh
     252        cp vboxballoonctrl-service.sh $(archdir)
     253        cp vboxautostart-service.sh $(archdir)
     254        cp vboxweb-service.sh $(archdir)
    255255        cp VBox.sh $(archdir)
    256256        mv rpm/VirtualBox-$(ver) rpm/$(rpmname)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette