diff options
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 305 |
1 files changed, 305 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..96ae117 --- /dev/null +++ b/debian/rules @@ -0,0 +1,305 @@ +#! /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 + +ifneq (, $(filter $(DEB_BUILD_ARCH), riscv64)) + TEST_TIMEOUT_MULTIPLIER = "-t 10" +endif + +# 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 \ + -Drootlibdir=/lib/$(DEB_HOST_MULTIARCH) \ + -Dsplit-usr=true \ + -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 \ + -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 \ + -Dpamconfdir=no \ + -Drpmmacrosdir=no \ + -Dqrencode=false \ + -Dvconsole=false \ + -Dfirstboot=false \ + -Dxkbcommon=false \ + -Dportabled=false \ + -Dwheel-group=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 + +# resolved's DNSSEC support is still not mature enough, don't enable it by +# default on stable Debian or any Ubuntu releases +CONFFLAGS += $(shell grep -qE 'stretch|ubuntu' /etc/os-release && echo -Ddefault-dnssec=no) + +CONFFLAGS_deb = \ + -Dselinux=true \ + -Dhwdb=true \ + -Dsysusers=true \ + -Dinstall-tests=true \ + -Defi=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 \ + -Dlibidn=true \ + -Dlibiptc=true \ + -Dlibcurl=true \ + -Dimportd=true \ + -Dmicrohttpd=true \ + -Dgnutls=true +else +CONFFLAGS_deb += \ + -Daudit=false \ + -Dlibcryptsetup=false \ + -Dcoredump=false \ + -Delfutils=false \ + -Dapparmor=false \ + -Dlibidn=false \ + -Dlibiptc=false \ + -Dlibcurl=false \ + -Dimportd=false \ + -Dmicrohttpd=false \ + -Dgnutls=false +endif + +CONFFLAGS_udeb = \ + -Dlibcryptsetup=false \ + -Dcoredump=false \ + -Delfutils=false \ + -Dpam=false \ + -Daudit=false \ + -Dselinux=false\ + -Dapparmor=false \ + -Dlibidn=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 \ + -Dpolkit=false \ + -Dacl=false \ + -Dgcrypt=false \ + -Drfkill=false \ + -Dhwdb=false \ + -Dman=false \ + -Defi=false \ + -Dseccomp=false \ + -Dsysusers=false + +override_dh_auto_configure: + dh_auto_configure --builddirectory=build-deb \ + -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_deb) +ifeq (, $(filter noudeb, $(DEB_BUILD_PROFILES))) + dh_auto_configure --builddirectory=build-udeb \ + -- $(CONFFLAGS) $(CONFFLAGS_DISTRO) $(CONFFLAGS_udeb) +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 -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/ + rm -f debian/install/*/lib/systemd/system/halt-local.service + # 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/ + # remove symlinks enabling default-on services + rm -rf debian/install/*/etc/systemd/system/*.target.wants/ + # remove aliases + find debian/install/*/etc/systemd/system/ -type l -delete + # 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/ + install --mode=755 debian/extra/set-cpufreq debian/systemd/lib/systemd/ +endif + +override_dh_missing: + dh_missing --sourcedir debian/install/deb $(DH_MISSING) + +override_dh_installinit: + dh_installinit --no-start + +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 $(TEST_TIMEOUT_MULTIPLIER) || ( \ + cat build-deb/meson-logs/testlog.txt; \ + exit 1) +endif + +%: + dh $@ --without autoreconf,systemd --buildsystem=meson |