VirtualBox

Changeset 24361 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Nov 5, 2009 12:14:18 AM (15 years ago)
Author:
vboxsync
Message:

Additions/linux/installer: major rewrite of the Linux Additions installer

Location:
trunk/src/VBox
Files:
3 edited

Legend:

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

    r23452 r24361  
    3232# Globals
    3333#
    34 VBOX_LNX_ADD_INS_OUT_DIR           := $(PATH_TARGET)/Additions/Installer/linux
    35 VBOX_PATH_LINUX_ADDITION_INSTALLER := $(PATH_SUB_CURRENT)/installer
    36 VBOX_PATH_X11_ADDITION_INSTALLER   := $(PATH_ROOT)/src/VBox/Additions/x11/Installer
     34
     35# Basic path components
     36VBOX_LNX_ADD_PACKAGE_NAME         := VBoxGuestAdditions
     37VBOX_LNX_ADD_INST_OUT_DIR         := $(PATH_TARGET)/Additions/Installer/linux
     38VBOX_LNX_ADD_INST_DBG_DIR         := $(VBOX_LNX_ADD_INST_OUT_DIR)/debug
     39VBOX_LNX_ADD_INST_STAGE_DIR       := $(VBOX_LNX_ADD_INST_OUT_DIR)/install
     40
     41# Installation paths for binaries and files
     42VBOX_LNX_ADD_INST_BIN_DIR         := $(VBOX_LNX_ADD_INST_OUT_DIR)/bin
     43VBOX_LNX_ADD_INST_SBIN_DIR        := $(VBOX_LNX_ADD_INST_OUT_DIR)/sbin
     44VBOX_LNX_ADD_INST_LIB_DIR         := $(VBOX_LNX_ADD_INST_OUT_DIR)/lib
     45VBOX_LNX_ADD_INST_SHARE_DIR       := $(VBOX_LNX_ADD_INST_OUT_DIR)/share
     46VBOX_LNX_ADD_INST_MOD_DIR         := $(VBOX_LNX_ADD_INST_OUT_DIR)/lib/$(VBOX_LNX_ADD_PACKAGE_NAME)
     47VBOX_LNX_ADD_INST_KMOD_DIR        := $(VBOX_LNX_ADD_INST_OUT_DIR)/src
     48VBOX_LNX_ADD_INST_INIT_DIR        := $(VBOX_LNX_ADD_INST_OUT_DIR)/init
     49
     50# Installation paths for debug symbols
     51VBOX_LNX_ADD_INST_BIN_DBG_DIR     := $(VBOX_LNX_ADD_INST_DBG_DIR)/bin
     52VBOX_LNX_ADD_INST_SBIN_DBG_DIR    := $(VBOX_LNX_ADD_INST_DBG_DIR)/sbin
     53VBOX_LNX_ADD_INST_LIB_DBG_DIR     := $(VBOX_LNX_ADD_INST_DBG_DIR)/lib
     54VBOX_LNX_ADD_INST_MOD_DBG_DIR     := $(VBOX_LNX_ADD_INST_DBG_DIR)/lib/$(VBOX_LNX_ADD_PACKAGE_NAME)
     55
     56# Script source directories
     57VBOX_PATH_LNX_ADD_INST            := $(PATH_SUB_CURRENT)/installer
     58VBOX_REL_LNX_ADD_INST             := $(subst $(PATH_ROOT)/src/VBox, \
     59                ../..,$(VBOX_PATH_LNX_ADD_INST))
     60VBOX_PATH_X11_ADD_INST            := $(PATH_ROOT)/src/VBox/Additions/x11/Installer
     61VBOX_REL_X11_ADD_INST             := $(subst $(PATH_ROOT)/src/VBox, \
     62                ../..,$(VBOX_PATH_X11_ADD_INST))
     63VBOX_PATH_LNX_INST_SRC            := $(PATH_ROOT)/src/VBox/Installer/linux
     64VBOX_REL_LNX_INST_SRC             := $(subst $(PATH_ROOT)/src/VBox, \
     65                ../..,$(VBOX_PATH_LNX_INST_SRC))
     66
     67# Unset this to speed up things during makefile hacking.
     68VBOX_LNX_ADD_INST_DEP_ON_MAKEFILE := $(MAKEFILE_CURRENT)
    3769
    3870
     
    4173#
    4274ifndef VBOX_OSE
    43  BLDDIRS     += $(VBOX_LNX_ADD_INS_OUT_DIR) $(VBOX_LNX_ADD_INS_OUT_DIR)/module
    44  PACKING     += $(PATH_BIN)/additions/VBoxLinuxAdditions.run
     75 BLDDIRS     += \
     76                $(VBOX_LNX_ADD_INST_OUT_DIR) \
     77                $(VBOX_LNX_ADD_INST_BIN_DIR) \
     78                $(VBOX_LNX_ADD_INST_SBIN_DIR) \
     79                $(VBOX_LNX_ADD_INST_LIB_DIR) \
     80                $(VBOX_LNX_ADD_INST_MOD_DIR) \
     81                $(VBOX_LNX_ADD_INST_KMOD_DIR) \
     82                $(VBOX_LNX_ADD_INST_INIT_DIR) \
     83                $(VBOX_LNX_ADD_INST_DBG_DIR) \
     84                $(VBOX_LNX_ADD_INST_BIN_DBG_DIR) \
     85                $(VBOX_LNX_ADD_INST_SBIN_DBG_DIR) \
     86                $(VBOX_LNX_ADD_INST_LIB_DBG_DIR) \
     87                $(VBOX_LNX_ADD_INST_MOD_DBG_DIR) \
     88                $(VBOX_LNX_ADD_INST_STAGE_DIR)
     89 PACKING     += \
     90                $(PATH_BIN)/additions/VBoxLinuxAdditions.run \
     91                $(VBOX_LNX_ADD_INST_STAGE_DIR)/VBoxGuestAdditions.tar.bz2
    4592 OTHER_CLEAN += $(PACKING)
    4693 # OSE only contains the source code for this
     
    53100#
    54101VBOX_ADD_STRIP_BIN += \
    55         VBoxService \
    56         VBoxClient \
    57         VBoxControl \
     102        VBoxControl
     103
     104VBOX_ADD_STRIP_BIN.linux += \
     105        VBoxClient
     106
     107VBOX_ADD_BIN.linux += \
     108        VBoxClient-all \
     109        VBoxRandR
     110
     111VBOX_ADD_STRIP_SBIN += \
     112        VBoxService
     113
     114VBOX_ADD_STRIP_LIB += \
    58115        VBoxOGLarrayspu.so \
    59116        VBoxOGLcrutil.so \
     
    64121        VBoxOGL.so
    65122
    66 VBOX_ADD_STRIP_BIN.linux = \
     123VBOX_ADD_STRIP_MOD.linux = \
    67124        vboxmouse_drv_70.so \
    68125        vboxmouse_drv_71.so \
     
    84141        vboxvideo_drv.o
    85142
    86 VBOX_ADD_MODULES.linux = \
    87         vboxguest \
     143VBOX_ADD_KMOD = \
     144        vboxguest
     145
     146VBOX_ADD_KMOD.linux = \
    88147        vboxvfs \
    89148        vboxvideo_drm
    90149
     150VBOX_ADD_INIT.linux = \
     151        vboxadd \
     152        vboxadd-service \
     153        vboxadd-x11
     154
    91155VBOX_LNX_ADD_STRIP_BIN = $(VBOX_ADD_STRIP_BIN) $(VBOX_ADD_STRIP_BIN.linux)
     156VBOX_LNX_ADD_BIN       = $(VBOX_ADD_BIN) $(VBOX_ADD_BIN.linux)
     157VBOX_LNX_ADD_STRIP_SBIN = $(VBOX_ADD_STRIP_SBIN) $(VBOX_ADD_STRIP_SBIN.linux)
     158VBOX_LNX_ADD_STRIP_LIB = $(VBOX_ADD_STRIP_LIB) $(VBOX_ADD_STRIP_LIB.linux)
     159VBOX_LNX_ADD_STRIP_MOD = $(VBOX_ADD_STRIP_MOD) $(VBOX_ADD_STRIP_MOD.linux)
    92160VBOX_LNX_ADD_STRIP_OBJ = $(VBOX_ADD_STRIP_OBJ) $(VBOX_ADD_STRIP_OBJ.linux)
    93 VBOX_LNX_ADD_MODULES   = $(VBOX_ADD_MODULES) $(VBOX_ADD_MODULES.linux)
    94 
    95 #
    96 # All the bin files that go into the archives.
    97 #
    98 VBOX_LNX_ADD_DBG_SYM_FILES := $(addsuffix .dbgsym,$(VBOX_LNX_ADD_STRIP_BIN))
    99 VBOX_LNX_ADD_INS_FILES := $(addprefix $(VBOX_LNX_ADD_INS_OUT_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN) $(VBOX_LNX_ADD_STRIP_OBJ) $(VBOX_LNX_ADD_DBG_SYM_FILES))
    100 VBOX_LNX_ADD_INS_MODULES := $(addprefix $(VBOX_LNX_ADD_INS_OUT_DIR)/module/,$(VBOX_LNX_ADD_MODULES))
     161VBOX_LNX_ADD_KMOD      = $(VBOX_ADD_KMOD) $(VBOX_ADD_KMOD.linux)
     162VBOX_LNX_ADD_INIT      = $(VBOX_ADD_INIT) $(VBOX_ADD_INIT.linux)
     163
     164VBOX_LNX_ADD_KMOD_VERSIONED := $(addsuffix -$(VBOX_VERSION_STRING),$(VBOX_LNX_ADD_KMOD))
     165
     166#
     167# All the files that go into the archive
     168#
     169VBOX_LNX_ADD_INST_FILES := \
     170        $(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN)) \
     171        $(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR)/,$(VBOX_LNX_ADD_BIN)) \
     172        $(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR)/,$(VBOX_LNX_ADD_STRIP_SBIN)) \
     173        $(addprefix $(VBOX_LNX_ADD_INST_LIB_DIR)/,$(VBOX_LNX_ADD_STRIP_LIB)) \
     174        $(addprefix $(VBOX_LNX_ADD_INST_MOD_DIR)/,$(VBOX_LNX_ADD_STRIP_MOD)) \
     175        $(addprefix $(VBOX_LNX_ADD_INST_MOD_DIR)/,$(VBOX_LNX_ADD_STRIP_OBJ)) \
     176        $(addprefix $(VBOX_LNX_ADD_INST_KMOD_DIR)/,$(VBOX_LNX_ADD_KMOD_VERSIONED)) \
     177        $(addprefix $(VBOX_LNX_ADD_INST_INIT_DIR)/,$(VBOX_LNX_ADD_INIT)) \
     178        $(addprefix $(VBOX_LNX_ADD_INST_BIN_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN)) \
     179        $(addprefix $(VBOX_LNX_ADD_INST_SBIN_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_SBIN)) \
     180        $(addprefix $(VBOX_LNX_ADD_INST_LIB_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_LIB)) \
     181        $(addprefix $(VBOX_LNX_ADD_INST_MOD_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_MOD))
    101182
    102183# Cleanup of the the installer directory files
    103 OTHER_CLEAN += $(VBOX_LNX_ADD_INS_FILES)) $(VBOX_LNX_ADD_INS_MODULES)
    104 
    105 # pattern rule for copying the debug info from the VBOX_LNX_ADD_STRIP_BIN files to the installation directory
    106 $(addprefix $(VBOX_LNX_ADD_INS_OUT_DIR)/,$(VBOX_LNX_ADD_DBG_SYM_FILES)): \
    107                 $(VBOX_LNX_ADD_INS_OUT_DIR)/%.dbgsym : $(PATH_BIN)/additions/% | $$(dir $$@)
     184OTHER_CLEAN += $(VBOX_LNX_ADD_INST_FILES)
     185
     186# pattern rules for copying the debug info from the VBOX_LNX_ADD_STRIP_* files to the installation directory
     187$(addprefix $(VBOX_LNX_ADD_INST_BIN_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN)): \
     188                $(VBOX_LNX_ADD_INST_BIN_DBG_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
    108189        $(call MSG_TOOL,copydbg,$<,$@)
    109190        $(QUIET)objcopy --only-keep-debug $< $@
    110191
     192$(addprefix $(VBOX_LNX_ADD_INST_SBIN_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_SBIN)): \
     193                $(VBOX_LNX_ADD_INST_SBIN_DBG_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
     194        $(call MSG_TOOL,copydbg,$<,$@)
     195        $(QUIET)objcopy --only-keep-debug $< $@
     196
     197$(addprefix $(VBOX_LNX_ADD_INST_LIB_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_LIB)): \
     198                $(VBOX_LNX_ADD_INST_LIB_DBG_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
     199        $(call MSG_TOOL,copydbg,$<,$@)
     200        $(QUIET)objcopy --only-keep-debug $< $@
     201
     202$(addprefix $(VBOX_LNX_ADD_INST_MOD_DBG_DIR)/,$(VBOX_LNX_ADD_STRIP_MOD)): \
     203                $(VBOX_LNX_ADD_INST_MOD_DBG_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
     204        $(call MSG_TOOL,copydbg,$<,$@)
     205        $(QUIET)objcopy --only-keep-debug $< $@
     206
    111207# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_BIN files to the installation directory
    112 $(addprefix $(VBOX_LNX_ADD_INS_OUT_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN)): \
    113                 $(VBOX_LNX_ADD_INS_OUT_DIR)/% : $(PATH_BIN)/additions/% \
    114                 $(VBOX_LNX_ADD_INS_OUT_DIR)/%.dbgsym \
     208$(addprefix $(VBOX_LNX_ADD_INST_BIN_DIR)/,$(VBOX_LNX_ADD_STRIP_BIN)): \
     209                $(VBOX_LNX_ADD_INST_BIN_DIR)/% : $(PATH_BIN)/additions/% \
     210                $(VBOX_LNX_ADD_INST_BIN_DBG_DIR)/% \
    115211                | $$(dir $$@)
    116212        $(call MSG_INST_FILE,$<,$@)
    117213        $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
    118         $(QUIET)objcopy --add-gnu-debuglink=$(addsuffix .dbgsym,$@) $@
     214        $(QUIET)objcopy --add-gnu-debuglink=$@ $@
     215
     216# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_SBIN files to the installation directory
     217$(addprefix $(VBOX_LNX_ADD_INST_SBIN_DIR)/,$(VBOX_LNX_ADD_STRIP_SBIN)): \
     218                $(VBOX_LNX_ADD_INST_SBIN_DIR)/% : $(PATH_BIN)/additions/% \
     219                $(VBOX_LNX_ADD_INST_SBIN_DBG_DIR)/% \
     220                | $$(dir $$@)
     221        $(call MSG_INST_FILE,$<,$@)
     222        $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
     223        $(QUIET)objcopy --add-gnu-debuglink=$@ $@
     224
     225# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_LIB files to the installation directory
     226$(addprefix $(VBOX_LNX_ADD_INST_LIB_DIR)/,$(VBOX_LNX_ADD_STRIP_LIB)): \
     227                $(VBOX_LNX_ADD_INST_LIB_DIR)/% : $(PATH_BIN)/additions/% \
     228                $(VBOX_LNX_ADD_INST_LIB_DBG_DIR)/% \
     229                | $$(dir $$@)
     230        $(call MSG_INST_FILE,$<,$@)
     231        $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
     232        $(QUIET)objcopy --add-gnu-debuglink=$@ $@
     233
     234# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_MOD files to the installation directory
     235$(addprefix $(VBOX_LNX_ADD_INST_MOD_DIR)/,$(VBOX_LNX_ADD_STRIP_MOD)): \
     236                $(VBOX_LNX_ADD_INST_MOD_DIR)/% : $(PATH_BIN)/additions/% \
     237                $(VBOX_LNX_ADD_INST_MOD_DBG_DIR)/% \
     238                | $$(dir $$@)
     239        $(call MSG_INST_FILE,$<,$@)
     240        $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
     241        $(QUIET)objcopy --add-gnu-debuglink=$@ $@
    119242
    120243# pattern rule for stripping and copying the VBOX_LNX_ADD_STRIP_OBJ files to the installation directory
    121 $(addprefix $(VBOX_LNX_ADD_INS_OUT_DIR)/,$(VBOX_LNX_ADD_STRIP_OBJ)): \
    122                 $(VBOX_LNX_ADD_INS_OUT_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
     244$(addprefix $(VBOX_LNX_ADD_INST_MOD_DIR)/,$(VBOX_LNX_ADD_STRIP_OBJ)): \
     245                $(VBOX_LNX_ADD_INST_MOD_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
    123246        $(call MSG_INST_FILE,$<,$@)
    124247ifeq ($(VBOX_DO_STRIP),)
     
    130253endif
    131254
    132 # pattern rule for copying the VBOX_LNX_ADD_MODULES files to the installation directory
    133 $(VBOX_LNX_ADD_INS_MODULES): \
    134                 $(VBOX_LNX_ADD_INS_OUT_DIR)/module/% : $(PATH_BIN)/additions/src/% | $(VBOX_LNX_ADD_INS_OUT_DIR)/module/
     255# pattern rule for copying the VBOX_LNX_ADD_KMOD files to the installation directory
     256$(addprefix $(VBOX_LNX_ADD_INST_KMOD_DIR)/,$(VBOX_LNX_ADD_KMOD_VERSIONED)): \
     257                $(VBOX_LNX_ADD_INST_KMOD_DIR)/%-$(VBOX_VERSION_STRING) : $(PATH_BIN)/additions/src/% | $(VBOX_LNX_ADD_INST_KMOD_DIR)/
    135258        $(call MSG_INST_FILE,$<,$@)
    136259# Remove target directories first, otherwise the behaviour of cp will not be
    137260# what we want if it already exists. See the cp manual page for more details.
    138261        $(QUIET)$(RM) -Rf $@
    139         $(QUIET)cp -af $< $(VBOX_LNX_ADD_INS_OUT_DIR)/module
    140 
    141 
    142 INSTALLS += $(if $(VBOX_OSE),, lnx_add_inst-nobin)
    143 lnx_add_inst-nobin_INST = obj/Additions/Installer/linux
    144 lnx_add_inst-nobin_MODE = a+r,u+w
    145 lnx_add_inst-nobin_SOURCES = \
    146                 ../x11/Installer/VBoxRandR.sh \
    147                 installer/vboxadd-service.sh \
    148                 ../x11/Installer/98vboxadd-xclient \
    149                 ../x11/Installer/vboxclient.desktop \
    150                 installer/vboxadd.sh \
    151                 ../x11/Installer/vboxvideo.ids \
    152                 ../x11/Installer/linux_xorg_suse11.conf \
    153                 installer/90-vboxguest.fdi
    154 
    155 
    156 INSTALLS += $(if $(VBOX_OSE),, lnx_add_inst-bin)
    157 lnx_add_inst-bin_INST = obj/Additions/Installer/linux
    158 lnx_add_inst-bin_MODE = a+rx,u+w
    159 lnx_add_inst-bin_SOURCES = \
    160         ../../Installer/linux/routines.sh \
    161         ../x11/Installer/x11config.pl \
    162         ../x11/Installer/x11config15.pl \
    163         selinux-fedora/vbox_x11.pp
     262        $(QUIET)cp -af $< $@
     263
     264# pattern rule for copying the VBOX_LNX_ADD_INIT files to the installation directory
     265$(addprefix $(VBOX_LNX_ADD_INST_INIT_DIR)/,$(VBOX_LNX_ADD_INIT)): \
     266                $(VBOX_LNX_ADD_INST_INIT_DIR)/% : $(PATH_BIN)/additions/% | $$(dir $$@)
     267        $(call MSG_INST_FILE,$<,$@)
     268# Remove target directories first, otherwise the behaviour of cp will not be
     269# what we want if it already exists. See the cp manual page for more details.
     270        $(QUIET)$(RM) -Rf $@
     271        $(QUIET)cp -af $< $@
     272
     273
     274INSTALLS += $(if $(VBOX_OSE),, lnx_add_inst-exec)
     275lnx_add_inst-exec_INST = $(subst $(PATH_TARGET),obj, \
     276                $(VBOX_LNX_ADD_INST_MOD_DIR))
     277lnx_add_inst-exec_MODE = a+rx,u+w
     278lnx_add_inst-exec_SOURCES = \
     279                $(VBOX_REL_LNX_ADD_INST)/vboxadd-service.sh \
     280                $(VBOX_REL_X11_ADD_INST)/98vboxadd-xclient \
     281                $(VBOX_REL_LNX_ADD_INST)/vboxadd.sh \
     282                $(VBOX_REL_X11_ADD_INST)/x11config.pl \
     283                $(VBOX_REL_X11_ADD_INST)/x11config15.pl \
     284                $(VBOX_REL_LNX_INST_SRC)/routines.sh
     285
     286
     287INSTALLS += $(if $(VBOX_OSE),, lnx_add_inst-noexec)
     288lnx_add_inst-noexec_INST = $(subst $(PATH_TARGET),obj, \
     289                $(VBOX_LNX_ADD_INST_SHARE_DIR)/$(VBOX_LNX_ADD_PACKAGE_NAME))
     290lnx_add_inst-noexec_MODE = a+r,u+w
     291lnx_add_inst-noexec_SOURCES = \
     292                $(VBOX_REL_X11_ADD_INST)/vboxclient.desktop \
     293                $(VBOX_REL_X11_ADD_INST)/vboxvideo.ids \
     294                $(VBOX_REL_X11_ADD_INST)/linux_xorg_suse11.conf \
     295                $(VBOX_REL_LNX_ADD_INST)/90-vboxguest.fdi \
     296                selinux-fedora/vbox_x11.pp
    164297
    165298
     
    173306AutoRun-sh_INST = bin/additions/
    174307AutoRun-sh_MODE = a+rx,u+w
    175 AutoRun-sh_SOURCES = $(VBOX_PATH_LINUX_ADDITION_INSTALLER)/autorun.sh
     308AutoRun-sh_SOURCES = $(VBOX_REL_LNX_ADD_INST)/autorun.sh
    176309
    177310
     
    180313#
    181314INSTALLS += $(if $(VBOX_OSE),, LnxAddTest-src)
    182 LnxAddTest-src_INST    = obj/Additions/Installer/linux/module/test
     315LnxAddTest-src_INST    = $(subst $(PATH_TARGET),obj, \
     316                $(VBOX_LNX_ADD_INST_SHARE_DIR)/$(VBOX_LNX_ADD_PACKAGE_NAME))/test
    183317LnxAddTest-src_MODE    = a+r,u+w
    184318LnxAddTest-src_SOURCES = \
    185                 installer/Makefile.test=>Makefile \
    186                 installer/test.c
     319                $(VBOX_REL_LNX_ADD_INST)/Makefile.test=>Makefile \
     320                ../../HostDrivers/linux/build_in_tmp \
     321                $(VBOX_REL_LNX_ADD_INST)/test.c
    187322
    188323
     
    191326#
    192327INSTALLS += $(if $(VBOX_OSE),, LnxAddDRM-src)
    193 LnxAddDRM-src_INST    = obj/Additions/Installer/linux/module/test_drm
     328LnxAddDRM-src_INST    = $(subst $(PATH_TARGET),obj, \
     329                $(VBOX_LNX_ADD_INST_SHARE_DIR)/$(VBOX_LNX_ADD_PACKAGE_NAME))/test_drm
    194330LnxAddDRM-src_MODE    = a+r,u+w
    195331LnxAddDRM-src_SOURCES = \
    196                 installer/Makefile.include.header \
    197                 installer/Makefile.include.footer \
    198                 installer/Makefile.test.drm=>Makefile \
    199                 installer/test_drm.c
     332                $(VBOX_REL_LNX_ADD_INST)/Makefile.include.header \
     333                $(VBOX_REL_LNX_ADD_INST)/Makefile.include.footer \
     334                $(VBOX_REL_LNX_ADD_INST)/Makefile.test.drm=>Makefile \
     335                ../../HostDrivers/linux/build_in_tmp \
     336                $(VBOX_REL_LNX_ADD_INST)/test_drm.c
    200337
    201338
    202339# this file needs editing before it can be included in the generic installer.
    203 $(VBOX_LNX_ADD_INS_OUT_DIR)/install.sh: \
    204         $(VBOX_PATH_LINUX_ADDITION_INSTALLER)/install.sh | $$(dir $$@)
     340$(VBOX_LNX_ADD_INST_STAGE_DIR)/install.sh: \
     341        $(VBOX_PATH_LNX_INST_SRC)/run-inst.sh | $$(dir $$@)
    205342        $(QUIET)$(SED) \
     343            -e "s;_VERSION_;$(VBOX_VERSION_STRING);g" \
     344            -e "s;_PACKAGE_NAME_;VirtualBox Guest Additions;g" \
     345            -e "s;_PACKAGE_;VBoxGuestAdditions;g" \
    206346            -e "s;_VERSION_;$(VBOX_VERSION_STRING);g" \
    207347            -e "s;_BUILD_;$(shell date);g" \
     
    209349            -e "s;_BUILDTYPE_;$(KBUILD_TYPE);g" \
    210350            -e "s;_ARCH_;$(KBUILD_TARGET_ARCH);g" \
    211             --output $(VBOX_LNX_ADD_INS_OUT_DIR)/install_.sh \
     351            --output $(VBOX_LNX_ADD_INST_OUT_DIR)/install.sh \
    212352            $<
    213         $(QUIET)$(INSTALL) -m 0755 $(VBOX_LNX_ADD_INS_OUT_DIR)/install_.sh $@
    214         $(QUIET)$(RM) $(VBOX_LNX_ADD_INS_OUT_DIR)/install_.sh
    215 OTHERS_CLEAN += $(VBOX_LNX_ADD_INS_OUT_DIR)/install.sh
     353        $(QUIET)$(INSTALL) -m 0755 $(VBOX_LNX_ADD_INST_OUT_DIR)/install.sh $@
     354        $(QUIET)$(RM) $(VBOX_LNX_ADD_INST_OUT_DIR)/install.sh
     355OTHERS_CLEAN += \
     356                $(VBOX_LNX_ADD_INST_OUT_DIR)/install.sh \
     357                $(VBOX_LNX_ADD_INST_STAGE_DIR)/install.sh
     358
     359
     360#
     361# We need our routines.sh and the uninstallation scripts in the staging
     362# directory too
     363#
     364INSTALLS += $(if $(VBOX_OSE),, LnxAdd-scripts)
     365LnxAdd-scripts_INST    = $(subst $(PATH_TARGET),obj, \
     366                $(VBOX_LNX_ADD_INST_STAGE_DIR))
     367LnxAdd-scripts_MODE    = a+r,u+wx
     368LnxAdd-scripts_SOURCES = \
     369                $(VBOX_REL_LNX_INST_SRC)/routines.sh \
     370                $(VBOX_REL_LNX_ADD_INST)/uninstall.sh \
     371                $(VBOX_REL_LNX_ADD_INST)/deffiles
     372
     373
     374#
     375# VBoxClient-all
     376#
     377INSTALLS += $(if $(VBOX_OSE),, LnxAdd-Nostrip-Bin)
     378LnxAdd-Nostrip-Bin_INST    = $(subst $(PATH_TARGET),obj, \
     379                $(VBOX_LNX_ADD_INST_BIN_DIR))
     380LnxAdd-Nostrip-Bin_MODE    = a+r,u+wx
     381LnxAdd-Nostrip-Bin_SOURCES = \
     382                $(VBOX_REL_X11_ADD_INST)/VBoxRandR.sh=>VBoxRandR \
     383                $(VBOX_REL_X11_ADD_INST)/98vboxadd-xclient=>VBoxClient-all
     384
     385
     386#
     387# And the init scripts
     388#
     389INSTALLS += $(if $(VBOX_OSE),, LnxAdd-init-scripts)
     390LnxAdd-init-scripts_INST    = bin/additions
     391LnxAdd-init-scripts_MODE    = a+r,u+wx
     392LnxAdd-init-scripts_SOURCES = \
     393                $(foreach i,$(VBOX_LNX_ADD_INIT), installer/$(i).sh=>$(i))
    216394
    217395
    218396include $(KBUILD_PATH)/subfooter.kmk
     397
     398
     399# All the files that go into our archive
     400VBOX_LNX_ADD_ARCH_FILES = \
     401                $(INSTARGET_lnx_add_inst-noexec) \
     402                $(INSTARGET_lnx_add_inst-exec) \
     403                $(INSTARGET_LnxAddTest-src) \
     404                $(INSTARGET_LnxAddDRM-src) \
     405                $(VBOX_LNX_ADD_INST_FILES)
     406
     407#
     408# .tar.bz2 for converting into .run
     409#
     410$(VBOX_LNX_ADD_INST_STAGE_DIR)/VBoxGuestAdditions.tar.bz2: \
     411                $(VBOX_LNX_ADD_ARCH_FILES) \
     412                $(VBOX_LNX_ADD_INST_DEP_ON_MAKEFILE) \
     413                $(VBOX_VERSION_STAMP)
     414        $(call MSG_L1,Packing $@)
     415        $(QUIET)$(RM) -f -- $@ $(patsubst %.bz2,%,$@)
     416        $(QUIET)$(MKDIR) -p $(@D)
     417# .run-specific debug symbol stuff
     418        $(QUIET)$(MKDIR) $(VBOX_LNX_ADD_INST_BIN_DIR)/.debug
     419        $(QUIET)$(LN) -s $(addprefix ../../debug/bin/,$(VBOX_LNX_ADD_STRIP_BIN)) \
     420                $(VBOX_LNX_ADD_INST_BIN_DIR)/.debug
     421        $(QUIET)$(MKDIR) $(VBOX_LNX_ADD_INST_SBIN_DIR)/.debug
     422        $(QUIET)$(LN) -s $(addprefix ../../debug/sbin/,$(VBOX_LNX_ADD_STRIP_SBIN)) \
     423                $(VBOX_LNX_ADD_INST_SBIN_DIR)/.debug
     424        $(QUIET)$(MKDIR) $(VBOX_LNX_ADD_INST_LIB_DIR)/.debug
     425        $(QUIET)$(LN) -s $(addprefix ../../debug/lib/,$(VBOX_LNX_ADD_STRIP_LIB)) \
     426                $(VBOX_LNX_ADD_INST_LIB_DIR)/.debug
     427        $(QUIET)$(MKDIR) $(VBOX_LNX_ADD_INST_MOD_DIR)/.debug
     428        $(QUIET)$(LN) -s $(addprefix ../../../debug/lib/$(VBOX_LNX_ADD_PACKAGE_NAME)/,$(VBOX_LNX_ADD_STRIP_MOD)) \
     429                $(VBOX_LNX_ADD_INST_MOD_DIR)/.debug
     430ifdef VBOX_USE_PBZIP2
     431        $(QUIET)tar --owner 0 --group 0 -cRf $(patsubst %.bz2,%,$@) \
     432                -C $(VBOX_LNX_ADD_INST_OUT_DIR) \
     433                $(subst $(VBOX_LNX_ADD_INST_OUT_DIR)/,,$(VBOX_LNX_ADD_ARCH_FILES) \
     434                $(VBOX_LNX_ADD_INST_BIN_DIR)/.debug \
     435                $(VBOX_LNX_ADD_INST_SBIN_DIR)/.debug \
     436                $(VBOX_LNX_ADD_INST_LIB_DIR)/.debug \
     437                $(VBOX_LNX_ADD_INST_MOD_DIR)/.debug)
     438        $(QUIET)pbzip2 $(patsubst %.bz2,%,$@)
     439else
     440        $(QUIET)tar --owner 0 --group 0 -cjRf $@ \
     441                -C $(VBOX_LNX_ADD_INST_OUT_DIR) \
     442                $(subst $(VBOX_LNX_ADD_INST_OUT_DIR)/,,$(VBOX_LNX_ADD_ARCH_FILES) \
     443                $(VBOX_LNX_ADD_INST_BIN_DIR)/.debug \
     444                $(VBOX_LNX_ADD_INST_SBIN_DIR)/.debug \
     445                $(VBOX_LNX_ADD_INST_LIB_DIR)/.debug \
     446                $(VBOX_LNX_ADD_INST_MOD_DIR)/.debug)
     447endif
     448        $(QUIET)$(CHMOD) 0644 $@
     449# .run-specific debug symbol stuff
     450        $(QUIET)$(RM) -Rf $(VBOX_LNX_ADD_INST_BIN_DIR)/.debug
     451        $(QUIET)$(RM) -Rf $(VBOX_LNX_ADD_INST_SBIN_DIR)/.debug
     452        $(QUIET)$(RM) -Rf $(VBOX_LNX_ADD_INST_LIB_DIR)/.debug
     453        $(QUIET)$(RM) -Rf $(VBOX_LNX_ADD_INST_MOD_DIR)/.debug
    219454
    220455
     
    225460# any references should be made via variables assigned a know value via := .
    226461#
    227 # We need to depend on all source files for the additions and shared
    228 # folders kernel modules.
    229 ## @todo Replace the wildcard stuff by the correct file lists now that
    230 #        we've got everything included.
    231 #
    232462$(PATH_BIN)/additions/VBoxLinuxAdditions.run: \
    233                 $(INSTARGET_lnx_add_inst-nobin) \
    234                 $(INSTARGET_lnx_add_inst-bin) \
    235                 $(INSTARGET_LnxAddTest-src) \
    236                 $(INSTARGET_LnxAddTestDRM-src) \
    237                 $(VBOX_LNX_ADD_INS_FILES) \
    238                 $(VBOX_LNX_ADD_INS_MODULES) \
    239                 $(VBOX_LNX_ADD_INS_OUT_DIR)/install.sh \
    240                 $(wildcard $(PATH_BIN)/additions/src/*) \
    241                 $(wildcard $(PATH_BIN)/additions/src/*/*) \
    242                 $(wildcard $(PATH_BIN)/additions/src/*/*/*) \
    243                 $(wildcard $(PATH_BIN)/additions/src/*/*/*/*) \
     463                $(VBOX_LNX_ADD_INST_STAGE_DIR)/VBoxGuestAdditions.tar.bz2 \
     464                $(VBOX_LNX_ADD_INST_STAGE_DIR)/install.sh \
     465                $$(INSTARGET_LnxAdd-scripts) \
    244466                $(VBOX_VERSION_STAMP)
    245         $(QUIET)$(VBOX_MAKESELF) $(VBOX_LNX_ADD_INS_OUT_DIR) $@ \
    246                 "VirtualBox $(VBOX_VERSION_STRING) Guest Additions for Linux installation" /bin/sh ./install.sh "> /dev/null"
     467        $(QUIET)$(VBOX_MAKESELF) --nocomp $(VBOX_LNX_ADD_INST_STAGE_DIR) $@ \
     468                "VirtualBox $(VBOX_VERSION_STRING) Guest Additions for Linux" \
     469                /bin/sh ./install.sh "> /dev/null"
  • trunk/src/VBox/Additions/linux/installer/vboxadd.sh

    r22314 r24361  
    280280}
    281281
     282# setup_script
    282283setup()
    283284{
     
    293294        succ_msg
    294295    fi
    295     begin "Recompiling VirtualBox kernel modules"
     296    echo "Building VirtualBox kernel modules"
     297    begin "Building the main VirtualBox module"
    296298    if ! $BUILDVBOXGUEST \
    297299        --save-module-symvers /tmp/vboxguest-Module.symvers \
     
    299301        fail "Look at $LOG to find out what went wrong"
    300302    fi
     303    succ_msg
    301304    if [ -n "$BUILDVBOXVFS" ]; then
     305        begin "Building the shared folder support module"
    302306        if ! $BUILDVBOXVFS \
    303307            --use-module-symvers /tmp/vboxguest-Module.symvers \
     
    305309            fail "Look at $LOG to find out what went wrong"
    306310        fi
     311        succ_msg
    307312    fi
    308313    if [ -n "$BUILDVBOXVIDEO" ]; then
     314        begin "Building the OpenGL support module"
    309315        if ! $BUILDVBOXVIDEO \
    310316            --use-module-symvers /tmp/vboxguest-Module.symvers \
     
    312318            fail "Look at $LOG to find out what went wrong"
    313319        fi
    314     fi
     320        succ_msg
     321    fi
     322    depmod
     323
     324    begin "Doing non-kernel setup of the Guest Additions"
     325    echo "Creating user for the Guest Additions." >> $LOG
     326    # This is the LSB version of useradd and should work on recent
     327    # distributions
     328    useradd -d /var/run/vboxadd -g 1 -r -s /bin/false vboxadd >/dev/null 2>&1
     329    # And for the others, we choose a UID ourselves
     330    useradd -d /var/run/vboxadd -g 1 -u 501 -o -s /bin/false vboxadd >/dev/null 2>&1
     331
     332    # Create udev description file
     333    if [ -d /etc/udev/rules.d ]; then
     334        echo "Creating udev rule for the Guest Additions kernel module." >> $LOG
     335        udev_call=""
     336        udev_app=`which udevadm 2> /dev/null`
     337        if [ $? -eq 0 ]; then
     338            udev_call="${udev_app} version 2> /dev/null"
     339        else
     340            udev_app=`which udevinfo 2> /dev/null`
     341            if [ $? -eq 0 ]; then
     342                udev_call="${udev_app} -V 2> /dev/null"
     343            fi
     344        fi
     345        udev_fix="="
     346        if [ "${udev_call}" != "" ]; then
     347            udev_out=`${udev_call}`
     348            udev_ver=`expr "$udev_out" : '[^0-9]*\([0-9]*\)'`
     349            if [ "$udev_ver" = "" -o "$udev_ver" -lt 55 ]; then
     350               udev_fix=""
     351            fi
     352        fi
     353        ## @todo 60-vboxadd.rules -> 60-vboxguest.rules ?
     354        echo "KERNEL=${udev_fix}\"vboxguest\", NAME=\"vboxguest\", OWNER=\"vboxadd\", MODE=\"0660\"" > /etc/udev/rules.d/60-vboxadd.rules
     355        echo "KERNEL=${udev_fix}\"vboxuser\", NAME=\"vboxuser\", OWNER=\"vboxadd\", MODE=\"0666\"" >> /etc/udev/rules.d/60-vboxadd.rules
     356    fi
     357
     358    # Put mount.vboxsf in the right place
     359    ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin
     360
    315361    succ_msg
    316362    start
     
    319365}
    320366
     367# cleanup_script
     368cleanup()
     369{
     370    # Delete old versions of VBox modules.
     371    DKMS=`which dkms 2>/dev/null`
     372    if [ -n "$DKMS" ]; then
     373      info "Attempt to remove old DKMS modules..."
     374      for mod in vboxadd vboxguest vboxvfs vboxvideo; do
     375        $DKMS status -m $mod | while read line; do
     376          if echo "$line" | grep -q added > /dev/null ||
     377             echo "$line" | grep -q built > /dev/null ||
     378             echo "$line" | grep -q installed > /dev/null; then
     379            version=`echo "$line" | sed "s/$mod,\([^,]*\)[,:].*/\1/;t;d"`
     380            info "  removing module $mod version $version"
     381            $DKMS remove -m $mod -v $version --all
     382          fi
     383        done
     384      done
     385      info "Done."
     386    fi
     387
     388    # Remove old installed modules
     389    find /lib/modules -name vboxadd\* | xargs rm 2>/dev/null
     390    find /lib/modules -name vboxguest\* | xargs rm 2>/dev/null
     391    find /lib/modules -name vboxvfs\* | xargs rm 2>/dev/null
     392    find /lib/modules -name vboxvideo\* | xargs rm 2>/dev/null
     393    depmod
     394
     395    # Remove other files
     396    rm /sbin/mount.vboxsf 2>/dev/null
     397}
     398
    321399dmnstatus()
    322400{
     
    341419    setup
    342420    ;;
     421cleanup)
     422    cleanup
     423    ;;
    343424status)
    344425    dmnstatus
  • trunk/src/VBox/HostDrivers/linux/build_in_tmp

    r23850 r24361  
    2222# Attempt to build using DKMS first
    2323DKMS=`which dkms 2>/dev/null`
     24if [ "$1" = "--no-dkms" ]; then
     25  shift
     26  DKMS=""
     27fi
    2428if [ -n "$DKMS" ]
    2529then
Note: See TracChangeset for help on using the changeset viewer.

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