summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xdebian/rules236
1 files changed, 236 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..e5e147dd
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,236 @@
+#!/usr/bin/make -f
+
+# Name of the source packages
+psource:=virtualbox-source
+gsource:=virtualbox-guest-source
+pdkms:=virtualbox-dkms
+gdkms:=virtualbox-guest-dkms
+
+# The short upstream name
+sname:=virtualbox
+sxname:=virtualbox-qt
+gname:=virtualbox-guest
+uname:=virtualbox-guest-utils
+uxname:=virtualbox-guest-x11
+
+INSTALL_PATH:=/usr/lib/virtualbox
+MAKE:=kmk
+
+upstreamversion := $(shell dpkg-parsechangelog | sed -n 's/^Version: *\([^-]\+\)-.\+/\1/p')
+
+DIST_NAME := $(shell lsb_release -si)
+DIST_RELEASE := $(DIST_NAME)/$(shell lsb_release -sc)
+
+SERVER_DEPENDS = $(shell cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null)
+
+export DEB_BUILD_HARDENING=1
+export DEB_BUILD_HARDENING_PIE=0
+export DEB_BUILD_HARDENING_FORMAT=0
+export DEB_BUILD_HARDENING_BINDNOW=0
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+%:
+ dh $@ --with python3,dkms,systemd
+
+override_dh_auto_configure:
+ @echo Building for $(DIST_RELEASE)
+
+ifeq ($(strip $(SERVER_DEPENDS)),)
+ @echo 'error: SERVER_DEPENDS is empty'
+ @exit 1
+endif
+
+ mkdir -p out
+ ./configure \
+ --ose \
+ --odir=$(abspath out) \
+ --with-linux="/usr" \
+ --disable-kmods \
+ --enable-webservice \
+ --enable-vde \
+ --enable-vnc
+
+override_dh_python3:
+ dh_python3 --no-ext-rename
+
+override_dh_auto_build:
+ # Building package
+ . out/env.sh && $(MAKE) \
+ AUTOCFG=$(abspath out/AutoConfig.kmk) \
+ LOCALCFG=$(abspath debian/LocalConfig.kmk) \
+ PATH_OUT=$(abspath out) \
+ TOOL_YASM_AS=yasm \
+ VBOX_USE_SYSTEM_XORG_HEADERS=1 \
+ VBOX_USE_SYSTEM_GL_HEADERS=1 \
+ VBOX_NO_LEGACY_XORG_X11=1 \
+ VBOX_BUILD_PUBLISHER=_$(DIST_NAME) \
+ VBOX_WITH_REGISTRATION_REQUEST= \
+ VBOX_WITH_UPDATE_REQUEST= \
+ KBUILD_VERBOSE=2 \
+ VBOX_WITH_EXTPACK_VBOXDTRACE=
+
+ xsltproc --nonet --stringparam section.autolabel 1 \
+ -o debian/README.Debian.html \
+ /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl \
+ debian/virtualbox.files/README.Debian.xml
+
+ chmod 755 debian/lynx-dump-postprocess
+ export LC_ALL=C; lynx -force_html -dump debian/README.Debian.html | \
+ ./debian/lynx-dump-postprocess > debian/virtualbox.README.Debian.tmp
+ mv debian/virtualbox.README.Debian.tmp debian/virtualbox.README.Debian
+
+override_dh_auto_install:
+ dh_auto_install
+
+ export VBOX_INSTALL_PATH=$(INSTALL_PATH) && \
+ cd out/bin/sdk/installer && \
+ python3 ./vboxapisetup.py install --root $(CURDIR)/debian/$(sname)
+
+ sed -e 's/CVERSION/$(upstreamversion)/g' < debian/$(pdkms).links.in > debian/$(pdkms).links
+
+ # Build install files for the dkms'ified sources
+ sed -e 's/CVERSION/$(upstreamversion)/g' < debian/$(pdkms).install.in > debian/$(pdkms).install
+ sed -e 's/CVERSION/$(upstreamversion)/g' < debian/$(gdkms).install.in > debian/$(gdkms).install
+
+ echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(uxname).substvars
+
+ifeq ($(DIST_NAME),Ubuntu)
+ echo "modaliases=vboxguest(pci:v000080EEd0000CAFEsv00000000sd00000000bc*sc*i*)" >> debian/$(gdkms).substvars
+ echo "modaliases=vboxx11(pci:v000080EEd0000BEEFsv00000000sd00000000bc*sc*i*)" >> debian/$(uxname).substvars
+endif
+
+override_dh_install:
+ifneq (,$(filter $(sname), $(shell dh_listpackages)))
+ dh_install -p$(sname) -X out/bin/VBoxDbg.so
+endif
+ dh_install --remaining-packages
+#ifneq (,$(filter $(uxname), $(shell dh_listpackages)))
+# install -m 644 -p -D out/bin/additions/vboxvideo_drv_system.so \
+# debian/$(uxname)/usr/lib/xorg/modules/drivers/vboxvideo_drv.so
+#endif
+# check if arch-any packages are being built
+ifneq (,$(filter $(sxname), $(shell dh_listpackages)))
+ convert debian/$(sxname)/usr/share/icons/hicolor/32x32/apps/virtualbox.png \
+ debian/$(sxname)/usr/share/pixmaps/virtualbox.xpm
+endif
+
+ifeq ($(DIST_NAME),Ubuntu)
+ install -m 644 -p -D debian/apport-hook.py \
+ debian/$(sname)/usr/share/apport/package-hooks/source_$(sname).py
+ install -m 644 -p -D debian/apport-hook.py \
+ debian/$(gdkms)/usr/share/apport/package-hooks/$(gdkms).py
+endif
+
+override_dh_link:
+ dh_link
+ dh_link -p$(uxname) --ignore debian/$(uxname).links \
+ /usr/lib/VBoxOGL.so $(shell pkg-config --variable dridriverdir dri)/vboxvideo_dri.so
+
+override_dh_fixperms:
+ dh_fixperms
+
+# check if arch-any packages are being built
+ifneq (,$(filter $(sname), $(shell dh_listpackages)))
+ chmod +s debian/$(sname)$(INSTALL_PATH)/VBoxSDL;
+ chmod +s debian/$(sname)$(INSTALL_PATH)/VBoxHeadless;
+ chmod +s debian/$(sname)$(INSTALL_PATH)/VBoxNetNAT;
+ chmod +s debian/$(sname)$(INSTALL_PATH)/VBoxNetDHCP;
+ chmod +s debian/$(sname)$(INSTALL_PATH)/VBoxNetAdpCtl;
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/*.rc;
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/*.r0;
+
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/sdk/bindings/xpcom/python/xpcom/*.py;
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/sdk/bindings/xpcom/python/xpcom/server/*.py;
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/sdk/bindings/xpcom/python/xpcom/client/*.py;
+ chmod 644 debian/$(sname)$(INSTALL_PATH)/sdk/bindings/xpcom/java/vboxjxpcom.jar;
+
+ chmod 755 debian/$(sname)/usr/share/virtualbox/VBox.sh;
+endif
+
+ifneq (,$(filter $(sxname), $(shell dh_listpackages)))
+ chmod +s debian/$(sxname)$(INSTALL_PATH)/VirtualBoxVM;
+endif
+
+ifneq (,$(filter $(uxname), $(shell dh_listpackages)))
+ chmod 755 debian/$(uxname)/usr/share/virtualbox/x11config.pl;
+endif
+
+# check if arch-all packages are being built
+ifneq (,$(filter $(psource), $(shell dh_listpackages)))
+ # These files have incorrect permissions, fixing it.
+ chmod 755 debian/$(psource)/usr/src/modules/$(sname)/debian/rules
+
+ # this needs all prior work to be finished
+ cd debian/$(psource)/usr/src && \
+ tar -cjf $(sname).tar.bz2 modules && \
+ rm -rf modules
+
+ chmod 644 debian/$(psource)/usr/src/$(sname).tar.bz2
+endif
+
+# check if arch-all packages are being built
+ifneq (,$(filter $(gsource), $(shell dh_listpackages)))
+ # These files have incorrect permissions, fixing it.
+ chmod 755 debian/$(gsource)/usr/src/modules/$(gname)/debian/rules
+
+ # this needs all prior work to be finished
+ cd debian/$(gsource)/usr/src && \
+ tar -cjf $(gname).tar.bz2 modules && \
+ rm -rf modules
+
+ chmod 644 debian/$(gsource)/usr/src/$(gname).tar.bz2
+endif
+
+override_dh_installinit:
+ dh_installinit -p$(uxname) --no-start --update-rcd-params="start 45 S ."
+ dh_installinit --remaining-packages --no-start
+
+override_dh_systemd_enable:
+ifneq (,$(filter $(sname), $(shell dh_listpackages)))
+ dh_systemd_enable -p$(sname) --name vboxweb --no-enable debian/vboxweb.service
+endif
+ dh_systemd_enable -p$(uname) debian/$(uname).service
+
+override_dh_dkms:
+ dh_dkms -V $(upstreamversion)
+
+override_dh_strip:
+ifneq (,$(filter $(sname), $(shell dh_listpackages)))
+ dh_strip --dbgsym-migration='$(sname)-dbg'
+
+ # strip files not handled by dh_strip
+ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
+ set -e && for file in debian/$(sname)/usr/lib/virtualbox/*.rc debian/$(sname)/usr/lib/virtualbox/*.r0; do \
+ strip --strip-debug --remove-section=.comment --remove-section=.note $${file}; \
+ done
+endif
+ # I don't see a reason to have these. If any user complains, we can try ship it.
+ rm -f debian/$(sname)/usr/lib/virtualbox/VMMRC.debug
+ rm -f debian/$(sname)/usr/lib/virtualbox/VMMR0.debug
+endif
+
+override_dh_shlibdeps:
+ifneq (,$(filter $(sname), $(shell dh_listpackages)))
+ dh_shlibdeps -p$(sname) -X debian/$(sname)$(INSTALL_PATH)/VBoxTestOGL -- \
+ -dRecommends debian/$(sname)$(INSTALL_PATH)/VBoxTestOGL -dDepends
+endif
+ dh_shlibdeps --remaining-packages
+
+override_dh_compress:
+ dh_compress -X.pdf
+
+override_dh_auto_clean:
+ dh_auto_clean
+
+ # Cleaning package
+ rm -rf out
+ rm -f build-stamp
+ rm -f debian/virtualbox.README.Debian debian/README.Debian.html
+ rm -f debian/$(pdkms).install
+ rm -f debian/$(gdkms).install
+ rm -f debian/$(pdkms).links
+ rm -f debian/$(gdkms).links
+
+ find . -name "*.pyc" -exec rm -f {} \;
+