systemd/debian/rules
Matthias Klumpp 63f22a7a8d Configure localed to run locale-gen to generate missing locale
This applies an (upstreamed) patch to permit systemd-localed to run
locale-gen to generate missing locale when requested to switch the
system locale.
This makes localectl usable on Debian for changing locale without
breaking system localization or even prevent certain applications from
running at all after switching to a non-generated locale.
2021-01-18 03:05:05 +01:00

316 lines
9.6 KiB
Makefile
Executable File

#! /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