Magellan Linux

Annotation of /smage/trunk/core/systemd/systemd-255.4-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18098 - (hide annotations) (download)
Fri Mar 22 11:56:25 2024 UTC (3 months ago) by niro
File size: 53056 byte(s)
-removed disabled state, dracut handles new systemd versions properly
1 niro 18089 # $Id$
2    
3     PNAME="systemd"
4     PVER="255.4"
5     PBUILD="r1"
6    
7     # add '-stable' to include minor backports version or nothing for only major releases
8     SYSTEMD_BRANCH="-stable"
9    
10     # 1=enable lib32 split packages
11     # 0=disable lib32 split packages
12     ENABLE_LIB32_PACKAGES="1"
13    
14     # 1=enable dev split packages
15     # 0=disable dev split packages
16     ENABLE_DEV_PACKAGES="1"
17    
18     # enable or disable sysvinit support
19     # 1=yes, 0=no
20     SYSVINIT_SUPPORT=0
21    
22     # enable or disable busybox support
23     # 1=yes, 0=no
24     BUSYBOX_SUPPORT=1
25    
26     # enable or disable acl support
27     # 1=yes, 0=no
28     ACL_SUPPORT=0
29    
30     # enable or disable cryptsetup support
31     # 1=yes, 0=no
32     CRYPTSETUP_SUPPORT=0
33    
34     # enable or disable iptables support
35     # 1=yes, 0=no
36     IPTABLES_SUPPORT=0
37    
38     # enable or disable pam support
39     # 1=yes, 0=no
40     PAM_SUPPORT=1
41    
42     SPLIT_PACKAGES="libsystemd-core libsystemd-shared systemd-systemctl libudev udev libnss-myhostname libnss-mymachines libnss-resolve libnss-systemd libsystemd systemd-coredump systemd systemd-tools"
43     if [[ ${PAM_SUPPORT} = 1 ]]
44     then
45     SPLIT_PACKAGES+=" pam-systemd"
46     fi
47    
48     # lib32 packages
49     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
50     then
51     SPLIT_PACKAGES+=" libsystemd-core-lib32 libsystemd-shared-lib32 libudev-lib32 libsystemd-lib32 libnss-myhostname-lib32 libnss-mymachines-lib32 libnss-resolve-lib32 libnss-systemd-lib32"
52     if [[ ${PAM_SUPPORT} = 1 ]]
53     then
54     SPLIT_PACKAGES+=" pam-systemd-lib32"
55     fi
56     fi
57    
58     # dev packages
59     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
60     then
61     SPLIT_PACKAGES+=" libudev-dev udev-dev libnss-myhostname-dev libnss-mymachines-dev libnss-resolve-dev libnss-systemd-dev systemd-systemctl-dev systemd-coredump-dev systemd-dev"
62     fi
63    
64     PCAT="sys-apps"
65     HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd"
66    
67     # pam file versions
68     PAMD_USER_REV=1.2
69    
70     # export this variables for preinstall
71     SPECIAL_VARS="SYSVINIT_SUPPORT BUSYBOX_SUPPORT"
72     # and this functions too
73     SPECIAL_FUNCTIONS="pkg_setup"
74    
75     GLIBC_DEPEND=">= virtual/glibc"
76     GLIBC_LIB32_DEPEND=">= virtual/glibc-lib32"
77     GLIBC_DEV_DEPEND=">= virtual/glibc-dev"
78     LIBGCC_DEPEND=">= sys-libs/libgcc-13.1"
79     LIBGCC_LIB32_DEPEND=">= sys-libs/libgcc-lib32-13.1"
80     LIBGCC_DEV_DEPEND=">= sys-libs/libgcc-dev-13.1"
81     ACL_DEPEND=">= sys-apps/acl-2.3"
82     ACL_LIB32_DEPEND=">= sys-apps/acl-lib32-2.3"
83     ACL_DEV_DEPEND=">= sys-apps/acl-dev-2.3"
84     PROCPS_DEPEND=">= virtual/procps"
85     ZLIB_DEPEND=">= sys-libs/zlib-1.2.13"
86     ZLIB_LIB32_DEPEND=">= sys-libs/zlib-lib32-1.2.13"
87     ZLIB_DEV_DEPEND=">= sys-libs/zlib-dev-1.2.13"
88     BZIP2_DEPEND=">= app-arch/bzip2-1.0.8"
89     BZIP2_LIB32_DEPEND=">= app-arch/bzip2-lib32-1.0.8"
90     BZIP2_DEV_DEPEND=">= app-arch/bzip2-dev-1.0.8"
91     # we need the actual lib here, not the busybox counterpart of the utils
92     XZ_DEPEND=">= app-arch/liblzma-5.4"
93     XZ_LIB32_DEPEND=">= app-arch/liblzma-lib32-5.4"
94     XZ_DEV_DEPEND=">= app-arch/liblzma-dev-5.4"
95     LZ4_DEPEND=">= app-arch/lz4-1.9"
96     LZ4_LIB32_DEPEND=">= app-arch/lz4-lib32-1.9"
97     LZ4_DEV_DEPEND=">= app-arch/lz4-dev-1.9"
98     ZSTD_DEPEND=">= app-arch/zstd-1.5"
99     ZSTD_LIB32_DEPEND=">= app-arch/zstd-lib32-1.5"
100     ZSTD_DEV_DEPEND=">= app-arch/zstd-dev-1.5"
101     #LIBGCRYPT_DEPEND=">= app-crypt/libgcrypt-1.8"
102     LIBXCRYPT_DEPEND=">= sys-libs/libxcrypt-4.4"
103     LIBXCRYPT_LIB32_DEPEND=">= sys-libs/libxcrypt-lib32-4.4"
104     LIBXCRYPT_DEV_DEPEND=">= sys-libs/libxcrypt-dev-4.4"
105     LIBCAP_DEPEND=">= sys-libs/libcap-2.69"
106     LIBCAP_LIB32_DEPEND=">= sys-libs/libcap-lib32-2.69"
107     LIBCAP_DEV_DEPEND=">= sys-libs/libcap-dev-2.69"
108     ELFUTILS_DEPEND=">= dev-libs/elfutils-libs-0.189"
109     ELFUTILS_LIB32_DEPEND=">= dev-libs/elfutils-libs-lib32-0.189"
110     ELFUTILS_DEV_DEPEND=">= dev-libs/elfutils-dev-0.189"
111     LIBBLKID_DEPEND=">= sys-libs/libblkid-2.39"
112     LIBBLKID_LIB32_DEPEND=">= sys-libs/libblkid-lib32-2.39"
113     LIBMOUNT_DEPEND=">= sys-libs/libmount-2.39"
114     LIBMOUNT_LIB32_DEPEND=">= sys-libs/libmount-lib32-2.39"
115     LIBUUID_DEPEND=">= sys-libs/libuuid-2.39"
116     LIBUUID_LIB32_DEPEND=">= sys-libs/libuuid-lib32-2.39"
117     LIBIDN_DEPEND=">= net-dns/libidn2-2.3"
118     LIBIDN_LIB32_DEPEND=">= net-dns/libidn2-lib32-2.3"
119     LIBIDN_DEV_DEPEND=">= net-dns/libidn2-dev-2.3"
120     UTILLINUX_DEPEND=">= sys-apps/util-linux-2.39"
121     UTILLINUX_DEV_DEPEND=">= sys-apps/util-linux-dev-2.39"
122     KMOD_DEPEND=" >= sys-apps/kmod-30"
123     KMOD_LIB32_DEPEND=" >= sys-apps/kmod-lib32-30"
124     KMOD_DEV_DEPEND=" >= sys-apps/kmod-dev-30"
125     PAM_DEPEND=">= sys-libs/pam-1.6"
126     PAM_LIB32_DEPEND=">= sys-libs/pam-lib32-1.6"
127     PAM_DEV_DEPEND=">= sys-libs/pam-dev-1.6"
128     IPTABLES_DEPEND=">= net-misc/iptables-1.8"
129     IPTABLES_LIB32_DEPEND=">= net-misc/iptables-lib32-1.8"
130     IPTABLES_DEV_DEPEND=">= net-misc/iptables-dev-1.8"
131     OPENSSL_DEPEND=">= dev-libs/openssl-3.1"
132     OPENSSL_LIB32_DEPEND=">= dev-libs/openssl-lib32-3.1"
133     OPENSSL_DEV_DEPEND=">= dev-libs/openssl-dev-3.1"
134     CRYPTSETUP_DEPEND=">= sys-fs/cryptsetup-2.6"
135     CRYPTSETUP_LIB32_DEPEND=">= sys-fs/cryptsetup-lib32-2.6"
136     CRYPTSETUP_DEV_DEPEND=">= sys-fs/cryptsetup-dev-2.6"
137     COMMON_DEPEND="${GLIBC_DEPEND}
138     ${LIBGCC_DEPEND}
139     ${LIBCAP_DEPEND}"
140     COMMON_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}
141     ${LIBGCC_LIB32_DEPEND}
142     ${LIBCAP_LIB32_DEPEND}"
143     DAEMON_DEPEND="${COMMON_DEPEND}
144     ${PROCPS_DEPEND}
145     ${UTILLINUX_DEPEND}
146     ${KMOD_DEPEND}"
147     if [[ ${ACL_SUPPORT} = 1 ]]
148     then
149     DAEMON_DEPEND="${DAEMON_DEPEND}
150     ${ACL_DEPEND}"
151     fi
152     COREDUMP_DEPEND="${COMMON_DEPEND}
153     ${LIBXCRYPT_DEPEND}
154     ${ELFUTILS_DEPEND}"
155     SYSTEMCTL_DEPEND="${COMMON_DEPEND}
156     ${LIBIDN_DEPEND}"
157     LIBUDEV_DEPEND="${COMMON_DEPEND}"
158     LIBUDEV_LIB32_DEPEND="${COMMON_LIB32_DEPEND}"
159     NSS_DEPEND="${COMMON_DEPEND}"
160     NSS_LIB32_DEPEND="${COMMON_LIB32_DEPEND}"
161     LIBSYSTEMD_DEPEND="${COMMON_DEPEND}
162     ${LIBXCRYPT_DEPEND}
163     ${XZ_DEPEND}
164     ${LZ4_DEPEND}
165     ${ZSTD_DEPEND}"
166     LIBSYSTEMD_LIB32_DEPEND="${COMMON_LIB32_DEPEND}
167     ${LIBXCRYPT_LIB32_DEPEND}
168     ${XZ_LIB32_DEPEND}
169     ${LZ4_LIB32_DEPEND}
170     ${ZSTD_LIB32_DEPEND}"
171     LIBSYSTEMD_SHARED_DEPEND="${COMMON_DEPEND}
172     ${LIBXCRYPT_DEPEND}
173     ${LIBBLKID_DEPEND}
174     ${OPENSSL_DEPEND}
175     ${XZ_DEPEND}
176     ${LZ4_DEPEND}
177     ${ZSTD_DEPEND}
178     ${KMOD_DEPEND}
179     ${LIBMOUNT_DEPEND}"
180     if [[ ${ACL_SUPPORT} = 1 ]]
181     then
182     LIBSYSTEMD_SHARED_DEPEND="${LIBSYSTEMD_SHARED_DEPEND}
183     ${ACL_DEPEND}"
184     fi
185     if [[ ${IPTABLES_SUPPORT} = 1 ]]
186     then
187     LIBSYSTEMD_SHARED_DEPEND="${LIBSYSTEMD_SHARED_DEPEND}
188     ${IPTABLES_DEPEND}"
189     fi
190     if [[ ${PAM_SUPPORT} = 1 ]]
191     then
192     LIBSYSTEMD_SHARED_DEPEND="${LIBSYSTEMD_SHARED_DEPEND}
193     ${PAM_DEPEND}"
194     fi
195     LIBSYSTEMD_SHARED_LIB32_DEPEND="${COMMON_LIB32_DEPEND}
196     ${LIBXCRYPT_LIB32_DEPEND}
197     ${LIBBLKID_LIB32_DEPEND}
198     ${OPENSSL_LIB32_DEPEND}
199     ${XZ_LIB32_DEPEND}
200     ${LZ4_LIB32_DEPEND}
201     ${ZSTD_LIB32_DEPEND}
202     ${KMOD_LIB32_DEPEND}
203     ${LIBMOUNT_LIB32_DEPEND}"
204     if [[ ${ACL_SUPPORT} = 1 ]]
205     then
206     LIBSYSTEMD_SHARED_LIB32_DEPEND="${LIBSYSTEMD_SHARED_LIB32_DEPEND}
207     ${ACL_LIB32_DEPEND}"
208     fi
209     if [[ ${IPTABLES_SUPPORT} = 1 ]]
210     then
211     LIBSYSTEMD_SHARED_LIB32_DEPEND="${LIBSYSTEMD_SHARED_LIB32_DEPEND}
212     ${IPTABLES_LIB32_DEPEND}"
213     fi
214     if [[ ${PAM_SUPPORT} = 1 ]]
215     then
216     LIBSYSTEMD_SHARED_LIB32_DEPEND="${LIBSYSTEMD_SHARED_LIB32_DEPEND}
217     ${PAM_LIB32_DEPEND}"
218     fi
219     LIBSYSTEMD_CORE_DEPEND="${COMMON_DEPEND}
220     ${KMOD_DEPEND}
221     ${LIBMOUNT_DEPEND}"
222     if [[ ${PAM_SUPPORT} = 1 ]]
223     then
224     LIBSYSTEMD_CORE_DEPEND="${LIBSYSTEMD_CORE_DEPEND}
225     ${PAM_DEPEND}"
226     fi
227     LIBSYSTEMD_CORE_LIB32_DEPEND="${COMMON_LIB32_DEPEND}
228     ${KMOD_LIB32_DEPEND}
229     ${LIBMOUNT_LIB32_DEPEND}"
230     if [[ ${PAM_SUPPORT} = 1 ]]
231     then
232     LIBSYSTEMD_CORE_LIB32_DEPEND="${LIBSYSTEMD_CORE_LIB32_DEPEND}
233     ${PAM_LIB32_DEPEND}"
234     fi
235     LIBSYSTEMD_NSS_DEPEND="${COMMON_DEPEND}
236     ${LIBXCRYPT_DEPEND}"
237     LIBSYSTEMD_NSS_LIB32_DEPEND="${COMMON_LIB32_DEPEND}
238     ${LIBXCRYPT_LIB32_DEPEND}"
239     PAMMODULE_DEPEND="${LIBCAP_DEPEND}
240     ${LIBGCC_DEPEND}
241     ${LIBXCRYPT_DEPEND}
242     ${PAM_DEPEND}"
243     PAMMODULE_LIB32_DEPEND="${LIBCAP_LIB32_DEPEND}
244     ${LIBGCC_LIB32_DEPEND}
245     ${LIBXCRYPT_LIB32_DEPEND}
246     ${PAM_LIB32_DEPEND}"
247    
248     # only /etc/os-release is supported from now on
249     SYSTEMD_DEPEND="${DAEMON_DEPEND}
250     ${ZLIB_DEPEND}
251     ${BZIP2_DEPEND}
252     ${XZ_DEPEND}
253     ${LZ4_DEPEND}
254     ${ZSTD_DEPEND}
255     ${LIBXCRYPT_DEPEND}
256     ${LIBIDN_DEPEND}
257     ${OPENSSL_DEPEND}
258     ${CRYPTSETUP_SUPPORT}
259     >= sys-apps/mage-release-1
260     >= sys-apps/dbus-1.14
261     >= net-libs/libcurl-8.1
262     >= virtual/shadow"
263     if [[ ${PAM_SUPPORT} = 1 ]]
264     then
265     SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
266     ${PAM_DEPEND}"
267     fi
268    
269     TOOLS_DEPEND=">= sys-apps/polkit-0.122"
270    
271     UDEV_DEPEND="${DAEMON_DEPEND}
272     ${LIBUUID_DEPEND}"
273     # >= virtual/usbutils
274     # >= virtual/pciutils
275    
276     PYTHON_DEPEND=">= dev-lang/python3-3.11
277     >= dev-python/python3-lxml-4.9
278     >= dev-python/python3-jinja2-3.1"
279    
280     ## busybox supports requires sysvinit support
281     #if [[ ${BUSYBOX_SUPPORT} = 1 ]]
282     #then
283     # [[ ${SYSVINIT_SUPPORT} != 1 ]] && SYSVINIT_SUPPORT=1
284     #fi
285    
286     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
287     then
288     SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
289     >= sys-apps/sysvinit-2.88"
290     fi
291    
292     SDEPEND="${LIBUDEV_DEPEND}
293     ${NSS_DEPEND}
294     ${LIBSYSTEMD_DEPEND}
295     ${LIBSYSTEMD_SHARED_DEPEND}
296     ${LIBSYSTEMD_CORE_DEPEND}
297     ${SYSTEMCTL_DEPEND}
298     ${SYSTEMD_DEPEND}
299     ${TOOLS_DEPEND}
300     ${UDEV_DEPEND}
301     ${PYTHON_DEPEND}
302     ${COREDUMP_DEPEND}
303     >= app-text/docbook-xsl-stylesheets-1.76
304     >= app-text/docbook-xml-dtd42-4.2
305     >= app-text/docbook-xml-dtd45-4.5
306     >= dev-libs/libxslt-1.1.38
307     >= dev-util/intltool-0.51
308     >= dev-util/gperf-3.1
309     >= virtual/kernel-headers"
310     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
311     then
312     SDEPEND="${SDEPEND}
313     ${LIBUDEV_LIB32_DEPEND}
314     ${NSS_LIB32_DEPEND}
315     ${LIBSYSTEMD_LIB32_DEPEND}
316     ${LIBSYSTEMD_SHARED_LIB32_DEPEND}
317     ${LIBSYSTEMD_CORE_LIB32_DEPEND}"
318     fi
319     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
320     then
321     SDEPEND="${SDEPEND}
322     ${GLIBC_DEV_DEPEND}
323     ${LIBGCC_DEV_DEPEND}
324     ${ZLIB_DEV_DEPEND}
325     ${BZIP2_DEV_DEPEND}
326     ${XZ_DEV_DEPEND}
327     ${LZ4_DEV_DEPEND}
328     ${ZSTD_DEV_DEPEND}
329     ${LIBXCRYPT_DEV_DEPEND}
330     ${LIBCAP_DEV_DEPEND}
331     ${ELFUTILS_DEV_DEPEND}
332     ${LIBIDN_DEV_DEPEND}
333     ${UTILLINUX_DEV_DEPEND}
334     ${KMOD_DEV_DEPEND}
335     ${OPENSSL_DEV_DEPEND}
336     >= sys-libs/glibc-locale-us-2"
337     if [[ ${ACL_SUPPORT} = 1 ]]
338     then
339     SDEPEND="${SDEPEND}
340     ${ACL_DEV_DEPEND}"
341     fi
342     if [[ ${IPTABLES_SUPPORT} = 1 ]]
343     then
344     SDEPEND="${SDEPEND}
345     ${IPTABLES_DEV_DEPEND}"
346     fi
347     if [[ ${PAM_SUPPORT} = 1 ]]
348     then
349     SDEPEND="${SDEPEND}
350     ${PAM_DEV_DEPEND}"
351     fi
352     fi
353    
354     SRCFILE="v${PVER}.tar.gz"
355     SRCDIR="${BUILDDIR}/${PNAME}${SYSTEMD_BRANCH}-${PVER}"
356    
357     UDEV_CONFIG_PVER="20151110-1"
358     UDEV_CONFIG_SRCFILE="config-udev-${UDEV_CONFIG_PVER}.tar.bz2"
359     UDEV_CONFIG_SRCDIR="${BUILDDIR}/config-udev-${UDEV_CONFIG_PVER}"
360    
361     sminclude multilib python3 mtools meson cleanutils udev alx
362     msetfeature "!check"
363    
364     # requires += to get injection files included
365     SRC_URI+=(
366     https://github.com/${PNAME}/${PNAME}${SYSTEMD_BRANCH}/archive/${SRCFILE}
367     mirror://${PNAME}/${SRCFILE}
368     mirror://udev/${UDEV_CONFIG_SRCFILE}
369     mirror://${PNAME}/${PNAME}-255-magellan-configurable-getty.patch
370     mirror://${PNAME}/${PNAME}-253-uucp-group.patch
371     mirror://${PNAME}/login-manager.pamd
372     mirror://${PNAME}/systemd-user.pamd-${PAMD_USER_REV}
373     )
374     if [[ ${BUSYBOX_SUPPORT} = 1 ]]
375     then
376     SRC_URI+=( mirror://${PNAME}/${PNAME}-254-getty-busybox-compat.patch )
377     fi
378    
379     UP2SEPERATOR="v"
380     UP2DATE="updatecmd https://github.com/systemd/systemd${SYSTEMD_BRANCH}/tags | highesttarball gz"
381    
382     split_info_libudev()
383     {
384     DESCRIPTION="Dynamic library to access udev device information."
385     DEPEND="${LIBUDEV_DEPEND}"
386     PCAT="sys-fs"
387     }
388    
389     split_info_libudev-lib32()
390     {
391     DESCRIPTION="Dynamic library to access udev device information - 32bit."
392     DEPEND="${LIBUDEV_LIB32_DEPEND}
393     == sys-fs/libudev-${PVER}"
394     PCAT="sys-fs"
395     }
396    
397     split_info_libudev-dev()
398     {
399     DESCRIPTION="Development files for libudev."
400     DEPEND="== sys-fs/libudev-${PVER}"
401     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
402     then
403     DEPEND="${DEPEND}
404     == sys-fs/libudev-lib32-${PVER}"
405     fi
406     PCAT="sys-fs"
407     }
408    
409     split_info_udev()
410     {
411     DESCRIPTION="A Userspace Implementation for dynamic /dev nodes."
412     DEPEND="${UDEV_DEPEND}
413     == sys-fs/libudev-${PVER}
414     == sys-libs/libsystemd-shared-${PVER}
415     == sys-apps/systemd-systemctl-${PVER}"
416     PCAT="sys-fs"
417     }
418    
419     split_info_udev-dev()
420     {
421     DESCRIPTION="Development files for udev."
422     DEPEND="== sys-fs/libudev-dev-${PVER}
423     == sys-fs/udev-${PVER}"
424     PCAT="sys-fs"
425     }
426    
427     split_info_libnss-myhostname()
428     {
429     DESCRIPTION="NSS plugin for local system host name resolution."
430     DEPEND="${NSS_DEPEND}"
431     PCAT="net-dns"
432     }
433    
434     split_info_libnss-myhostname-lib32()
435     {
436     DESCRIPTION="NSS plugin for local system host name resolution - 32bit."
437     DEPEND="${NSS_LIB32_DEPEND}
438     == net-dns/libnss-myhostname-${PVER}"
439     PCAT="net-dns"
440     }
441    
442     split_info_libnss-myhostname-dev()
443     {
444     DESCRIPTION="Development files for libnss-myhostname."
445     DEPEND="== net-dns/libnss-myhostname-${PVER}"
446     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
447     then
448     DEPEND="${DEPEND}
449     == net-dns/libnss-myhostname-lib32-${PVER}"
450     fi
451     PCAT="net-dns"
452     }
453    
454     split_info_libnss-mymachines()
455     {
456     DESCRIPTION="NSS plugin for local container host name resolution."
457     DEPEND="${NSS_DEPEND}"
458     PCAT="net-dns"
459     }
460    
461     split_info_libnss-mymachines-lib32()
462     {
463     DESCRIPTION="NSS plugin for local container host name resolution - 32bit."
464     DEPEND="${NSS_LIB32_DEPEND}
465     == net-dns/libnss-mymachines-${PVER}"
466     PCAT="net-dns"
467     }
468    
469     split_info_libnss-mymachines-dev()
470     {
471     DESCRIPTION="Development files for libnss-mymachines."
472     DEPEND="== net-dns/libnss-mymachines-${PVER}"
473     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
474     then
475     DEPEND="${DEPEND}
476     == net-dns/libnss-mymachines-lib32-${PVER}"
477     fi
478     PCAT="net-dns"
479     }
480    
481     split_info_libnss-resolve()
482     {
483     DESCRIPTION="NSS plugin for host name resolution via systemd-resolved."
484     DEPEND="${NSS_DEPEND}"
485     PCAT="net-dns"
486     }
487    
488     split_info_libnss-resolve-lib32()
489     {
490     DESCRIPTION="NSS plugin for host name resolution via systemd-resolved - 32bit."
491     DEPEND="${NSS_LIB32_DEPEND}
492     == net-dns/libnss-resolve-${PVER}"
493     PCAT="net-dns"
494     }
495    
496     split_info_libnss-resolve-dev()
497     {
498     DESCRIPTION="Development files for libnss-resolve."
499     DEPEND="== net-dns/libnss-resolve-${PVER}"
500     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
501     then
502     DEPEND="${DEPEND}
503     == net-dns/libnss-resolve-lib32-${PVER}"
504     fi
505     PCAT="net-dns"
506     }
507    
508     split_info_libnss-systemd()
509     {
510     DESCRIPTION="NSS plugin for dynamic user and group name resolution."
511     DEPEND="${NSS_DEPEND}
512     ${LIBXCRYPT_DEPEND}"
513     PCAT="net-dns"
514     }
515    
516     split_info_libnss-systemd-lib32()
517     {
518     DESCRIPTION="NSS plugin for dynamic user and group name resolution - 32bit."
519     DEPEND="${NSS_LIB32_DEPEND}
520     ${LIBXCRYPT_LIB32_DEPEND}
521     == net-dns/libnss-systemd-${PVER}"
522     PCAT="net-dns"
523     }
524    
525     split_info_libnss-systemd-dev()
526     {
527     DESCRIPTION="Development files for libnss-systemd."
528     DEPEND="== net-dns/libnss-systemd-${PVER}"
529     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
530     then
531     DEPEND="${DEPEND}
532     == net-dns/libnss-systemd-lib32-${PVER}"
533     fi
534     PCAT="net-dns"
535     }
536    
537     split_info_libsystemd()
538     {
539     DESCRIPTION="systemd library."
540     DEPEND="${LIBSYSTEMD_DEPEND}"
541     PCAT="sys-libs"
542     }
543    
544     split_info_libsystemd-lib32()
545     {
546     DESCRIPTION="systemd library - 32bit."
547     DEPEND="${LIBSYSTEMD_LIB32_DEPEND}
548     == sys-libs/libsystemd-${PVER}"
549     PCAT="sys-libs"
550     }
551    
552     split_info_libsystemd-shared()
553     {
554     DESCRIPTION="systemd shared helper library."
555     DEPEND="${LIBSYSTEMD_SHARED_DEPEND}"
556     PCAT="sys-libs"
557     }
558    
559     split_info_libsystemd-shared-lib32()
560     {
561     DESCRIPTION="systemd shared helper library - 32bit."
562     DEPEND="${LIBSYSTEMD_SHARED_LIB32_DEPEND}
563     == sys-libs/libsystemd-shared-${PVER}"
564     PCAT="sys-libs"
565     }
566    
567     split_info_libsystemd-core()
568     {
569     DESCRIPTION="systemd core functions library."
570     DEPEND="${LIBSYSTEMD_CORE_DEPEND}
571     == sys-libs/libsystemd-shared-${PVER}"
572     PCAT="sys-libs"
573     }
574    
575     split_info_libsystemd-core-lib32()
576     {
577     DESCRIPTION="systemd core functions library - 32bit."
578     DEPEND="${LIBSYSTEMD_CORE_LIB32_DEPEND}
579     == sys-libs/libsystemd-core-${PVER}
580     == sys-libs/libsystemd-shared-lib32-${PVER}"
581     PCAT="sys-libs"
582     }
583    
584     split_info_systemd-systemctl()
585     {
586     DESCRIPTION="systemd services control utility."
587     DEPEND="${SYSTEMCTL_DEPEND}
588     == sys-libs/libsystemd-shared-${PVER}"
589     }
590    
591     split_info_systemd-systemctl-dev()
592     {
593     DESCRIPTION="Development files for systemd-systemctl."
594     DEPEND="== sys-apps/systemd-systemctl-${PVER}"
595     }
596    
597     split_info_systemd-coredump()
598     {
599     DESCRIPTION="systemd coredump utility."
600     DEPEND="${COREDUMP_DEPEND}
601     == sys-libs/libsystemd-shared-${PVER}"
602     }
603    
604     split_info_systemd-coredump-dev()
605     {
606     DESCRIPTION="Development files for systemd-coredump."
607     DEPEND="${COREDUMP_DEPEND}
608     == sys-apps/systemd-coredump-${PVER}"
609     }
610    
611     split_info_pam-systemd()
612     {
613     DESCRIPTION="pam module for systemd."
614     DEPEND="${PAMMODULE_DEPEND}"
615     PCAT="sys-libs"
616     }
617    
618     split_info_pam-systemd-lib32()
619     {
620     DESCRIPTION="pam module for systemd - 32bit."
621     DEPEND="${PAMMODULE_LIB32_DEPEND}"
622     PCAT="sys-libs"
623     }
624    
625     split_info_systemd()
626     {
627     DESCRIPTION="System and Session Manager."
628     DEPEND="${SYSTEMD_DEPEND}
629     == sys-libs/libsystemd-${PVER}
630     == sys-libs/libsystemd-shared-${PVER}
631     == sys-libs/libsystemd-core-${PVER}
632     == net-dns/libnss-myhostname-${PVER}
633     == net-dns/libnss-mymachines-${PVER}
634     == net-dns/libnss-resolve-${PVER}
635     == net-dns/libnss-systemd-${PVER}
636     == net-dns/libnss-myhostname-${PVER}
637     == sys-apps/systemd-coredump-${PVER}
638     == sys-apps/systemd-systemctl-${PVER}
639     == sys-fs/udev-${PVER}"
640     if [[ ${PAM_SUPPORT} = 1 ]]
641     then
642     DEPEND="${DEPEND}
643     == sys-libs/pam-systemd-${PVER}"
644     fi
645     # systemd >=195 provides now full syslog facilities
646     PROVIDE="virtual/syslog"
647     }
648    
649     split_info_systemd-dev()
650     {
651     DESCRIPTION="Development files for systemd."
652     DEPEND="== sys-fs/libudev-dev-${PVER}
653     == net-dns/libnss-myhostname-dev-${PVER}
654     == net-dns/libnss-mymachines-dev-${PVER}
655     == net-dns/libnss-resolve-dev-${PVER}
656     == net-dns/libnss-systemd-dev-${PVER}
657     == sys-fs/udev-dev-${PVER}
658     == sys-apps/systemd-coredump-dev-${PVER}
659     == sys-apps/systemd-systemctl-dev-${PVER}
660     == sys-apps/systemd-${PVER}"
661     if [[ ${PAM_SUPPORT} = 1 ]]
662     then
663     DEPEND="${DEPEND}
664     == sys-libs/pam-systemd-${PVER}"
665     fi
666     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
667     then
668     DEPEND="${DEPEND}
669     == sys-libs/libsystemd-lib32-${PVER}
670     == sys-libs/libsystemd-shared-lib32-${PVER}
671     == sys-libs/libsystemd-core-lib32-${PVER}
672     == net-dns/libnss-myhostname-lib32-${PVER}
673     == net-dns/libnss-mymachines-lib32-${PVER}
674     == net-dns/libnss-resolve-lib32-${PVER}
675     == net-dns/libnss-systemd-lib32-${PVER}"
676     if [[ ${PAM_SUPPORT} = 1 ]]
677     then
678     DEPEND="${DEPEND}
679     == sys-libs/pam-systemd-lib32-${PVER}"
680     fi
681     fi
682     }
683    
684     split_info_systemd-tools()
685     {
686     DESCRIPTION="Systemd utilites for analysing the boot process."
687     DEPEND="== sys-apps/systemd-${PVER}
688     == sys-libs/libsystemd-shared-${PVER}
689     == sys-libs/libsystemd-core-${PVER}
690     ${TOOLS_DEPEND}"
691     }
692    
693     pkg_setup()
694     {
695     # adding lock group
696     mgroupadd -o "-g 54" lock
697     # adding journal group/users
698     mgroupadd -o "-g 190" systemd-journal
699     mgroupadd -o "-g 191" systemd-journal-gateway
700     museradd -o "-u 191 -g systemd-journal-gateway -d /var/log/journal -s /bin/false" systemd-journal-gateway
701     mgroupadd -o "-g 196" systemd-journal-remote
702     museradd -o "-u 196 -g systemd-journal-remote -d /var/log/journal/remote -s /bin/false" systemd-journal-remote
703     mgroupadd -o "-g 197" systemd-journal-upload
704     museradd -o "-u 197 -g systemd-journal-upload -d /var/log/journal/upload -s /bin/false" systemd-journal-upload
705     # adding other systemd group/users
706     mgroupadd -o "-g 192" systemd-timesync
707     museradd -o "-u 192 -g systemd-timesync -l -d / -s /bin/false" systemd-timesync
708     mgroupadd -o "-g 193" systemd-network
709     museradd -o "-u 193 -g systemd-network -l -d / -s /bin/false" systemd-network
710     mgroupadd -o "-g 194" systemd-resolve
711     museradd -o "-u 194 -g systemd-resolve -l -d / -s /bin/false" systemd-resolve
712     mgroupadd -o "-g 195" systemd-bus-proxy
713     museradd -o "-u 195 -g systemd-bus-proxy -l -d / -s /bin/false" systemd-bus-proxy
714     }
715    
716     src_prepare()
717     {
718     munpack ${SRCFILE} || die
719     oldmunpack ${UDEV_CONFIG_SRCFILE} || die
720    
721     # magellan-only: use a configurable getty
722     mpatch ${PNAME}-255-magellan-configurable-getty.patch || die
723    
724     if [[ ${BUSYBOX_SUPPORT} = 1 ]]
725     then
726     # remove agetty options which are incompatible with busybox getty
727     mpatch ${PNAME}-254-getty-busybox-compat.patch || die
728     fi
729    
730     # replace dialout group with uucp for ttys
731     mpatch ${PNAME}-253-uucp-group.patch || die
732    
733     # remove unneeded groups
734     all-abis "sed -i -e 's/GROUP=\"render\"/GROUP=\"video\"/' -e 's/GROUP=\"sgx\", //' rules.d/50-udev-default.rules.in || die"
735    
736     # fix rootlink install location
737     sed -i "s:^\(udevdir=\).*:\1/usr/lib/udev:" ${UDEV_CONFIG_SRCDIR}/Makefile || die
738     }
739    
740     src_compile()
741     {
742     local myconf
743    
744     meson_setup_builddir || die
745    
746     # fixes build errors, enforce utf-8
747     export LC_ALL=en_US.UTF-8
748    
749     # disable dnssec
750     myconf+=" $(meson_opt default-dnssec no)"
751    
752     # use openssl for dns-over-tls
753     myconf+=" $(meson_opt dns-over-tls openssl)"
754    
755     # disable kill user processes as this will prevent screen and tmux from working correctly
756     # see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394
757     # https://bugs.freedesktop.org/show_bug.cgi?id=94508
758     # https://bbs.archlinux.org/viewtopic.php?id=204307
759     # https://github.com/systemd/systemd/issues/2900
760     myconf+=" $(meson_opt default-kill-user-processes false)"
761    
762     # no rpm macros
763     myconf+=" $(meson_opt rpmmacrosdir no)"
764    
765     # pam support
766     if [[ ${PAM_SUPPORT} = 1 ]]
767     then
768     myconf+=" $(meson_opt pam true)"
769     myconf+=" $(meson_opt pamlibdir /usr/'$(mlibdir)'/security)"
770     else
771     myconf+=" $(meson_opt pam false)"
772     fi
773    
774     # acl support
775     [[ ${ACL_SUPPORT} = 1 ]] && myconf+=" $(meson_opt acl true)" || myconf+=" $(meson_opt acl false)"
776    
777     # iptables support
778     [[ ${IPTABLES_SUPPORT} = 1 ]] && myconf+=" $(meson_opt libiptc true)" || myconf+=" $(meson_opt libiptc false)"
779    
780     # cryptsetup support
781     [[ ${CRYPTSETUP_SUPPORT} = 1 ]] && myconf+=" $(meson_opt libcryptsetup true)" || myconf+=" $(meson_opt libcryptsetup false)"
782    
783     meson_configure \
784     --libexecdir=/usr/lib \
785     --localstatedir=/var \
786     $(meson_opt mode release) \
787     $(meson_opt ima false) \
788     $(meson_opt audit false) \
789     $(meson_opt selinux false) \
790     $(meson_opt qrencode false) \
791     $(meson_opt xz true) \
792     $(meson_opt lz4 true) \
793     $(meson_opt zstd true) \
794     $(meson_opt sysvinit-path /etc/rc.d/init.d) \
795     $(meson_opt sysvrcnd-path /etc/rc.d) \
796     $(meson_opt loadkeys-path /usr/bin/loadkeys) \
797     $(meson_opt setfont-path /usr/bin/setfont) \
798     $(meson_opt tty-gid 4) \
799     $(meson_opt sysusers true) \
800     $(meson_opt man true) \
801     ${myconf} \
802     || die
803    
804     mninja || die
805     }
806    
807     src_install_systemd()
808     {
809     DESTDIR=${BINDIR} mninja install || die
810    
811     # keep some directories
812     mkeepdir /run || die
813     mkeepdir /etc/modules-load.d || die
814     mkeepdir /etc/sysctl.d || die
815     mkeepdir /etc/tmpfiles.d || die
816     mkeepdir /etc/binfmt.d || die
817    
818     # make sure the shutdown/sleep drop-in dirs exist
819     mkeepdir /usr/lib/systemd/system-shutdown || die
820     mkeepdir /usr/lib/systemd/system-sleep || die
821    
822     # make sure the NTP units dir exists
823     mkeepdir /usr/lib/systemd/ntp-units.d || die
824    
825     # make sure directories in /var exist
826     mkeepdir /var/lib/systemd/coredump || die
827     mkeepdir /var/lib/systemd/catalog || die
828     mkeepdir /var/lib/systemd/backlight || die
829     mkeepdir /var/lib/systemd/rfkill || die
830     mkeepdir /var/log/journal || die
831    
832     if [[ ${SYSVINIT_SUPPORT} != 1 ]]
833     then
834     echo "Include SysV init Compat symlinks"
835     # create SysV compatibility symlinks. systemctl/systemd are smart
836     # enough to detect in which way they are called.
837     minstalldir /usr/sbin || die
838     mlink ../lib/systemd/systemd /usr/sbin/init || die
839     local i
840     for i in reboot halt poweroff shutdown telinit runlevel
841     do
842     mlink ../bin/systemctl /usr/sbin/${i} || die
843     done
844     else
845     echo "Using sysvinit package for SysV compat"
846     fi
847    
848     # we create all wants links manually at installation time to make sure
849     # they are not owned and hence overriden by mage after the user deleted
850     # them.
851     # rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
852     # but make sure these directories are properly owned
853     mkeepdir /usr/lib/systemd/system/basic.target.wants || die
854     mkeepdir /usr/lib/systemd/system/default.target.wants || die
855     mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
856     mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
857     # make sure the user generators dir exists too
858     mkeepdir /usr/lib/systemd/user-generators || die
859     mkeepdir /usr/lib/systemd/system-generators || die
860    
861     # login-manager pam policy - force register kdm, gdm etc with pam_systemd
862     if [[ ${PAM_SUPPORT} = 1 ]]
863     then
864     minstallpam login-manager.pamd login-manager || die
865     minstallpam systemd-user.pamd-${PAMD_USER_REV} systemd-user || die
866     else
867     if [[ -d ${BINDIR}/usr/lib/pam.d ]]
868     then
869     mdelete -r /usr/lib/pam.d || die
870     fi
871     fi
872    
873     # we have no rpm, remove config macros
874     #mdelete -r /etc/rpm || die
875    
876     minstalldocs DISTRO_PORTING LICENSE README TODO || die
877    
878     # remove files which are owned by other packages
879     mdelete /etc/systemd/coredump.conf || die
880     mdelete /usr/bin/coredumpctl || die
881     mdelete /usr/bin/systemctl || die
882     mdelete /usr/bin/systemd-analyze || die
883     mdelete /usr/bin/kernel-install || die
884     mdelete -r /etc/udev || die
885     mdelete /usr/bin/udevadm || die
886     mdelete /usr/include/libudev.h || die
887     mdelete /usr/lib/sysctl.d/50-coredump.conf || die
888     mdelete /usr/lib/systemd/systemd-coredump || die
889     mdelete /usr/lib/systemd/systemd-udevd || die
890     mdelete /usr/lib/systemd/system/systemd-udevd-control.socket || die
891     mdelete /usr/lib/systemd/system/systemd-udevd-kernel.socket || die
892     mdelete /usr/lib/systemd/system/systemd-udevd.service || die
893     mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
894     mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
895     mdelete /usr/$(mlibdir)/systemd/libsystemd-shared-\*.so || die
896     mdelete /usr/$(mlibdir)/systemd/libsystemd-core-\*.so || die
897     mdelete -r /usr/lib/udev || die
898     mdelete /usr/$(mlibdir)/libudev\* || die
899     mdelete /usr/$(mlibdir)/libnss_\* || die
900     mdelete /usr/$(mlibdir)/libsystemd.\* || die
901     mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
902     if [[ ${PAM_SUPPORT} = 1 ]]
903     then
904     mdelete /usr/$(mlibdir)/security/pam_systemd.so || die
905     fi
906     if [[ $(MABI=m32 mlibdir) != lib ]]
907     then
908     mdelete /usr/$(MABI=m32 mlibdir)/libudev\* || die
909     mdelete /usr/$(MABI=m32 mlibdir)/libnss_\* || die
910     mdelete /usr/$(MABI=m32 mlibdir)/libsystemd.\* || die
911     mdelete /usr/$(MABI=m32 mlibdir)/pkgconfig/libudev.pc || die
912     mdelete /usr/$(MABI=m32 mlibdir)/systemd/libsystemd-shared-\*.so || die
913     mdelete /usr/$(MABI=m32 mlibdir)/systemd/libsystemd-core-\*.so || die
914     if [[ ${PAM_SUPPORT} = 1 ]]
915     then
916     mdelete /usr/$(MABI=m32 mlibdir)/security/pam_systemd.so || die
917     fi
918     fi
919     mdelete /usr/share/man/man1/coredumpctl.1 || die
920     mdelete /usr/share/man/man1/systemctl.1 || die
921     mdelete /usr/share/man/man5/coredump.conf.5 || die
922     mdelete /usr/share/man/man5/coredump.conf.d.5 || die
923     mdelete /usr/share/man/man8/systemd-coredump.8 || die
924     mdelete /usr/share/man/man7/udev.7 || die
925     mdelete /usr/share/man/man8/systemd-udevd.8 || die
926     mdelete /usr/share/man/man8/udevadm.8 || die
927     mdelete /usr/share/man/man8/libnss_myhostname.\*
928     mdelete /usr/share/man/man8/libnss_mymachines.\*
929     mdelete /usr/share/man/man8/libnss_resolve.\*
930     mdelete /usr/share/man/man8/libnss_systemd.\*
931     mdelete /usr/share/man/man8/nss-myhostname.8 || die
932     mdelete /usr/share/man/man8/nss-mymachines.8 || die
933     mdelete /usr/share/man/man8/nss-resolve.8 || die
934     mdelete /usr/share/man/man8/nss-systemd.8 || die
935     mdelete /usr/share/pkgconfig/udev.pc || die
936    
937     # install udev rule for systemd
938     all-abis minstalludevrule ${BUILDDIR}/build-$(mabi)/rules.d/99-systemd.rules || die
939    
940     # ghost own runtime generated config files
941     minstalldir /etc/X11/xorg.conf.d || die
942     memptyfile /etc/X11/xorg.conf.d/00-keyboard.conf || die
943     memptyfile /etc/machine-id || die
944     memptyfile /etc/machine-info || die
945     # and set CONFIG_PROTECT_MASK for them
946     minstalldir /etc/env.d || die
947     MCONFIG=/etc/env.d/02systemd
948     mclearconfig || die
949     maddconfig 'CONFIG_PROTECT_IGNORE="/etc/machine-id /etc/machine-info /etc/X11/xorg.conf.d/00-keyboard.conf"' || die
950    
951     # fix an issue with mage4 which cannot handle '\' in filenames
952     if [ -f "${BINDIR}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" ]
953     then
954     mv "${BINDIR}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" \
955     ${BINDIR}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice || die
956     fi
957    
958     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
959     then
960     mdelete -r /usr/include || die
961     mdelete -r /usr/share/bash-completion || die
962     mdelete -r /usr/share/doc || die
963     mdelete -r /usr/share/locale || die
964     mdelete -r /usr/share/man || die
965     mdelete -r /usr/share/pkgconfig || die
966     mdelete -r /usr/share/zsh || die
967     mdelete -r /usr/$(mlibdir)/pkgconfig || die
968     if [[ $(MABI=m32 mlibdir) != lib ]]
969     then
970     mdelete -r /usr/$(MABI=m32 mlibdir)/pkgconfig || die
971     fi
972     fi
973    
974     # alx only - mount /var/log with a tmpfs
975     mcinjectfile var-log.mount /usr/lib/systemd/system || die
976     mlink ../var-log.mount /usr/lib/systemd/system/local-fs.target.wants/var-log.mount || die
977    
978     # alx only - do not wait for all interfaces to become online, just exit successfully if at least one interface is online
979     local MCONFIG="/etc/systemd/system/systemd-networkd-wait-online.service.d/override.conf"
980     mclearconfig
981     maddconfig '[Service]'
982     maddconfig '# must be cleared before it can actually be overridden'
983     maddconfig 'ExecStart='
984     maddconfig 'ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any'
985     }
986    
987     src_install_systemd-dev()
988     {
989     DESTDIR=${BINDIR} mninja install || die
990     minstalldocs DISTRO_PORTING LICENSE README TODO || die
991    
992     # remove files which are owned by other packages
993     mdelete /usr/include/libudev.h || die
994     mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
995     if [[ $(MABI=m32 mlibdir) != lib ]]
996     then
997     mdelete /usr/$(MABI=m32 mlibdir)/pkgconfig/libudev.pc || die
998     fi
999     mdelete /usr/share/man/man1/coredumpctl.1 || die
1000     mdelete /usr/share/man/man5/coredump.conf.5 || die
1001     mdelete /usr/share/man/man5/coredump.conf.d.5 || die
1002     mdelete /usr/share/man/man8/systemd-coredump.8 || die
1003     mdelete /usr/share/man/man7/udev.7 || die
1004     mdelete /usr/share/man/man8/systemd-udevd.8 || die
1005     mdelete /usr/share/man/man8/udevadm.8 || die
1006     mdelete /usr/share/man/man8/libnss_myhostname.\*
1007     mdelete /usr/share/man/man8/libnss_mymachines.\*
1008     mdelete /usr/share/man/man8/libnss_resolve.\*
1009     mdelete /usr/share/man/man8/libnss_systemd.\*
1010     mdelete /usr/share/man/man8/nss-myhostname.8 || die
1011     mdelete /usr/share/man/man8/nss-mymachines.8 || die
1012     mdelete /usr/share/man/man8/nss-resolve.8 || die
1013     mdelete /usr/share/man/man8/nss-systemd.8 || die
1014     mdelete /usr/share/pkgconfig/udev.pc || die
1015    
1016     zapmost ${BINDIR} \
1017     usr/include \
1018     usr/share/bash-completion \
1019     usr/share/doc \
1020     usr/share/locale \
1021     usr/share/man \
1022     usr/share/pkgconfig \
1023     usr/share/zsh \
1024     usr/$(mlibdir)/pkgconfig \
1025     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/pkgconfig") \
1026     || die
1027     }
1028    
1029     src_install_systemd-coredump()
1030     {
1031     DESTDIR=${BINDIR} mninja install || die
1032    
1033     zapmost ${BINDIR} \
1034     etc/systemd/coredump.conf \
1035     usr/bin/coredumpctl \
1036     usr/lib/sysctl.d/50-coredump.conf \
1037     usr/lib/systemd/systemd-coredump \
1038     usr/share/man/man1/coredumpctl.1 \
1039     usr/share/man/man5/coredump.conf.5 \
1040     usr/share/man/man5/coredump.conf.d.5 \
1041     usr/share/man/man8/systemd-coredump.8 \
1042     || die
1043    
1044     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1045     then
1046     mdelete -r /usr/share/man || die
1047     fi
1048     }
1049    
1050     src_install_systemd-coredump-dev()
1051     {
1052     DESTDIR=${BINDIR} mninja install || die
1053    
1054     zapmost ${BINDIR} \
1055     usr/share/man/man1/coredumpctl.1 \
1056     usr/share/man/man5/coredump.conf.5 \
1057     usr/share/man/man5/coredump.conf.d.5 \
1058     usr/share/man/man8/systemd-coredump.8 \
1059     || die
1060     }
1061    
1062     src_install_systemd-systemctl()
1063     {
1064     DESTDIR=${BINDIR} mninja install || die
1065    
1066     zapmost ${BINDIR} \
1067     usr/bin/systemctl \
1068     usr/share/man/man1/systemctl.1 \
1069     || die
1070    
1071     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1072     then
1073     mdelete -r /usr/share || die
1074     fi
1075     }
1076    
1077     src_install_systemd-systemctl-dev()
1078     {
1079     DESTDIR=${BINDIR} mninja install || die
1080    
1081     zapmost ${BINDIR} \
1082     usr/share/man/man1/systemctl.1 \
1083     || die
1084     }
1085    
1086     src_install_systemd-tools()
1087     {
1088     all-abis minstallexec ${BUILDDIR}/build-$(mabi)/systemd-analyze || die
1089     all-abis minstallexec ${BUILDDIR}/build-$(mabi)/kernel-install || die
1090     }
1091    
1092     src_install_libudev()
1093     {
1094     DESTDIR=${BINDIR} mninja install || die
1095    
1096     # cleanup all files but the libudev owned ones
1097     zapmost ${BINDIR} \
1098     usr/include/libudev.h \
1099     usr/$(mlibdir)/libudev\* \
1100     usr/$(mlibdir)/pkgconfig/libudev.pc \
1101     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libudev*") \
1102     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/pkgconfig/libudev.pc") \
1103     || die
1104    
1105     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1106     then
1107     mdelete -r /usr/include || die
1108     mdelete -r /usr/$(mlibdir)/pkgconfig || die
1109     if [[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]]
1110     then
1111     mdelete -r /usr/$(MABI=m32 mlibdir)/pkgconfig || die
1112     fi
1113     fi
1114     }
1115    
1116     src_install_libudev-lib32()
1117     {
1118     DESTDIR=${BINDIR} mninja install || die
1119    
1120     # cleanup all files but the libudev owned ones
1121     zapmost ${BINDIR} \
1122     usr/$(MABI=m32 mlibdir)/libudev\* \
1123     usr/$(MABI=m32 mlibdir)/pkgconfig/libudev.pc \
1124     || die
1125    
1126     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1127     then
1128     mdelete -r /usr/$(MABI=m32 mlibdir)/pkgconfig || die
1129     fi
1130     }
1131    
1132     src_install_libudev-dev()
1133     {
1134     DESTDIR=${BINDIR} mninja install || die
1135    
1136     # cleanup all files but the libudev owned ones
1137     zapmost ${BINDIR} \
1138     usr/include/libudev.h \
1139     usr/$(mlibdir)/pkgconfig/libudev.pc \
1140     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/pkgconfig/libudev.pc") \
1141     || die
1142     }
1143    
1144     src_install_udev()
1145     {
1146     DESTDIR=${BINDIR} mninja install || die
1147    
1148     # cleanup all files but the udev owned ones
1149     zapmost ${BINDIR} \
1150     etc/udev \
1151     usr/bin/udevadm \
1152     usr/lib/systemd/systemd-udevd \
1153     usr/lib/systemd/system/systemd-udevd-control.socket \
1154     usr/lib/systemd/system/systemd-udevd-kernel.socket \
1155     usr/lib/systemd/system/systemd-udevd.service \
1156     usr/lib/systemd/system/systemd-udev-settle.service \
1157     usr/lib/systemd/system/systemd-udev-trigger.service \
1158     usr/lib/udev \
1159     usr/share/man/man7/udev.7 \
1160     usr/share/man/man8/systemd-udevd.8 \
1161     usr/share/man/man8/udevadm.8 \
1162     usr/share/pkgconfig/udev.pc \
1163     || die
1164    
1165     # remove udev rule for systemd
1166     mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
1167    
1168     minstalldocs LICENSE* NEWS README TODO || die
1169    
1170     # install our config
1171     cd ${UDEV_CONFIG_SRCDIR}
1172     make DESTDIR=${BINDIR} install || die
1173     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
1174     then
1175     # install sysvinit rc. script
1176     make DESTDIR=${BINDIR} install-sysvinit || die
1177     fi
1178    
1179     # create symlinks for these utilities to /sbin
1180     minstalldir /usr/sbin || die
1181     # where multipath-tools expect them to be
1182     mlink ../lib/udev/scsi_id /usr/sbin/ || die
1183    
1184     # mark some dirs undeletable
1185     mkeepdir /etc/udev/rules.d || die
1186     mkeepdir /usr/lib/udev/state || die
1187    
1188     # CONFIG_PROTECT_MASK for /etc/udev/rules.d
1189     minstalldir /etc/env.d || die
1190     MCONFIG="/etc/env.d/02udev"
1191     mclearconfig || die
1192     maddconfig 'CONFIG_PROTECT_MASK="/etc/udev/rules.d"' || die
1193    
1194     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1195     then
1196     mdelete -r /usr/share || die
1197     fi
1198     }
1199    
1200     src_install_udev-dev()
1201     {
1202     DESTDIR=${BINDIR} mninja install || die
1203    
1204     # cleanup all files but the udev owned ones
1205     zapmost ${BINDIR} \
1206     usr/share/man/man7/udev.7 \
1207     usr/share/man/man8/systemd-udevd.8 \
1208     usr/share/man/man8/udevadm.8 \
1209     usr/share/pkgconfig/udev.pc \
1210     || die
1211    
1212     minstalldocs LICENSE* NEWS README TODO || die
1213     }
1214    
1215     src_install_libnss-myhostname()
1216     {
1217     DESTDIR=${BINDIR} mninja install || die
1218    
1219     # cleanup all files but the libnss-myhostname owned ones
1220     zapmost ${BINDIR} \
1221     usr/$(mlibdir)/libnss_myhostname\* \
1222     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libnss_myhostname*") \
1223     usr/share/man/man8/libnss_myhostname.\* \
1224     usr/share/man/man8/nss-myhostname.8 \
1225     || die
1226    
1227     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
1228     then
1229     mdelete -r /usr/$(MABI=m32 mlibdir) || die
1230     fi
1231    
1232     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1233     then
1234     mdelete -r /usr/share || die
1235     fi
1236     }
1237    
1238     src_install_libnss-myhostname-lib32()
1239     {
1240     DESTDIR=${BINDIR} mninja install || die
1241    
1242     # cleanup all files but the libnss-myhostname-lib32 owned ones
1243     zapmost ${BINDIR} \
1244     usr/$(MABI=m32 mlibdir)/libnss_myhostname\* \
1245     || die
1246     }
1247    
1248     src_install_libnss-myhostname-dev()
1249     {
1250     DESTDIR=${BINDIR} mninja install || die
1251    
1252     # cleanup all files but the nss-myhostname-dev owned ones
1253     zapmost ${BINDIR} \
1254     usr/share/man/man8/libnss_myhostname.\* \
1255     usr/share/man/man8/nss-myhostname.8 \
1256     || die
1257     }
1258    
1259     src_install_libnss-mymachines()
1260     {
1261     DESTDIR=${BINDIR} mninja install || die
1262    
1263     # cleanup all files but the libnss-mymachines owned ones
1264     zapmost ${BINDIR} \
1265     usr/$(mlibdir)/libnss_mymachines\* \
1266     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libnss_mymachines*") \
1267     usr/share/man/man8/libnss_mymachines.\* \
1268     usr/share/man/man8/nss-mymachines.8 \
1269     || die
1270    
1271     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
1272     then
1273     mdelete -r /usr/$(MABI=m32 mlibdir) || die
1274     fi
1275    
1276     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1277     then
1278     mdelete -r /usr/share || die
1279     fi
1280     }
1281    
1282     src_install_libnss-mymachines-lib32()
1283     {
1284     DESTDIR=${BINDIR} mninja install || die
1285    
1286     # cleanup all files but the libnss-mymachines-lib32 owned ones
1287     zapmost ${BINDIR} \
1288     usr/$(MABI=m32 mlibdir)/libnss_mymachines\* \
1289     || die
1290     }
1291    
1292     src_install_libnss-mymachines-dev()
1293     {
1294     DESTDIR=${BINDIR} mninja install || die
1295    
1296     # cleanup all files but the nss-mymachines-dev owned ones
1297     zapmost ${BINDIR} \
1298     usr/share/man/man8/libnss_mymachines.\* \
1299     usr/share/man/man8/nss-mymachines.8 \
1300     || die
1301     }
1302    
1303     src_install_libnss-resolve()
1304     {
1305     DESTDIR=${BINDIR} mninja install || die
1306    
1307     # cleanup all files but the libnss-resolve owned ones
1308     zapmost ${BINDIR} \
1309     usr/$(mlibdir)/libnss_resolve\* \
1310     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libnss_resolve*") \
1311     usr/share/man/man8/libnss_resolve.\* \
1312     usr/share/man/man8/nss-resolve.8 \
1313     || die
1314    
1315     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
1316     then
1317     mdelete -r /usr/$(MABI=m32 mlibdir) || die
1318     fi
1319    
1320     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1321     then
1322     mdelete -r /usr/share || die
1323     fi
1324     }
1325    
1326     src_install_libnss-resolve-lib32()
1327     {
1328     DESTDIR=${BINDIR} mninja install || die
1329    
1330     # cleanup all files but the libnss-resolve-lib32 owned ones
1331     zapmost ${BINDIR} \
1332     usr/$(MABI=m32 mlibdir)/libnss_resolve\* \
1333     || die
1334     }
1335    
1336     src_install_libnss-resolve-dev()
1337     {
1338     DESTDIR=${BINDIR} mninja install || die
1339    
1340     # cleanup all files but the nss-resolved-dev owned ones
1341     zapmost ${BINDIR} \
1342     usr/share/man/man8/libnss_resolve.\* \
1343     usr/share/man/man8/nss-resolve.8 \
1344     || die
1345     }
1346    
1347     src_install_libnss-systemd()
1348     {
1349     DESTDIR=${BINDIR} mninja install || die
1350    
1351     # cleanup all files but the libnss-systemd owned ones
1352     zapmost ${BINDIR} \
1353     usr/$(mlibdir)/libnss_systemd\* \
1354     $([[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libnss_systemd*") \
1355     usr/share/man/man8/libnss_systemd.\* \
1356     usr/share/man/man8/nss-systemd.8 \
1357     || die
1358    
1359     if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
1360     then
1361     mdelete -r /usr/$(MABI=m32 mlibdir) || die
1362     fi
1363    
1364     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1365     then
1366     mdelete -r /usr/share || die
1367     fi
1368     }
1369    
1370     src_install_libnss-systemd-lib32()
1371     {
1372     DESTDIR=${BINDIR} mninja install || die
1373    
1374     # cleanup all files but the libnss-systemd-lib32 owned ones
1375     zapmost ${BINDIR} \
1376     usr/$(MABI=m32 mlibdir)/libnss_systemd\* \
1377     || die
1378     }
1379    
1380     src_install_libnss-systemd-dev()
1381     {
1382     DESTDIR=${BINDIR} mninja install || die
1383    
1384     # cleanup all files but the nss-systemd-dev owned ones
1385     zapmost ${BINDIR} \
1386     usr/share/man/man8/libnss_systemd.\* \
1387     usr/share/man/man8/nss-systemd.8 \
1388     || die
1389     }
1390    
1391     src_install_libsystemd()
1392     {
1393     DESTDIR=${BINDIR} mninja install || die
1394    
1395     # cleanup all files but the libsystem owned ones
1396     zapmost ${BINDIR} \
1397     usr/$(mlibdir)/libsystemd.\* \
1398     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/libsystemd.*") \
1399     || die
1400     }
1401    
1402     src_install_libsystemd-lib32()
1403     {
1404     DESTDIR=${BINDIR} mninja install || die
1405    
1406     # cleanup all files but the libsystem owned ones
1407     zapmost ${BINDIR} \
1408     usr/$(MABI=m32 mlibdir)/libsystemd.\* \
1409     || die
1410     }
1411    
1412     src_install_libsystemd-shared()
1413     {
1414     DESTDIR=${BINDIR} mninja install || die
1415    
1416     # cleanup all files but the libsystem-shared owned ones
1417     zapmost ${BINDIR} \
1418     usr/$(mlibdir)/systemd/libsystemd-shared-\*.so \
1419     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/systemd/libsystemd-shared-*.so") \
1420     || die
1421     }
1422    
1423     src_install_libsystemd-shared-lib32()
1424     {
1425     DESTDIR=${BINDIR} mninja install || die
1426    
1427     # cleanup all files but the libsystem-shared owned ones
1428     zapmost ${BINDIR} \
1429     usr/$(MABI=m32 mlibdir)/systemd/libsystemd-shared-\*.so \
1430     || die
1431     }
1432    
1433     src_install_libsystemd-core()
1434     {
1435     DESTDIR=${BINDIR} mninja install || die
1436    
1437     # cleanup all files but the libsystem-core owned ones
1438     zapmost ${BINDIR} \
1439     usr/lib/systemd/libsystemd-core-\*.so \
1440     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/systemd/libsystemd-core-*.so") \
1441     || die
1442     }
1443    
1444     src_install_libsystemd-core-lib32()
1445     {
1446     DESTDIR=${BINDIR} mninja install || die
1447    
1448     # cleanup all files but the libsystem-core owned ones
1449     zapmost ${BINDIR} \
1450     usr/$(MABI=m32 mlibdir)/systemd/libsystemd-core-\*.so \
1451     || die
1452     }
1453    
1454     src_install_pam-systemd()
1455     {
1456     DESTDIR=${BINDIR} mninja install || die
1457    
1458     # cleanup all files but the pam-systemd owned ones
1459     zapmost ${BINDIR} \
1460     usr/$(mlibdir)/security/pam_systemd.so \
1461     $([[ ${ENABLE_LIB32_PACKAGES} != 1 ]] && [[ $(MABI=m32 mlibdir) != lib ]] && echo "usr/$(MABI=m32 mlibdir)/security/pam_systemd.so") \
1462     || die
1463     }
1464    
1465     src_install_pam-systemd-lib32()
1466     {
1467     DESTDIR=${BINDIR} mninja install || die
1468    
1469     # cleanup all files but the pam-systemd owned ones
1470     zapmost ${BINDIR} \
1471     usr/$(MABI=m32 mlibdir)/security/pam_systemd.so \
1472     || die
1473     }
1474    
1475     preinstall_udev()
1476     {
1477     if [[ ! -z $(magequery -n hotplug) ]]
1478     then
1479     echo -e ${COLRED}
1480     echo -e "Error: sys-apps/hotplug is installed!!"
1481     echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
1482     echo -e "Please uninstall sys-apps/hotplug first!"
1483     echo -e ${COLDEFAULT}
1484     die "sys-apps/hotplug found!"
1485     fi
1486    
1487     # move udev state
1488     if [ ! -L ${MROOT}/lib ]
1489     then
1490     if [[ -d ${MROOT}/lib/udev-state ]]
1491     then
1492     mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
1493     rm -r ${MROOT}/lib/udev-state
1494     fi
1495     if [[ -d ${MROOT}/lib/udev/state ]]
1496     then
1497     mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
1498     rm -r ${MROOT}/lib/udev/state
1499     fi
1500     fi
1501    
1502     # remove deprecated udev devices dir
1503     if [[ -d ${MROOT}/lib/udev/devices ]]
1504     then
1505     rm -r ${MROOT}/lib/udev/devices
1506     fi
1507     if [[ -d ${MROOT}/usr/lib/udev/devices ]]
1508     then
1509     rm -r ${MROOT}/usr/lib/udev/devices
1510     fi
1511    
1512     if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
1513     [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
1514     then
1515     mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
1516     fi
1517    
1518     # delete the old udev.hotplug symlink if it is present
1519     if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
1520     then
1521     rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
1522     fi
1523    
1524     # delete the old wait_for_sysfs.hotplug symlink if it is present
1525     if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
1526     then
1527     rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
1528     fi
1529    
1530     # delete the old 10-udev.hotplug symlink if it is present
1531     if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
1532     then
1533     rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
1534     fi
1535    
1536     # delete the deprectated udev-late rc-script
1537     [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
1538    
1539     # delete obsolete hotplug.dev script
1540     if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
1541     then
1542     rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
1543     fi
1544    
1545     # delete deprecated pnp-aliases
1546     if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
1547     then
1548     rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
1549     fi
1550    
1551     # delete deprecated blacklist
1552     if [[ -f ${MROOT}/etc/udev/blacklist ]]
1553     then
1554     rm -f ${MROOT}/etc/udev/blacklist
1555     fi
1556    
1557     # delete all udev.rules which are moved from /etc/udev to /lib/udev
1558     local rule
1559     for rule in 40-arch-s390.rules \
1560     61-persistent-storage-edd.rules \
1561     75-persistent-net-generator.rules \
1562     64-md-raid.rules \
1563     65-permissions.rules \
1564     64-device-mapper.rules \
1565     40-alsa.rules \
1566     40-zaptel.rules \
1567     60-persistent-input.rules \
1568     40-arch-ia64.rules \
1569     05-udev-early.rules \
1570     40-arch-ppc.rules \
1571     60-cdrom_id.rules \
1572     40-pilot-links.rules \
1573     95-udev-late.rules \
1574     40-magellan.rules \
1575     50-udev-default.rules \
1576     80-drivers.rules \
1577     30-kernel-compat.rules \
1578     40-video.rules \
1579     60-persistent-storage-tape.rules \
1580     75-cd-aliases-generator.rules \
1581     60-persistent-storage.rules
1582     do
1583     # delete obsolete hotplug.dev script
1584     if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
1585     then
1586     rm -f ${MROOT}/etc/udev/rules.d/${rule}
1587     fi
1588     done
1589    
1590     echo "Network device naming is now controlled by udev's net_setup_link"
1591     echo "builtin. Refer to the NETWORK LINK CONFIGURATION section of the"
1592     echo "udev manpage for a full description."
1593     if [ -e ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules ]
1594     then
1595     echo
1596     echo "Renaming old 80-net-name-slot.rules to 80-net-setup-link.rules in order"
1597     echo "to preserve existing network naming behavior."
1598     mv -v ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules \
1599     ${MROOT}/etc/udev/rules.d/80-net-setup-link.rules
1600     fi
1601     }
1602    
1603     postinstall_udev()
1604     {
1605     [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
1606    
1607     # systemd
1608     if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
1609     then
1610     # reload config
1611     systemctl daemon-reload
1612    
1613     # try to kill
1614     if ! systemctl stop systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket >/dev/null 2>&1
1615     then
1616     # kill daemon if we are not in a chroot
1617     if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
1618     then
1619     if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
1620     then
1621     udevadm control --exit 2>&1
1622     fi
1623     fi
1624     fi
1625     # start the daemon
1626     if ! systemctl start systemd-udevd.service >/dev/null 2>&1
1627     then
1628     # start daemon if we are not in a chroot
1629     if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
1630     then
1631     if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
1632     then
1633     /usr/lib/systemd/systemd-udevd --daemon
1634     fi
1635     fi
1636     fi
1637    
1638     # sysV
1639     else
1640     # after install/uprade, udev *must* be reloaded if already running
1641     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
1642     [[ -n $(pidof systemd-udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
1643     then
1644     echo "MROOT=/; restarting udev daemon ..."
1645     # support old installations too
1646     killall -15 udevd &> /dev/null
1647     killall -15 systemd-udevd &> /dev/null
1648     sleep 1
1649     killall -9 systemd-udevd &> /dev/null
1650     killall -9 udevd &> /dev/null
1651     /usr/lib/systemd/systemd-udevd --daemon
1652     fi
1653     fi
1654    
1655     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
1656     then
1657     # update hwdb
1658     systemd-hwdb update > /dev/null 2>&1
1659     fi
1660     }
1661    
1662     postinstall_libnss-myhostname()
1663     {
1664     # add myhostname to the hosts line of /etc/nsswitch.conf
1665     if [ -f ${MROOT}/etc/nsswitch.conf ]
1666     then
1667     sed -i -e '
1668     /^hosts:/ !b
1669     /\<myhostname\>/ b
1670     s/[[:blank:]]*$/ myhostname/
1671     ' ${MROOT}/etc/nsswitch.conf
1672     fi
1673     }
1674    
1675     postremove_libnss-myhostname()
1676     {
1677     # remove myhostname from the hosts line of /etc/nsswitch.conf
1678     if [ ! -e ${MROOT}/usr/$(mlibdir)/libnss_myhostname.so.* ]
1679     then
1680     if [ -f ${MROOT}/etc/nsswitch.conf ]
1681     then
1682     sed -i -e '
1683     /^hosts:/ !b
1684     s/[[:blank:]]\+myhostname\>//
1685     ' ${MROOT}/etc/nsswitch.conf
1686     fi
1687     fi
1688     }
1689    
1690     preinstall_systemd()
1691     {
1692     if [[ ${SYSVINIT_SUPPORT} != 1 ]]
1693     then
1694     if [[ ! -z $(magequery -n sysvinit) ]]
1695     then
1696     echo -e ${COLRED}
1697     echo -e "Error: sys-apps/sysvinit is installed!!"
1698     echo -e "sysvinit is now replaced by systemd which is the new default init system."
1699     echo -e "Please uninstall sys-apps/sysvinit first!"
1700     echo -e ${COLDEFAULT}
1701     die "sys-apps/sysvinit found!"
1702     fi
1703     fi
1704    
1705     # adding users
1706     pkg_setup
1707    
1708     # fix broken systemd installations, where
1709     # /usr/lib/systemd/systemd is a directory and not the daemon-exec
1710     if [ -d ${MROOT}/usr/lib/systemd/systemd ]
1711     then
1712     rm -r ${MROOT}/usr/lib/systemd/systemd
1713     fi
1714    
1715     # rename configuration files that changed their names
1716     if [ -f ${MROOT}/etc/systemd/systemd-logind.conf ]
1717     then
1718     mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
1719     fi
1720     if [ -f ${MROOT}/etc/systemd/systemd-journald.conf ]
1721     then
1722     mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
1723     fi
1724    
1725     # move old stuff around in /var/lib
1726     if [ -f ${MROOT}/var/lib/random-seed ]
1727     then
1728     [ -d ${MROOT}/var/lib/systemd ] || install -d ${MROOT}/var/lib/systemd
1729     mv -n ${MROOT}/var/lib/random-seed ${MROOT}/var/lib/systemd/random-seed
1730     fi
1731     if [ -f ${MROOT}/var/lib/backlight ]
1732     then
1733     [ -d ${MROOT}/var/lib/systemd ] || install -d ${MROOT}/var/lib/systemd
1734     mv -n ${MROOT}/var/lib/backlight ${MROOT}/var/lib/systemd/backlight
1735     fi
1736     }
1737    
1738     postinstall_systemd()
1739     {
1740     # fix an issue with mage4 which cannot handle '\' in filenames
1741     if [ -f ${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice ]
1742     then
1743     echo "fixing '${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice' for mage"
1744     mv ${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice \
1745     "${MROOT}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" || die
1746     fi
1747    
1748     # remove deprecated compat libraries
1749     local lib
1750     for lib in daemon id128 journal login
1751     do
1752     if [[ -n $(magequery -n libsystemd-${lib}) ]]
1753     then
1754     echo "Uninstalling deprecated 'libsystemd-${lib}'"
1755     mage uninstall libsystemd-${lib}
1756     fi
1757     done
1758    
1759     # nss-myhostname was renamed to libnss-myhostname
1760     if [[ -n $(magequery -n nss-myhostname) ]]
1761     then
1762     echo "Uninstalling deprecated 'nss-myhostname' which was renamed to 'libnss-myhostname'"
1763     mage uninstall nss-myhostname
1764     fi
1765    
1766     # try to read default runlevel from the old inittab if it exists
1767     local runlevel
1768     runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
1769     local target
1770     if [[ -z ${runlevel} ]]
1771     then
1772     target="/usr/lib/systemd/system/graphical.target"
1773     else
1774     target="/usr/lib/systemd/system/runlevel${runlevel}.target"
1775     fi
1776     # and symlink what we found to the new-style default.target
1777     ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
1778    
1779     # convert modules.autoload
1780     if [ -f ${MROOT}/etc/modules.autoload ]
1781     then
1782     local modules
1783     # get only lines which are not commented or empty;
1784     # if we get any items than the modules.autoload is in use
1785     modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
1786     if [[ ! -z ${modules} ]]
1787     then
1788     [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
1789     echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
1790     > ${MROOT}/etc/modules-load.d/modules.autoload.conf
1791     cat ${MROOT}/etc/modules.autoload \
1792     >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
1793     fi
1794     fi
1795    
1796     # check mtab and replace with a symlink if required
1797     if [[ ! -L ${MROOT}/etc/mtab ]] || \
1798     [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
1799     then
1800     ln -snf /proc/self/mounts ${MROOT}/etc/mtab
1801     fi
1802    
1803     # check for timesync symlink and remove it, must be a directory from now on
1804     if [[ -L ${MROOT}/var/lib/systemd/timesync ]]
1805     then
1806     rm ${MROOT}/var/lib/systemd/timesync
1807     if [[ -d ${MROOT}/var/lib/private/systemd/timesync ]]
1808     then
1809     mv ${MROOT}/var/lib/private/systemd/timesync ${MROOT}/var/lib/systemd/timesync
1810     fi
1811     fi
1812    
1813     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
1814     then
1815     # create machine-id
1816     if [ ! -s /etc/machine-id ]
1817     then
1818     systemd-machine-id-setup
1819     fi
1820     # create a random-seed
1821     /usr/lib/systemd/systemd-random-seed save
1822    
1823     # allow detect-virt to be run by unprivileged code
1824     setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
1825    
1826     # restart systemd daemon
1827     systemctl daemon-reexec
1828    
1829     # restart systemd-logind daemon
1830     systemctl try-restart systemd-logind.service
1831    
1832     # update journal catalog
1833     journalctl --update-catalog > /dev/null 2>&1
1834    
1835     # create missing tmpfiles
1836     systemd-tmpfiles --create > /dev/null 2>&1
1837    
1838     # set acls for wheel and adm group
1839     if [ -x /usr/bin/setfacl ]
1840     then
1841     /usr/bin/setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ > /dev/null 2>&1
1842     fi
1843    
1844     # enable the services we install by default.
1845     systemctl enable \
1846     getty@tty1.service \
1847     remote-fs.target \
1848     systemd-timesyncd.service
1849     #systemd-readahead-replay.service
1850     #systemd-readahead-collect.service
1851     #console-getty.service
1852     #console-shell.service
1853     #debug-shell.service
1854     #systemd-networkd.service
1855     fi
1856    
1857     echo
1858     echo "with >=systemd-216 coredumps are no longer sent to the journal by default."
1859     echo "To re-enable:"
1860     echo ' echo >/etc/sysctl.d/50-coredump.conf \'
1861     echo ' "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"'
1862     echo
1863    
1864     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
1865     then
1866     echo
1867     echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
1868     echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
1869     echo
1870     fi
1871     }
1872    
1873     preremove_systemd()
1874     {
1875     # fix an issue with mage4 which cannot handle '\' in filenames
1876     if [ -f "${MROOT}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" ]
1877     then
1878     echo "fixing '${MROOT}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice' for mage"
1879     mv "${MROOT}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" \
1880     ${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice || die
1881     fi
1882     }
1883    
1884     postremove_systemd()
1885     {
1886     # move this file back if it exists after package removal, it is than there from an upgrade
1887     # fix an issue with mage4 which cannot handle '\' in filenames
1888     if [ -f ${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice ]
1889     then
1890     echo "fixing '${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice' for mage"
1891     mv ${MROOT}/usr/lib/systemd/system/system-systemdx2dcryptsetup.slice \
1892     "${MROOT}/usr/lib/systemd/system/system-systemd\x2dcryptsetup.slice" || die
1893     fi
1894     }