mirror of
https://git.proxmox.com/git/systemd
synced 2025-08-19 22:28:01 +00:00

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.
316 lines
9.6 KiB
Makefile
Executable File
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
|