#! /usr/bin/make -f #export DH_VERBOSE = 1 #export DEB_BUILD_OPTIONS = nostrip export LC_ALL = C.UTF-8 include /usr/share/dpkg/default.mk ifeq ($(DEB_VENDOR),Ubuntu) DEFAULT_NTP_SERVERS = ntp.ubuntu.com SUPPORT_URL = http://www.ubuntu.com/support CONFFLAGS_DISTRO = else DEFAULT_NTP_SERVERS = 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org SUPPORT_URL = https://www.debian.org/support CONFFLAGS_DISTRO = endif TEST_TIMEOUT_MULTIPLIER = "-t 10" # fail on missing files and symbols changes on distro builds, but not if we # build/test upstream master ifeq ($(TEST_UPSTREAM),) DH_MISSING = --fail-missing GENSYMBOLS_LEVEL = 4 else DH_MISSING = --list-missing GENSYMBOLS_LEVEL = 1 endif ifneq (, $(filter noudeb, $(DEB_BUILD_OPTIONS))) export DEB_BUILD_PROFILES += noudeb endif CONFFLAGS = \ -Db_lto=true \ -Db_pie=true \ -Dmode=release \ -Drootlibdir=/usr/lib/$(DEB_HOST_MULTIARCH) \ -Dsplit-usr=true \ -Dversion-tag="$(DEB_VERSION)" \ -Dquotaon-path=/sbin/quotaon \ -Dquotacheck-path=/sbin/quotacheck \ -Dkmod-path=/bin/kmod \ -Dkexec-path=/sbin/kexec \ -Dsulogin-path=/sbin/sulogin \ -Dmount-path=/bin/mount \ -Dumount-path=/bin/umount \ -Dloadkeys-path=/bin/loadkeys \ -Dsetfont-path=/bin/setfont \ -Dnologin-path=/usr/sbin/nologin \ -Dtelinit-path=/lib/sysvinit/telinit \ -Dsysvinit-path=/etc/init.d \ -Dsysvrcnd-path=/etc \ -Dlocalegen-path=/usr/sbin/locale-gen \ -Ddebug-shell=/bin/bash \ -Dzshcompletiondir=/usr/share/zsh/vendor-completions \ -Ddbuspolicydir=/usr/share/dbus-1/system.d/ \ -Dsupport-url=$(SUPPORT_URL) \ -Ddefault-kill-user-processes=false \ -Ddefault-hierarchy=unified \ -Ddefault-dnssec=no \ -Dpamconfdir=no \ -Dpamlibdir=/lib/$(DEB_HOST_MULTIARCH)/security \ -Drpmmacrosdir=no \ -Dqrencode=false \ -Dvconsole=false \ -Dfirstboot=false \ -Dxkbcommon=false \ -Dwheel-group=false \ -Drepart=false \ -Duserdb=false \ -Dhomed=false \ -Dlibfido2=false \ -Dfdisk=false \ -Dpwquality=false \ -Dp11kit=false \ -Doomd=false \ -Dntp-servers="$(DEFAULT_NTP_SERVERS)" \ -Ddns-servers='' \ -Dlink-udev-shared=false \ -Dsystem-uid-max=999 \ -Dsystem-gid-max=999 \ -Dnobody-user=nobody \ -Dnobody-group=nogroup \ -Dbump-proc-sys-fs-nr-open=false \ -Ddev-kvm-mode=0660 \ -Dgroup-render-mode=0660 CONFFLAGS_deb = \ -Dselinux=true \ -Dhwdb=true \ -Dsysusers=true \ -Dinstall-tests=$(if $(filter noinsttest,$(DEB_BUILD_PROFILES)),false,true) \ -Defi=true \ -Dman=true \ -Dnss-myhostname=true \ -Dnss-mymachines=true \ -Dnss-resolve=true \ -Dnss-systemd=true \ -Dresolve=true \ -Dlink-systemctl-shared=false ifeq (, $(filter stage1, $(DEB_BUILD_PROFILES))) CONFFLAGS_deb += \ -Daudit=true \ -Dlibcryptsetup=true \ -Dcoredump=true \ -Delfutils=true \ -Dapparmor=true \ -Dlibidn2=true \ -Dlibiptc=true \ -Dlibcurl=true \ -Dimportd=true \ -Dmicrohttpd=true \ -Dgnutls=true \ -Dpcre2=true else CONFFLAGS_deb += \ -Daudit=false \ -Dlibcryptsetup=false \ -Dcoredump=false \ -Delfutils=false \ -Dapparmor=false \ -Dlibidn2=false \ -Dlibiptc=false \ -Dlibcurl=false \ -Dimportd=false \ -Dmicrohttpd=false \ -Dgnutls=false \ -Dpcre2=false endif CONFFLAGS_udeb = \ -Dlibcryptsetup=false \ -Dcoredump=false \ -Delfutils=false \ -Dpam=false \ -Daudit=false \ -Dselinux=false\ -Dapparmor=false \ -Dlibidn2=false \ -Dlibiptc=false \ -Dsmack=false \ -Dima=false \ -Dbinfmt=false \ -Dquotacheck=false \ -Dtmpfiles=false \ -Drandomseed=false \ -Dbacklight=false \ -Dlogind=false \ -Dmachined=false \ -Dlibcurl=false \ -Dimportd=false \ -Dmicrohttpd=false \ -Dgnutls=false \ -Dhostnamed=false \ -Dtimedated=false \ -Dnetworkd=false \ -Dtimesyncd=false \ -Dlocaled=false \ -Dnss-myhostname=false \ -Dnss-mymachines=false \ -Dnss-resolve=false \ -Dnss-systemd=false \ -Dresolve=false \ -Dportabled=false \ -Dpolkit=false \ -Dacl=false \ -Dgcrypt=false \ -Drfkill=false \ -Dhwdb=false \ -Dman=false \ -Defi=false \ -Dseccomp=false \ -Dsysusers=false \ -Dpcre2=false override_dh_auto_configure: dh_auto_configure --builddirectory=build-deb \ -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_deb) $(CONFFLAGS_UPSTREAM) ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) dh_auto_configure --builddirectory=build-udeb \ -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_udeb) $(CONFFLAGS_UPSTREAM) endif override_dh_auto_build: dh_auto_build --builddirectory=build-deb ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) dh_auto_build --builddirectory=build-udeb endif # generate POT file for translators ninja -C build-deb/ systemd-pot override_dh_auto_install: dh_auto_install --builddirectory=build-deb \ --destdir=debian/install/deb ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) dh_auto_install --builddirectory=build-udeb \ --destdir=debian/install/udeb endif # fix paths in manpages; manually check the remaining /usr occurrences # occasionally, with filtering out paths which are known to be in /usr: # grep -r /usr debian/install/deb/usr/share/man/|egrep -v '/usr/local|os.*release|factory|zoneinfo|tmpfiles|kernel|foo|machines|sysctl|dbus|include|binfmt' find debian/install/deb/usr/share/man/ -type f | xargs sed -ri 's_/usr(/lib/systemd/system|/lib/systemd/network|/lib/udev|/lib[^/]|/lib/[^a-z])_\1_g' override_dh_auto_clean: ifneq (, $(TEST_UPSTREAM)) debian/extra/checkout-upstream endif dh_auto_clean --builddirectory=build-deb ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) dh_auto_clean --builddirectory=build-udeb endif rm -rf debian/install/ debian/shlibs.local # remove Python byte code files rm -rf tools/__pycache__/ rm -rf tools/chromiumos/__pycache__/ rm -f po/systemd.pot override_dh_install: # remove unnecessary / unused files rm -f debian/install/*/usr/share/doc/systemd/LICENSE.* rm -f debian/install/*/var/log/README rm -f debian/install/*/etc/init.d/README rm -f debian/install/*/usr/lib/sysctl.d/50-default.conf rm -f debian/install/*/etc/X11/xinit/xinitrc.d/50-systemd-user.sh rmdir -p --ignore-fail-on-non-empty debian/install/*/etc/X11/xinit/xinitrc.d/ # remove files related to factory-reset feature find debian/install/ \( -name 'systemd-update-done*' -o \ -name systemd-journal-catalog-update.service -o \ -name systemd-udev-hwdb-update.service -o \ -name ldconfig.service -o \ -name etc.conf \) -delete rm -rf debian/install/*/usr/share/factory/ # replace upstream sysusers.d/basic.conf with proper users for Debian debian/extra/make-sysusers-basic > debian/install/deb/usr/lib/sysusers.d/basic.conf # remove resolvconf compat symlink rm -f debian/install/*/sbin/resolvconf ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) dh_install -pudev-udeb -plibudev1-udeb --sourcedir=debian/install/udeb endif dh_install --remaining-packages --sourcedir=debian/install/deb # we don't want /tmp to be a tmpfs by default mv debian/systemd/lib/systemd/system/tmp.mount debian/systemd/usr/share/systemd/ printf '\n[Install]\nWantedBy=local-fs.target\n' >> debian/systemd/usr/share/systemd/tmp.mount rm debian/systemd/lib/systemd/system/local-fs.target.wants/tmp.mount # files shipped by cryptsetup ifeq (, $(filter stage1, $(DEB_BUILD_PROFILES))) rm debian/systemd/usr/share/man/man5/crypttab.5 endif # files shipped by systemd rm debian/udev/lib/udev/rules.d/70-uaccess.rules rm debian/udev/lib/udev/rules.d/73-seat-late.rules rm debian/udev/lib/udev/rules.d/71-seat.rules rm debian/udev/lib/udev/rules.d/99-systemd.rules # remove duplicate files shipped by systemd-*/udev echo "Removing duplicate files in systemd package:" set -e; for pkg in $(shell dh_listpackages -Nudev-udeb -Nlibudev1-udeb -Nsystemd); do \ echo "... from $$pkg..."; \ (cd debian/$$pkg; find -type f -o -type l) | (cd debian/systemd; xargs rm -f --verbose); \ (cd debian/$$pkg; find -mindepth 1 -type d | sort -r) | (cd debian/systemd; xargs rmdir --ignore-fail-on-non-empty --verbose || true); \ done # Ubuntu specific files ifeq ($(DEB_VENDOR),Ubuntu) install -D --mode=644 debian/extra/udev.py debian/udev/usr/share/apport/package-hooks/udev.py install -D --mode=644 debian/extra/systemd.py debian/systemd/usr/share/apport/package-hooks/systemd.py install --mode=644 debian/extra/rules-ubuntu/*.rules debian/udev/lib/udev/rules.d/ cp -a debian/extra/units-ubuntu/* debian/systemd/lib/systemd/system/ endif override_dh_missing: dh_missing --sourcedir debian/install/deb $(DH_MISSING) override_dh_installinit: dh_installinit --no-start override_dh_installsystemd: dh_installsystemd -psystemd-timesyncd override_dh_installsystemduser: PROJECT_VERSION ?= $(shell awk '/(PROJECT|PACKAGE)_VERSION/ {print $$3}' build-deb/config.h | tr -d \") # The SysV compat tools (which are symlinks to systemctl) are # quasi-essential, so add their dependencies to Pre-Depends # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753589 override_dh_shlibdeps: dh_shlibdeps -psystemd -- -dPre-Depends \ -edebian/systemd/bin/systemctl \ -dDepends dh_shlibdeps --remaining-packages -Lsystemd override_dh_makeshlibs: sed 's/SHARED_LIB_VERSION/$(PROJECT_VERSION)/' debian/shlibs.local.in > debian/shlibs.local dh_makeshlibs -plibudev1 --add-udeb=libudev1-udeb -- -c$(GENSYMBOLS_LEVEL) dh_makeshlibs -psystemd -Xlibsystemd-shared -- -c$(GENSYMBOLS_LEVEL) dh_makeshlibs --remaining-packages -- -c$(GENSYMBOLS_LEVEL) override_dh_auto_test: ifeq (, $(filter nocheck, $(DEB_BUILD_OPTIONS))) echo "01234567890123456789012345678901" > build-deb/machine-id # some tests hang under fakeroot, so disable fakeroot env -u LD_PRELOAD SYSTEMD_MACHINE_ID_PATH=$(CURDIR)/build-deb/machine-id meson test -C build-deb --print-errorlogs $(TEST_TIMEOUT_MULTIPLIER) endif %: dh $@ --without autoreconf --buildsystem=meson