#! /usr/bin/make -f #export DH_VERBOSE=1 #export DEB_BUILD_OPTIONS="nostrip" DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) VERSION = $(shell dpkg-parsechangelog | sed -n -e '/^Version:/s/.*: //p') ifeq ($(shell dpkg-vendor --query vendor),Ubuntu) DEFAULT_NTP_SERVERS = ntp.ubuntu.com else DEFAULT_NTP_SERVERS = 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org endif CONFFLAGS = \ --with-rootprefix= \ --with-rootlibdir=/lib/$(DEB_HOST_MULTIARCH) \ --with-zshcompletiondir=/usr/share/zsh/vendor-completions \ --with-sysvinit-path=/etc/init.d \ --with-sysvrcnd-path=/etc \ --with-debug-shell=/bin/bash \ --with-telinit=/lib/sysvinit/telinit \ --enable-split-usr \ --disable-gudev \ --disable-qrencode \ --disable-microhttpd \ --disable-chkconfig \ --disable-gnutls \ --disable-libcurl \ --disable-libidn \ --disable-elfutils \ --disable-vconsole \ --disable-sysusers \ --disable-firstboot \ --disable-coredump \ --disable-xkbcommon \ --disable-importd \ --disable-libiptc \ --disable-silent-rules \ --with-ntp-servers="$(DEFAULT_NTP_SERVERS)" \ --with-system-uid-max=999 \ --with-system-gid-max=999 ifeq (,$(findstring stage1,$(DEB_BUILD_PROFILES))) CONFFLAGS += --enable-libcryptsetup endif CONFFLAGS_deb = \ --enable-selinux \ --enable-apparmor \ --enable-introspection \ --enable-gtk-doc \ --enable-compat-libs \ --enable-hwdb \ --enable-efi \ PYTHON=python3 CONFFLAGS_udeb = \ --disable-libcryptsetup \ --disable-pam \ --disable-audit \ --disable-selinux \ --disable-apparmor \ --disable-smack \ --disable-ima \ --disable-introspection \ --disable-gtk-doc \ --disable-binfmt \ --disable-bootchart \ --disable-quotacheck \ --disable-tmpfiles \ --disable-randomseed \ --disable-backlight \ --disable-logind \ --disable-machined \ --disable-hostnamed \ --disable-timedated \ --disable-networkd \ --disable-timesyncd \ --disable-localed \ --disable-myhostname \ --disable-resolved \ --disable-polkit \ --disable-acl \ --disable-gcrypt \ --disable-rfkill \ --disable-hwdb \ --disable-manpages \ --disable-efi \ --disable-seccomp \ --without-python override_dh_auto_configure: dh_auto_configure --builddirectory=build-deb \ -- $(CONFFLAGS) $(CONFFLAGS_deb) dh_auto_configure --builddirectory=build-udeb \ -- $(CONFFLAGS) $(CONFFLAGS_udeb) # workarounds for broken 220 tarball, see # http://lists.freedesktop.org/archives/systemd-devel/2015-May/032148.html rm -f src/journal/audit_type-to-name.h # http://lists.freedesktop.org/archives/systemd-devel/2015-May/032148.html rm -f src/udev/keyboard-keys-from-name.gperf override_dh_auto_build: dh_auto_build --builddirectory=build-deb dh_auto_build --builddirectory=build-udeb # generate POT file for translators cd build-deb/po; srcdir=../../po intltool-update --pot --verbose override_dh_auto_install: dh_auto_install --builddirectory=build-deb \ --destdir=debian/install/deb dh_auto_install --builddirectory=build-udeb \ --destdir=debian/install/udeb ifeq (, $(findstring nocheck, $(DEB_BUILD_OPTIONS))) echo "Checking that executables don't link to libraries in /usr..." set -e; for e in debian/install/deb/lib/systemd/systemd*; do \ echo " $$e"; \ OUT=`ldd $$e | grep -v libfakeroot`; if echo "$$OUT" | grep -q /usr; then \ echo "ERROR: $$e links to /usr"; echo "$$OUT"; exit 1; \ fi; \ done endif override_dh_auto_clean: dh_auto_clean --builddirectory=build-deb dh_auto_clean --builddirectory=build-udeb rm -rf debian/install/ # remove pre-generated man pages so they are rebuilt rm -f man/*.[13578] # remove pre-generated rules and unit files so they are rebuilt rm -f rules/99-systemd.rules \ units/emergency.service \ units/systemd-udevd.service \ units/systemd-udev-settle.service \ units/systemd-udev-trigger.service # remove Python byte code files rm -f *.pyc 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/share/man/man8/kernel-install.8 rm -f debian/install/*/usr/bin/kernel-install rm -f debian/install/*/usr/share/zsh/vendor-completions/_kernel-install rm -f debian/install/*/usr/share/bash-completion/completions/kernel-install rm -rf debian/install/*/usr/lib/kernel/install.d rm -rf debian/install/*/etc/rpm/ rm -rf debian/install/*/usr/lib/rpm/ rm -rf debian/install/*/etc/kernel/ rm -f debian/install/*/usr/lib/sysctl.d/50-default.conf find debian/install/ -name '*.la' -delete # 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 deprecated compatibility libraries rm -f debian/install/*/usr/lib/*/libsystemd-*.so rm -f debian/install/*/lib/*/libsystemd-*.so.* # remove symlinks enabling default-on services rm -rf debian/install/*/etc/systemd/system/*.target.wants/ dh_install -pudev-udeb -plibudev1-udeb --sourcedir=debian/install/udeb # still needs to mature a bit, and packaging rm -f debian/install/*/usr/lib/*/libnss_resolve* # fix location of NSS modules cd debian/install/deb/; for f in usr/lib/*/libnss_*; do mv $$f $${f#usr/}; done dh_install -Nudev-udeb -Nlibudev1-udeb --sourcedir=debian/install/deb --fail-missing # Make sure the runlevel services are known by systemd so their targets # get launches. See https://bugzilla.redhat.com/show_bug.cgi?id=1002806 for t in poweroff rescue multi-user graphical reboot; do \ mkdir -p debian/systemd/lib/systemd/system/$${t}.target.wants;\ ln -s ../systemd-update-utmp-runlevel.service \ debian/systemd/lib/systemd/system/$${t}.target.wants ;\ done # 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 # remove duplicates # files shipped by systemd-sysv / sysvinit rm debian/systemd/usr/share/man/man1/init.1 rm debian/systemd/usr/share/man/man8/halt.8 rm debian/systemd/usr/share/man/man8/poweroff.8 rm debian/systemd/usr/share/man/man8/reboot.8 rm debian/systemd/usr/share/man/man8/shutdown.8 rm debian/systemd/usr/share/man/man8/telinit.8 rm debian/systemd/usr/share/man/man8/runlevel.8 # files shipped by libpam-systemd rm debian/systemd/usr/share/man/man8/pam_systemd.8 # files shipped by udev rm -r debian/systemd/etc/udev/ rm debian/systemd/lib/systemd/system/systemd-udev* rm debian/systemd/lib/systemd/system/systemd-hwdb* rm debian/systemd/lib/systemd/system/*.target.wants/systemd-udev* rm debian/systemd/lib/systemd/system/*.target.wants/*hwdb* rm debian/systemd/lib/systemd/systemd-udevd rm debian/systemd/usr/share/man/man7/udev.7 rm debian/systemd/usr/share/man/man7/*hwdb*.7 rm debian/systemd/usr/share/man/man8/*udev*.8 rm debian/systemd/usr/share/man/man8/*hwdb*.8 rm debian/systemd/usr/share/bash-completion/completions/udevadm # files systemd by cryptsetup ifeq (,$(findstring 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 # Ubuntu specific files if dpkg-vendor --is ubuntu; then \ 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/systemd-vconsole-setup.service debian/systemd/lib/systemd/system/; \ install --mode=644 debian/extra/rules-ubuntu/*.rules debian/udev/lib/udev/rules.d/; \ fi # use symlinked doc directories on Debian as the old udev package did; we have # to manually install udev's README for that override_dh_installdocs: if ! dpkg-vendor --is ubuntu; then \ dh_installdocs -pudev -plibudev-dev --link-doc=libudev1; \ install -D --mode 644 debian/udev.README.Debian debian/libudev1/usr/share/doc/libudev1/README.Debian; \ fi dh_installdocs --remaining-packages override_dh_installinit: dh_installinit --no-start dh_installinit --name=udev-finish --no-start # the following are only upstart jobs dh_installinit --name=udevtrigger --noscripts dh_installinit --name=udevmonitor --noscripts dh_installinit --name=udev-fallback-graphics --noscripts # The SysV compat tools (which are symlinks to systemctl) are # quasi-essential, so add its 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 override_dh_makeshlibs: dh_makeshlibs -plibudev1 --add-udeb=libudev1-udeb -- -c4 dh_makeshlibs --remaining-packages -- -c4 autoreconf: gtkdocize --copy --docdir docs/ intltoolize -f -c autoreconf -f -i override_dh_autoreconf: dh_autoreconf debian/rules -- autoreconf override_dh_strip: dh_strip --dbg-package=systemd-dbg # tests require /etc/machine-id to be present override_dh_auto_test: ifeq (, $(findstring nocheck, $(DEB_BUILD_OPTIONS))) # some tests hang under fakeroot, so disable fakeroot env -u LD_PRELOAD make -C build-deb check || ( \ cd build-deb; \ for f in test-*.log; do echo "==== $$f ===="; cat $$f; done; \ if [ ! -e /etc/machine-id ]; then echo "/etc/machine-id missing, ignoring test failures"; else exit 1; fi; ) endif %: dh $@ --with autoreconf,python3 --parallel