summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd_255.6.bb
diff options
context:
space:
mode:
authorChen Qi <Qi.Chen@windriver.com>2024-07-11 00:56:33 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-07-13 23:28:30 +0100
commit74cd617cbb093a2948413213942bd664fb83d83f (patch)
treee49b29c02fb3d0e633f65b6452fef312d5d0c057 /meta/recipes-core/systemd/systemd_255.6.bb
parent0dfd37f2408cbdb32de5553e30b96efee5798a3b (diff)
downloadpoky-74cd617cbb093a2948413213942bd664fb83d83f.tar.gz
systemd: upgrade from 255.6 to 256
The 'cgroupv2' PACKAGECONFIG is dropped as systemd now only supports cgroupv2. The 'kmod' PACKAGECONFIG is now added 'libkmod' as a runtime dependency. This is because systemd 256 uses dlopen to make use of libkmod, and there's no way for our library detection codes to know this and add such dependency automatically. So we add it explicitly. mime is now inherited because ${datadir}/mime/packages/io.systemd.xml is a mime type file. For musl specific patches, most are refreshed. One old patch is dropped, and four new ones are added. Newly added: build-path.c: avoid boot time segfault for musl adjust header inclusion order to avoid redeclaration undef stdin for references using stdin as a struct member include signal.h to avoid the 'undeclared' error Dropped: src/basic/missing.h: check for missing strndupa (drop reason: systemd does not use strndupa any more) (From OE-Core rev: 89b75b46371d5e9172cb496b461824d8551a2af5) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/systemd/systemd_255.6.bb')
-rw-r--r--meta/recipes-core/systemd/systemd_255.6.bb907
1 files changed, 0 insertions, 907 deletions
diff --git a/meta/recipes-core/systemd/systemd_255.6.bb b/meta/recipes-core/systemd/systemd_255.6.bb
deleted file mode 100644
index 0376412f61..0000000000
--- a/meta/recipes-core/systemd/systemd_255.6.bb
+++ /dev/null
@@ -1,907 +0,0 @@
1require systemd.inc
2
3PROVIDES = "udev"
4
5PE = "1"
6
7DEPENDS = "intltool-native gperf-native libcap util-linux python3-jinja2-native"
8
9SECTION = "base/shell"
10
11inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check
12
13# unmerged-usr support is deprecated upstream, taints the system and will be
14# removed in the near future. Fail the build if it is not enabled.
15REQUIRED_DISTRO_FEATURES += "usrmerge"
16
17# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
18# that we don't build both udev and systemd in world builds.
19REQUIRED_DISTRO_FEATURES += "systemd"
20
21SRC_URI += " \
22 file://touchscreen.rules \
23 file://00-create-volatile.conf \
24 ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
25 ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
26 file://init \
27 file://99-default.preset \
28 file://systemd-pager.sh \
29 file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
30 file://0008-implment-systemd-sysv-install-for-OE.patch \
31 file://0023-meson-bpf-propagate-sysroot-for-cross-compilation.patch \
32 "
33
34# patches needed by musl
35SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
36SRC_URI_MUSL = "\
37 file://0001-missing_type.h-add-comparison_fn_t.patch \
38 file://0002-add-fallback-parse_printf_format-implementation.patch \
39 file://0003-src-basic-missing.h-check-for-missing-strndupa.patch \
40 file://0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
41 file://0005-add-missing-FTW_-macros-for-musl.patch \
42 file://0006-Use-uintmax_t-for-handling-rlim_t.patch \
43 file://0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
44 file://0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
45 file://0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
46 file://0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
47 file://0011-avoid-redefinition-of-prctl_mm_map-structure.patch \
48 file://0012-do-not-disable-buffer-in-writing-files.patch \
49 file://0013-Handle-__cpu_mask-usage.patch \
50 file://0014-Handle-missing-gshadow.patch \
51 file://0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
52 file://0016-pass-correct-parameters-to-getdents64.patch \
53 file://0017-Adjust-for-musl-headers.patch \
54 file://0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch \
55 file://0019-errno-util-Make-STRERROR-portable-for-musl.patch \
56 file://0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch \
57 file://0021-shared-Do-not-use-malloc_info-on-musl.patch \
58 file://0022-avoid-missing-LOCK_EX-declaration.patch \
59 "
60
61PAM_PLUGINS = " \
62 pam-plugin-unix \
63 pam-plugin-loginuid \
64 pam-plugin-keyinit \
65 pam-plugin-namespace \
66"
67
68PACKAGECONFIG ??= " \
69 ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam pni-names selinux smack usrmerge polkit seccomp', d)} \
70 ${@bb.utils.contains('DISTRO_FEATURES', 'minidebuginfo', 'coredump elfutils', '', d)} \
71 ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
72 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
73 ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', 'link-udev-shared', d)} \
74 backlight \
75 binfmt \
76 cgroupv2 \
77 gshadow \
78 hibernate \
79 hostnamed \
80 idn \
81 ima \
82 kmod \
83 localed \
84 logind \
85 machined \
86 myhostname \
87 networkd \
88 nss \
89 nss-mymachines \
90 nss-resolve \
91 quotacheck \
92 randomseed \
93 resolved \
94 set-time-epoch \
95 sysusers \
96 sysvinit \
97 timedated \
98 timesyncd \
99 userdb \
100 utmp \
101 vconsole \
102 wheel-group \
103 zstd \
104"
105
106PACKAGECONFIG:remove:libc-musl = " \
107 gshadow \
108 idn \
109 localed \
110 myhostname \
111 nss \
112 nss-mymachines \
113 nss-resolve \
114 sysusers \
115 userdb \
116 utmp \
117"
118
119# https://github.com/seccomp/libseccomp/issues/347
120PACKAGECONFIG:remove:mipsarch = "seccomp"
121
122TARGET_CC_ARCH:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 -D_LARGEFILE64_SOURCE"
123
124# Some of the dependencies are weak-style recommends - if not available at runtime,
125# systemd won't fail but the library-related feature will be skipped with a warning.
126
127# Use the upstream systemd serial-getty@.service and rely on
128# systemd-getty-generator instead of using the OE-core specific
129# systemd-serialgetty.bb - not enabled by default.
130PACKAGECONFIG[serial-getty-generator] = ""
131
132PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
133PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
134PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
135PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
136PACKAGECONFIG[bpf-framework] = "-Dbpf-framework=true,-Dbpf-framework=false,clang-native bpftool-native libbpf,libbpf"
137PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
138PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid"
139PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
140PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup"
141PACKAGECONFIG[cryptsetup-plugins] = "-Dlibcryptsetup-plugins=true,-Dlibcryptsetup-plugins=false,cryptsetup,,cryptsetup"
142PACKAGECONFIG[tpm2] = "-Dtpm2=true,-Dtpm2=false,tpm2-tss,tpm2-tss libtss2 libtss2-tcti-device"
143# If multiple compression libraries are enabled, the format to use for compression is chosen implicitly,
144# so if you want to compress with e.g. lz4 you cannot enable zstd, so you cannot read zstd-compressed journal files.
145# This option allows to enable all compression formats for reading, but choosing a specific one for writing.
146PACKAGECONFIG[default-compression-lz4] = "-Dlz4=true -Ddefault-compression=lz4,,lz4"
147PACKAGECONFIG[default-compression-xz] = "-Dxz=true -Ddefault-compression=xz,,xz"
148PACKAGECONFIG[default-compression-zstd] = "-Dzstd=true -Ddefault-compression=zstd,,zstd"
149PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
150PACKAGECONFIG[efi] = "-Defi=true -Dbootloader=true,-Defi=false -Dbootloader=false,python3-pyelftools-native"
151PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils,,libelf libdw"
152PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
153PACKAGECONFIG[repart] = "-Drepart=true,-Drepart=false"
154PACKAGECONFIG[homed] = "-Dhomed=true,-Dhomed=false"
155# Sign the journal for anti-tampering
156PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
157PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
158PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
159PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
160PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
161PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
162PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
163# importd requires journal-upload/xz/zlib/bzip2/gcrypt
164PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false,glib-2.0"
165# Update NAT firewall rules
166PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
167PACKAGECONFIG[journal-color] = ",,,less"
168PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
169PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
170PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig"
171PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn"
172PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2"
173# Link udev shared with systemd helper library.
174# If enabled the udev package depends on the systemd package (which has the needed shared library).
175PACKAGECONFIG[link-udev-shared] = "-Dlink-udev-shared=true,-Dlink-udev-shared=false"
176PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
177PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
178PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
179PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
180PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
181PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
182PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname"
183PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
184PACKAGECONFIG[no-dns-fallback] = "-Ddns-servers="
185PACKAGECONFIG[no-ntp-fallback] = "-Dntp-servers="
186PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false,,libnss-systemd"
187PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
188PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
189PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false"
190PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
191PACKAGECONFIG[p11kit] = "-Dp11kit=true,-Dp11kit=false,p11-kit"
192PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
193PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
194PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
195# If polkit is disabled and networkd+hostnamed are in use, enabling this option and
196# using dbus-broker will allow networkd to be authorized to change the
197# hostname without acquiring additional privileges
198PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit"
199PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
200PACKAGECONFIG[pstore] = "-Dpstore=true,-Dpstore=false"
201PACKAGECONFIG[pni-names] = ",,,"
202PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode"
203PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
204PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
205PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
206PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
207PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
208PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
209PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
210PACKAGECONFIG[sysext] = "-Dsysext=true, -Dsysext=false"
211PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
212PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
213# When enabled use reproducible build timestamp if set as time epoch,
214# or build time if not. When disabled, time epoch is unset.
215def build_epoch(d):
216 epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
217 return '-Dtime-epoch=%d' % int(epoch)
218PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
219PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
220PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
221PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
222PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
223PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
224PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
225PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
226PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
227PACKAGECONFIG[wheel-group] = "-Dwheel-group=true, -Dwheel-group=false"
228PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false"
229# Verify keymaps on locale change
230PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
231PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
232PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"
233PACKAGECONFIG[zstd] = "-Dzstd=true,-Dzstd=false,zstd"
234
235RESOLV_CONF ??= ""
236
237# bpf-framework: pass the recipe-sysroot to the compiler used to build
238# the eBPFs, so that it can find needed system includes in there.
239CFLAGS:append = " --sysroot=${STAGING_DIR_TARGET}"
240
241# Helper variables to clarify locations. This mirrors the logic in systemd's
242# build system.
243rootprefix ?= "${root_prefix}"
244rootlibdir ?= "${base_libdir}"
245rootlibexecdir = "${rootprefix}/lib"
246
247EXTRA_OEMESON += "-Dnobody-user=nobody \
248 -Dnobody-group=nogroup \
249 -Drootlibdir=${rootlibdir} \
250 -Drootprefix=${rootprefix} \
251 -Ddefault-locale=C \
252 -Dmode=release \
253 -Dsystem-alloc-uid-min=101 \
254 -Dsystem-uid-max=999 \
255 -Dsystem-alloc-gid-min=101 \
256 -Dsystem-gid-max=999 \
257 -Dcreate-log-dirs=false \
258 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
259 "
260
261# Hardcode target binary paths to avoid using paths from sysroot or worse
262# it pokes for these binaries on build host and encodes that distro assumption
263# into target
264EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
265 -Dkmod-path=${base_bindir}/kmod \
266 -Dmount-path=${base_bindir}/mount \
267 -Dquotacheck-path=${sbindir}/quotacheck \
268 -Dquotaon-path=${sbindir}/quotaon \
269 -Dsulogin-path=${base_sbindir}/sulogin \
270 -Dnologin-path=${base_sbindir}/nologin \
271 -Dumount-path=${base_bindir}/umount \
272 -Dloadkeys-path=${bindir}/loadkeys \
273 -Dsetfont-path=${bindir}/setfont"
274
275# The 60 seconds is watchdog's default vaule.
276WATCHDOG_TIMEOUT ??= "60"
277
278do_install() {
279 meson_do_install
280 if ${@bb.utils.contains('PACKAGECONFIG', 'sysusers', 'true', 'false', d)}; then
281 # Change the root user's home directory in /lib/sysusers.d/basic.conf.
282 # This is done merely for backward compatibility with previous systemd recipes.
283 # systemd hardcodes root user's HOME to be "/root". Changing to use other values
284 # may have unexpected runtime behaviors.
285 if [ "${ROOT_HOME}" != "/root" ]; then
286 bbwarn "Using ${ROOT_HOME} as root user's home directory is not fully supported by systemd"
287 sed -i -e 's#/root#${ROOT_HOME}#g' ${D}${exec_prefix}/lib/sysusers.d/basic.conf
288 fi
289 fi
290 install -d ${D}/${base_sbindir}
291 if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
292 # Provided by a separate recipe
293 rm ${D}${systemd_system_unitdir}/serial-getty* -f
294 fi
295
296 # Provide support for initramfs
297 [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
298 [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
299
300 install -d ${D}${sysconfdir}/udev/rules.d/
301 install -d ${D}${nonarch_libdir}/tmpfiles.d
302 for rule in $(find ${UNPACKDIR} -maxdepth 1 -type f -name "*.rules"); do
303 install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/
304 done
305
306 install -m 0644 ${UNPACKDIR}/00-create-volatile.conf ${D}${nonarch_libdir}/tmpfiles.d/
307
308 if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
309 install -d ${D}${sysconfdir}/init.d
310 install -m 0755 ${UNPACKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
311 sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
312 install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
313 fi
314
315 if "${@'true' if oe.types.boolean(d.getVar('VOLATILE_LOG_DIR')) else 'false'}"; then
316 # /var/log is typically a symbolic link to inside /var/volatile,
317 # which is expected to be empty.
318 rm -rf ${D}${localstatedir}/log
319 elif [ -e ${D}${localstatedir}/log/journal ]; then
320 chown root:systemd-journal ${D}${localstatedir}/log/journal
321
322 # journal-remote creates this at start
323 rm -rf ${D}${localstatedir}/log/journal/remote
324 fi
325
326 # if the user requests /tmp be on persistent storage (i.e. not volatile)
327 # then don't use a tmpfs for /tmp
328 if [ "${VOLATILE_TMP_DIR}" != "yes" ]; then
329 rm -f ${D}${rootlibexecdir}/systemd/system/tmp.mount
330 rm -f ${D}${rootlibexecdir}/systemd/system/local-fs.target.wants/tmp.mount
331 fi
332
333 install -d ${D}${systemd_system_unitdir}/graphical.target.wants
334 install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
335 install -d ${D}${systemd_system_unitdir}/poweroff.target.wants
336 install -d ${D}${systemd_system_unitdir}/reboot.target.wants
337 install -d ${D}${systemd_system_unitdir}/rescue.target.wants
338
339 # Create symlinks for systemd-update-utmp-runlevel.service
340 if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
341 ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/graphical.target.wants/systemd-update-utmp-runlevel.service
342 ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/multi-user.target.wants/systemd-update-utmp-runlevel.service
343 ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/poweroff.target.wants/systemd-update-utmp-runlevel.service
344 ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/reboot.target.wants/systemd-update-utmp-runlevel.service
345 ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/rescue.target.wants/systemd-update-utmp-runlevel.service
346 fi
347
348 # this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
349 # for existence else it fails
350 if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ] &&
351 ! ${@bb.utils.contains('PACKAGECONFIG', 'networkd', 'true', 'false', d)}; then
352 echo 'd /run/systemd/netif/links 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
353 fi
354 if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
355 echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
356 echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
357 echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
358 ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
359 else
360 resolv_conf="${@bb.utils.contains('RESOLV_CONF', 'stub-resolv', 'run/systemd/resolve/stub-resolv.conf', 'run/systemd/resolve/resolv.conf', d)}"
361 sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../${resolv_conf}%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
362 ln -s ../${resolv_conf} ${D}${sysconfdir}/resolv-conf.systemd
363 fi
364 if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
365 rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf
366 rm -r ${D}${sysconfdir}/X11
367 fi
368
369 # If polkit is setup fixup permissions and ownership
370 if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
371 if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
372 chmod 700 ${D}${datadir}/polkit-1/rules.d
373 chown polkitd:root ${D}${datadir}/polkit-1/rules.d
374 fi
375 fi
376
377 # If polkit is not available and a fallback was requested, install a drop-in that allows networkd to
378 # request hostname changes via DBUS without elevating its privileges
379 if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then
380 install -d ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
381 install -m 0644 ${UNPACKDIR}/00-hostnamed-network-user.conf ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
382 install -d ${D}${datadir}/dbus-1/system.d/
383 install -m 0644 ${UNPACKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
384 fi
385
386 # create link for existing udev rules
387 ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
388
389 # install default policy for presets
390 # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
391 install -Dm 0644 ${UNPACKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset
392
393 # add a profile fragment to disable systemd pager with busybox less
394 install -Dm 0644 ${UNPACKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh
395
396 if [ -n "${WATCHDOG_TIMEOUT}" ]; then
397 sed -i -e 's/#RebootWatchdogSec=10min/RebootWatchdogSec=${WATCHDOG_TIMEOUT}/' \
398 ${D}/${sysconfdir}/systemd/system.conf
399 fi
400
401 if ${@bb.utils.contains('PACKAGECONFIG', 'pni-names', 'true', 'false', d)}; then
402 if ! grep -q '^NamePolicy=.*mac' ${D}${rootlibexecdir}/systemd/network/99-default.link; then
403 sed -i '/^NamePolicy=/s/$/ mac/' ${D}${rootlibexecdir}/systemd/network/99-default.link
404 fi
405 if ! grep -q 'AlternativeNamesPolicy=.*mac' ${D}${rootlibexecdir}/systemd/network/99-default.link; then
406 sed -i '/AlternativeNamesPolicy=/s/$/ mac/' ${D}${rootlibexecdir}/systemd/network/99-default.link
407 fi
408 fi
409}
410
411python populate_packages:prepend (){
412 systemdlibdir = d.getVar("rootlibdir")
413 do_split_packages(d, systemdlibdir, r'^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
414}
415PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"
416
417PACKAGE_BEFORE_PN = "\
418 ${PN}-analyze \
419 ${PN}-binfmt \
420 ${PN}-container \
421 ${PN}-crypt \
422 ${PN}-extra-utils \
423 ${PN}-gui \
424 ${PN}-initramfs \
425 ${PN}-journal-gatewayd \
426 ${PN}-journal-upload \
427 ${PN}-journal-remote \
428 ${PN}-kernel-install \
429 ${PN}-rpm-macros \
430 ${PN}-udev-rules \
431 ${PN}-vconsole-setup \
432 ${PN}-zsh-completion \
433 libsystemd-shared \
434 udev \
435 udev-bash-completion \
436 udev-hwdb \
437"
438
439SUMMARY:${PN}-container = "Tools for containers and VMs"
440DESCRIPTION:${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
441
442SUMMARY:${PN}-journal-gatewayd = "HTTP server for journal events"
443DESCRIPTION:${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
444
445SUMMARY:${PN}-journal-upload = "Send journal messages over the network"
446DESCRIPTION:${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
447
448SUMMARY:${PN}-journal-remote = "Receive journal messages over the network"
449DESCRIPTION:${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
450
451SUMMARY:libsystemd-shared = "Systemd shared library"
452
453SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
454 ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
455 ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
456 ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
457"
458SYSTEMD_SERVICE:${PN}-binfmt = "systemd-binfmt.service"
459
460USERADD_PACKAGES = "${PN} \
461 udev \
462 ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
463 ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
464 ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
465"
466GROUPADD_PARAM:${PN} = "-r systemd-journal;"
467GROUPADD_PARAM:udev = "-r render"
468GROUPADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}"
469USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}"
470USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}"
471USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
472USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}"
473USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}"
474USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'oomd', '--system -d / -M --shell /sbin/nologin systemd-oom;', '', d)}"
475USERADD_PARAM:${PN}-journal-gatewayd = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway"
476USERADD_PARAM:${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote"
477USERADD_PARAM:${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload"
478
479FILES:${PN}-analyze = "${bindir}/systemd-analyze"
480
481FILES:${PN}-crypt = "${bindir}/systemd-cryptenroll \
482 ${libdir}/cryptsetup \
483 "
484RRECOMMENDS:${PN} += "${PN}-crypt"
485
486FILES:${PN}-initramfs = "/init"
487RDEPENDS:${PN}-initramfs = "${PN}"
488
489FILES:${PN}-gui = "${bindir}/systemadm"
490
491FILES:${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
492 ${systemd_system_unitdir}/systemd-vconsole-setup.service \
493 ${systemd_system_unitdir}/sysinit.target.wants/systemd-vconsole-setup.service"
494
495RDEPENDS:${PN}-kernel-install += "bash"
496FILES:${PN}-kernel-install = "${bindir}/kernel-install \
497 ${sysconfdir}/kernel/ \
498 ${exec_prefix}/lib/kernel \
499 "
500FILES:${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
501 "
502
503FILES:${PN}-zsh-completion = "${datadir}/zsh/site-functions"
504
505FILES:${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
506 ${exec_prefix}/lib/binfmt.d \
507 ${rootlibexecdir}/systemd/systemd-binfmt \
508 ${systemd_system_unitdir}/proc-sys-fs-binfmt_misc.* \
509 ${systemd_system_unitdir}/systemd-binfmt.service"
510RRECOMMENDS:${PN}-binfmt = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', 'kernel-module-binfmt-misc', '', d)}"
511
512RDEPENDS:${PN}-vconsole-setup = "${@bb.utils.contains('PACKAGECONFIG', 'vconsole', 'kbd kbd-consolefonts kbd-keymaps', '', d)}"
513
514
515FILES:${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
516 ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
517 ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
518 ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
519 ${datadir}/systemd/gatewayd/browse.html \
520 "
521SYSTEMD_SERVICE:${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
522
523FILES:${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
524 ${systemd_system_unitdir}/systemd-journal-upload.service \
525 ${sysconfdir}/systemd/journal-upload.conf \
526 "
527SYSTEMD_SERVICE:${PN}-journal-upload = "systemd-journal-upload.service"
528
529FILES:${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
530 ${sysconfdir}/systemd/journal-remote.conf \
531 ${systemd_system_unitdir}/systemd-journal-remote.service \
532 ${systemd_system_unitdir}/systemd-journal-remote.socket \
533 "
534SYSTEMD_SERVICE:${PN}-journal-remote = "systemd-journal-remote.socket"
535
536
537FILES:${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
538 ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
539 ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \
540 ${base_bindir}/machinectl \
541 ${bindir}/systemd-nspawn \
542 ${nonarch_libdir}/systemd/import-pubring.gpg \
543 ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
544 ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
545 ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
546 ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \
547 ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \
548 ${systemd_system_unitdir}/machine.slice \
549 ${systemd_system_unitdir}/machines.target \
550 ${systemd_system_unitdir}/org.freedesktop.import1.busname \
551 ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
552 ${systemd_system_unitdir}/systemd-importd.service \
553 ${systemd_system_unitdir}/systemd-machined.service \
554 ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
555 ${systemd_system_unitdir}/var-lib-machines.mount \
556 ${rootlibexecdir}/systemd/systemd-import \
557 ${rootlibexecdir}/systemd/systemd-importd \
558 ${rootlibexecdir}/systemd/systemd-machined \
559 ${rootlibexecdir}/systemd/systemd-pull \
560 ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
561 ${exec_prefix}/lib/tmpfiles.d/README \
562 ${systemd_system_unitdir}/systemd-nspawn@.service \
563 ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
564 ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
565 ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
566 ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
567 ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
568 ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
569 "
570
571RDEPENDS:${PN}-container = "${@bb.utils.contains('PACKAGECONFIG', 'nss-mymachines', 'libnss-mymachines', '', d)}"
572
573# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
574RRECOMMENDS:${PN}-container += "\
575 ${PN}-journal-gatewayd \
576 ${PN}-journal-remote \
577 ${PN}-journal-upload \
578 kernel-module-dm-mod \
579 kernel-module-loop \
580 kernel-module-tun \
581 tar \
582 "
583
584FILES:${PN}-extra-utils = "\
585 ${base_bindir}/systemd-escape \
586 ${base_bindir}/systemd-inhibit \
587 ${bindir}/systemd-detect-virt \
588 ${bindir}/systemd-dissect \
589 ${bindir}/systemd-path \
590 ${bindir}/systemd-run \
591 ${bindir}/systemd-cat \
592 ${bindir}/systemd-creds \
593 ${bindir}/systemd-delta \
594 ${bindir}/systemd-cgls \
595 ${bindir}/systemd-cgtop \
596 ${bindir}/systemd-stdio-bridge \
597 ${base_bindir}/systemd-ask-password \
598 ${base_bindir}/systemd-tty-ask-password-agent \
599 ${base_sbindir}/mount.ddi \
600 ${systemd_system_unitdir}/initrd.target.wants/systemd-pcrphase-initrd.path \
601 ${systemd_system_unitdir}/systemd-ask-password-console.path \
602 ${systemd_system_unitdir}/systemd-ask-password-console.service \
603 ${systemd_system_unitdir}/systemd-ask-password-wall.path \
604 ${systemd_system_unitdir}/systemd-ask-password-wall.service \
605 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
606 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
607 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase.path \
608 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase-sysinit.path \
609 ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
610 ${rootlibexecdir}/systemd/systemd-resolve-host \
611 ${rootlibexecdir}/systemd/systemd-ac-power \
612 ${rootlibexecdir}/systemd/systemd-activate \
613 ${rootlibexecdir}/systemd/systemd-measure \
614 ${rootlibexecdir}/systemd/systemd-pcrphase \
615 ${rootlibexecdir}/systemd/systemd-socket-proxyd \
616 ${rootlibexecdir}/systemd/systemd-reply-password \
617 ${rootlibexecdir}/systemd/systemd-sleep \
618 ${rootlibexecdir}/systemd/system-sleep \
619 ${systemd_system_unitdir}/systemd-hibernate.service \
620 ${systemd_system_unitdir}/systemd-hybrid-sleep.service \
621 ${systemd_system_unitdir}/systemd-pcrphase-initrd.service \
622 ${systemd_system_unitdir}/systemd-pcrphase.service \
623 ${systemd_system_unitdir}/systemd-pcrphase-sysinit.service \
624 ${systemd_system_unitdir}/systemd-suspend.service \
625 ${systemd_system_unitdir}/sleep.target \
626 ${rootlibexecdir}/systemd/systemd-initctl \
627 ${systemd_system_unitdir}/systemd-initctl.service \
628 ${systemd_system_unitdir}/systemd-initctl.socket \
629 ${systemd_system_unitdir}/sockets.target.wants/systemd-initctl.socket \
630 ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
631 ${rootlibexecdir}/systemd/systemd-cgroups-agent \
632"
633
634FILES:${PN}-udev-rules = "\
635 ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
636 ${rootlibexecdir}/udev/rules.d/71-seat.rules \
637 ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
638 ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
639"
640
641CONFFILES:${PN} = "${sysconfdir}/systemd/coredump.conf \
642 ${sysconfdir}/systemd/journald.conf \
643 ${sysconfdir}/systemd/logind.conf \
644 ${sysconfdir}/systemd/networkd.conf \
645 ${sysconfdir}/systemd/pstore.conf \
646 ${sysconfdir}/systemd/resolved.conf \
647 ${sysconfdir}/systemd/sleep.conf \
648 ${sysconfdir}/systemd/system.conf \
649 ${sysconfdir}/systemd/timesyncd.conf \
650 ${sysconfdir}/systemd/user.conf \
651"
652
653FILES:${PN} = " ${base_bindir}/* \
654 ${base_sbindir}/shutdown \
655 ${base_sbindir}/halt \
656 ${base_sbindir}/poweroff \
657 ${base_sbindir}/runlevel \
658 ${base_sbindir}/telinit \
659 ${base_sbindir}/resolvconf \
660 ${base_sbindir}/reboot \
661 ${base_sbindir}/init \
662 ${datadir}/dbus-1/services \
663 ${datadir}/dbus-1/system-services \
664 ${datadir}/polkit-1 \
665 ${datadir}/${BPN} \
666 ${datadir}/factory \
667 ${sysconfdir}/credstore/ \
668 ${sysconfdir}/credstore.encrypted/ \
669 ${sysconfdir}/dbus-1/ \
670 ${sysconfdir}/modules-load.d/ \
671 ${sysconfdir}/pam.d/ \
672 ${sysconfdir}/profile.d/ \
673 ${sysconfdir}/sysctl.d/ \
674 ${sysconfdir}/systemd/ \
675 ${sysconfdir}/tmpfiles.d/ \
676 ${sysconfdir}/xdg/ \
677 ${sysconfdir}/init.d/README \
678 ${sysconfdir}/resolv-conf.systemd \
679 ${sysconfdir}/X11/xinit/xinitrc.d/* \
680 ${rootlibexecdir}/systemd/* \
681 ${rootlibdir}/systemd/libsystemd-core* \
682 ${libdir}/pam.d \
683 ${nonarch_libdir}/pam.d \
684 ${systemd_unitdir}/* \
685 ${base_libdir}/security/*.so \
686 /cgroup \
687 ${bindir}/systemd* \
688 ${bindir}/busctl \
689 ${bindir}/coredumpctl \
690 ${bindir}/localectl \
691 ${bindir}/hostnamectl \
692 ${bindir}/resolvectl \
693 ${bindir}/timedatectl \
694 ${bindir}/bootctl \
695 ${bindir}/oomctl \
696 ${bindir}/userdbctl \
697 ${exec_prefix}/lib/credstore \
698 ${exec_prefix}/lib/tmpfiles.d/*.conf \
699 ${exec_prefix}/lib/systemd \
700 ${exec_prefix}/lib/modules-load.d \
701 ${exec_prefix}/lib/sysctl.d \
702 ${exec_prefix}/lib/sysusers.d \
703 ${exec_prefix}/lib/environment.d \
704 ${exec_prefix}/lib/pcrlock.d \
705 ${localstatedir} \
706 ${rootlibexecdir}/modprobe.d/systemd.conf \
707 ${rootlibexecdir}/modprobe.d/README \
708 ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
709 ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
710 ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
711 ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
712 ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
713 ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \
714 ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
715 ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
716 ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
717 ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
718 ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \
719 ${datadir}/dbus-1/system.d/org.freedesktop.home1.conf \
720 "
721
722FILES:${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
723
724RDEPENDS:${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck util-linux-swaponoff"
725RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
726RDEPENDS:${PN} += "volatile-binds"
727
728RRECOMMENDS:${PN} += "systemd-extra-utils \
729 udev-hwdb \
730 e2fsprogs-e2fsck \
731 kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \
732 os-release \
733 systemd-conf \
734 ${@bb.utils.contains('PACKAGECONFIG', 'logind', 'pam-plugin-umask', '', d)} \
735"
736
737INSANE_SKIP:${PN} += "dev-so libdir"
738INSANE_SKIP:${PN}-dbg += "libdir"
739INSANE_SKIP:${PN}-doc += " libdir"
740INSANE_SKIP:libsystemd-shared += "libdir"
741
742FILES:libsystemd-shared = "${rootlibdir}/systemd/libsystemd-shared*.so"
743
744RPROVIDES:udev = "hotplug"
745
746RDEPENDS:udev-bash-completion += "bash-completion"
747RDEPENDS:udev-hwdb += "udev"
748
749FILES:udev += "${base_sbindir}/udevd \
750 ${rootlibexecdir}/systemd/network/99-default.link \
751 ${rootlibexecdir}/systemd/systemd-udevd \
752 ${rootlibexecdir}/udev/accelerometer \
753 ${rootlibexecdir}/udev/ata_id \
754 ${rootlibexecdir}/udev/cdrom_id \
755 ${rootlibexecdir}/udev/collect \
756 ${rootlibexecdir}/udev/dmi_memory_id \
757 ${rootlibexecdir}/udev/fido_id \
758 ${rootlibexecdir}/udev/findkeyboards \
759 ${rootlibexecdir}/udev/iocost \
760 ${rootlibexecdir}/udev/keyboard-force-release.sh \
761 ${rootlibexecdir}/udev/keymap \
762 ${rootlibexecdir}/udev/mtd_probe \
763 ${rootlibexecdir}/udev/scsi_id \
764 ${rootlibexecdir}/udev/v4l_id \
765 ${rootlibexecdir}/udev/keymaps \
766 ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
767 ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \
768 ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \
769 ${rootlibexecdir}/udev/rules.d/60-block.rules \
770 ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
771 ${rootlibexecdir}/udev/rules.d/60-dmi-id.rules \
772 ${rootlibexecdir}/udev/rules.d/60-drm.rules \
773 ${rootlibexecdir}/udev/rules.d/60-evdev.rules \
774 ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \
775 ${rootlibexecdir}/udev/rules.d/60-infiniband.rules \
776 ${rootlibexecdir}/udev/rules.d/60-input-id.rules \
777 ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
778 ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
779 ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
780 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-mtd.rules \
781 ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
782 ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
783 ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
784 ${rootlibexecdir}/udev/rules.d/60-serial.rules \
785 ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \
786 ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
787 ${rootlibexecdir}/udev/rules.d/70-camera.rules \
788 ${rootlibexecdir}/udev/rules.d/70-joystick.rules \
789 ${rootlibexecdir}/udev/rules.d/70-memory.rules \
790 ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
791 ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
792 ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \
793 ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
794 ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
795 ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
796 ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
797 ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
798 ${rootlibexecdir}/udev/rules.d/81-net-dhcp.rules \
799 ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
800 ${rootlibexecdir}/udev/rules.d/90-iocost.rules \
801 ${rootlibexecdir}/udev/rules.d/README \
802 ${sysconfdir}/udev \
803 ${sysconfdir}/init.d/systemd-udevd \
804 ${systemd_system_unitdir}/*udev* \
805 ${systemd_system_unitdir}/*.wants/*udev* \
806 ${base_bindir}/systemd-hwdb \
807 ${base_bindir}/udevadm \
808 ${base_sbindir}/udevadm \
809 ${systemd_system_unitdir}/systemd-hwdb-update.service \
810 "
811
812FILES:udev-bash-completion = "${datadir}/bash-completion/completions/udevadm"
813FILES:udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \
814 "
815
816RCONFLICTS:${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}"
817
818INITSCRIPT_PACKAGES = "udev"
819INITSCRIPT_NAME:udev = "systemd-udevd"
820INITSCRIPT_PARAMS:udev = "start 03 S ."
821
822python __anonymous() {
823 if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
824 d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
825
826 if bb.utils.contains('DISTRO_FEATURES', 'systemd-resolved', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'nss-resolve resolved', True, False, d):
827 bb.error("DISTRO_FEATURES[systemd-resolved] requires PACKAGECONFIG[nss-resolve, resolved]")
828
829 if bb.utils.contains('PACKAGECONFIG', 'repart', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'openssl', True, False, d):
830 bb.error("PACKAGECONFIG[repart] requires PACKAGECONFIG[openssl]")
831
832 if bb.utils.contains('PACKAGECONFIG', 'homed', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'userdb openssl cryptsetup', True, False, d):
833 bb.error("PACKAGECONFIG[homed] requires PACKAGECONFIG[userdb], PACKAGECONFIG[openssl] and PACKAGECONFIG[cryptsetup]")
834}
835
836python do_warn_musl() {
837 if d.getVar('TCLIBC') == "musl":
838 bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.")
839}
840addtask warn_musl before do_configure
841
842ALTERNATIVE:${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}"
843
844ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
845ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
846ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"
847
848ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
849ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
850ALTERNATIVE_PRIORITY[halt] ?= "300"
851
852ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
853ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
854ALTERNATIVE_PRIORITY[reboot] ?= "300"
855
856ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
857ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
858ALTERNATIVE_PRIORITY[shutdown] ?= "300"
859
860ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
861ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
862ALTERNATIVE_PRIORITY[poweroff] ?= "300"
863
864ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
865ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
866ALTERNATIVE_PRIORITY[runlevel] ?= "300"
867
868pkg_postinst:${PN}:libc-glibc () {
869 if ${@bb.utils.contains('PACKAGECONFIG', 'myhostname', 'true', 'false', d)}; then
870 sed -e '/^hosts:/s/\s*\<myhostname\>//' \
871 -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
872 -i $D${sysconfdir}/nsswitch.conf
873 fi
874 if ${@bb.utils.contains('PACKAGECONFIG', 'nss', 'true', 'false', d)}; then
875 sed -e 's#\(^passwd:.*\)#\1 systemd#' \
876 -e 's#\(^group:.*\)#\1 systemd#' \
877 -e 's#\(^shadow:.*\)#\1 systemd#' \
878 -i $D${sysconfdir}/nsswitch.conf
879 fi
880}
881
882pkg_prerm:${PN}:libc-glibc () {
883 if ${@bb.utils.contains('PACKAGECONFIG', 'myhostname', 'true', 'false', d)}; then
884 sed -e '/^hosts:/s/\s*\<myhostname\>//' \
885 -e '/^hosts:/s/\s*myhostname//' \
886 -i $D${sysconfdir}/nsswitch.conf
887 fi
888 if ${@bb.utils.contains('PACKAGECONFIG', 'nss', 'true', 'false', d)}; then
889 sed -e '/^passwd:/s#\s*systemd##' \
890 -e '/^group:/s#\s*systemd##' \
891 -e '/^shadow:/s#\s*systemd##' \
892 -i $D${sysconfdir}/nsswitch.conf
893 fi
894}
895
896PACKAGE_WRITE_DEPS += "qemu-native"
897pkg_postinst:udev-hwdb () {
898 if test -n "$D"; then
899 $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}" base_bindir="${base_bindir}"
900 else
901 udevadm hwdb --update
902 fi
903}
904
905pkg_prerm:udev-hwdb () {
906 rm -f $D${sysconfdir}/udev/hwdb.bin
907}