Magellan Linux

Annotation of /trunk/core/systemd/systemd-235-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 30168 - (hide annotations) (download)
Thu Nov 2 09:52:39 2017 UTC (6 years, 6 months ago) by niro
File size: 29572 byte(s)
auto added: ver bump to 235-r2
1 niro 30168 # $Id$
2    
3     PNAME="systemd"
4     PVER="235"
5     PBUILD="r2"
6    
7     # 1=enable dev split packages
8     # 0=disable dev split packages
9     ENABLE_DEV_PACKAGES="0"
10    
11     SPLIT_PACKAGES="libudev udev nss-myhostname libsystemd systemd-coredump systemd systemd-tools"
12    
13     # dev packages
14     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
15     then
16     SPLIT_PACKAGES+=" libudev-dev udev-dev nss-myhostname-dev systemd-dev"
17     fi
18    
19     PCAT="sys-apps"
20     HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd"
21    
22     # enable or disable sysvinit support
23     # 1=yes, 0=no
24     SYSVINIT_SUPPORT=0
25    
26     # enable or disable busybox support
27     # 1=yes, 0=no
28     BUSYBOX_SUPPORT=0
29    
30     # disable gtk until build with libgee is fixed
31     # 1=yes, 0=no
32     ENABLE_GTK=1
33    
34     # export this variables for preinstall
35     SPECIAL_VARS="SYSVINIT_SUPPORT BUSYBOX_SUPPORT"
36     # and this functions too
37     SPECIAL_FUNCTIONS="pkg_setup"
38    
39     GLIB2_DEPEND=">= dev-libs/glib2-2.54"
40     GLIBC_DEPEND=">= virtual/glibc"
41     LIBGCC_DEPEND=">= sys-libs/libgcc-6.2"
42     XZ_DEPEND=">= virtual/xz-utils"
43     LIBGCRYPT_DEPEND=">= app-crypt/libgcrypt-1.8"
44     LIBGPGERROR_DEPEND=">= app-crypt/libgpg-error-1.26"
45     LIBNOTIFY_DEPEND=">= x11-libs/libnotify-0.7"
46     LIBGEE_DEPEND=">= dev-libs/libgee-0.18"
47     LIBCAP_DEPEND=">= sys-libs/libcap-2.25"
48     ELFUTILS_DEPEND=">= dev-libs/elfutils-libs-0.170"
49     COMMON_DEPEND="${GLIBC_DEPEND}
50     ${LIBGCC_DEPEND}
51     ${LIBCAP_DEPEND}"
52    
53     DAEMON_DEPEND="${COMMON_DEPEND}
54     ${GLIB2_DEPEND}
55     >= sys-apps/acl-2.2
56     >= virtual/procps
57     >= sys-apps/util-linux-2.30
58     >= sys-apps/kmod-24"
59     COREDUMP_DEPEND="${COMMON_DEPEND}
60     ${LIBGCRYPT_DEPEND}
61     ${LIBGPGERROR_DEPEND}
62     ${ELFUTILS_DEPEND}"
63    
64     LIBUDEV_DEPEND="${COMMON_DEPEND}"
65     NSS_DEPEND="${COMMON_DEPEND}
66     ${LIBGCRYPT_DEPEND}
67     ${LIBGPGERROR_DEPEND}"
68     LIBSYSTEMD_DEPEND="${COMMON_DEPEND}
69     ${LIBGCRYPT_DEPEND}
70     ${LIBGPGERROR_DEPEND}
71     ${XZ_DEPEND}"
72    
73     # only /etc/os-release is supported from now on
74     SYSTEMD_DEPEND="${DAEMON_DEPEND}
75     ${XZ_DEPEND}
76     ${LIBGCRYPT_DEPEND}
77     ${LIBGPGERROR_DEPEND}
78     >= sys-apps/mage-release-1
79     >= sys-apps/dbus-1.10
80     >= sys-fs/cryptsetup-1.7
81     >= dev-libs/dbus-glib-0.108
82     >= net-dns/libidn-1.33
83     >= net-libs/libcurl-7.52
84     >= sys-libs/pam-1.3
85     >= sys-apps/shadow-4.2"
86    
87     TOOLS_DEPEND=">= dev-python/python3-dbus-1.2
88     >= sys-apps/polkit-0.113"
89    
90     UDEV_DEPEND="${DAEMON_DEPEND}
91     >= dev-libs/libusb-compat-0.1.4
92     >= virtual/usbutils
93     >= virtual/pciutils
94     >= sys-libs/libuuid-2.30
95     >= sys-fs/libgudev-230"
96    
97     PYTHON_DEPEND=">= dev-lang/python3-3.6
98     >= dev-python/python3-lxml-3.5"
99    
100     if [[ ${ENABLE_GTK} = 1 ]]
101     then
102     TOOLS_DEPEND="${TOOLS_DEPEND}
103     >= x11-libs/gtk3+-3.22
104     ${LIBGEE_DEPEND}
105     ${LIBNOTIFY_DEPEND}"
106     fi
107    
108     # busybox supports requires sysvinit support
109     if [[ ${BUSYBOX_SUPPORT} = 1 ]]
110     then
111     [[ ${SYSVINIT_SUPPORT} != 1 ]] && SYSVINIT_SUPPORT=1
112     fi
113    
114     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
115     then
116     SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
117     >= sys-apps/sysvinit-2.88"
118     fi
119    
120     SDEPEND="${LIBUDEV_DEPEND}
121     ${NSS_DEPEND}
122     ${LIBSYSTEMD_DEPEND}
123     ${SYSTEMD_DEPEND}
124     ${TOOLS_DEPEND}
125     ${UDEV_DEPEND}
126     ${PYTHON_DEPEND}
127     ${COREDUMP_DEPEND}
128     >= app-text/docbook-xsl-stylesheets-1.76
129     >= app-text/docbook-xml-dtd42-4.2
130     >= app-text/docbook-xml-dtd45-4.5
131     >= dev-libs/libcgroup-0.41
132     >= dev-libs/libxslt-1.1.26
133     >= dev-lang/vala-0.38
134     >= dev-util/intltool-0.50
135     >= dev-util/gperf-3
136     >= virtual/kernel-headers"
137    
138     SRCFILE="v${PVER}.tar.gz"
139     SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
140    
141     UDEV_CONFIG_PVER="20151110-1"
142     UDEV_CONFIG_SRCFILE="config-udev-${UDEV_CONFIG_PVER}.tar.bz2"
143     UDEV_CONFIG_SRCDIR="${BUILDDIR}/config-udev-${UDEV_CONFIG_PVER}"
144    
145     if [[ ${ENABLE_GTK} = 1 ]]
146     then
147     UI_PVER="3"
148     UI_SRCFILE="${PNAME}-ui-${UI_PVER}.tar.xz"
149     UI_SRCDIR="${BUILDDIR}/${PNAME}-ui-${UI_PVER}"
150     fi
151    
152     sminclude multilib python3 mtools meson cleanutils udev
153     msetfeature "!check"
154    
155     SRC_URI=(
156     https://github.com/${PNAME}/${PNAME}/archive/${SRCFILE}
157     mirror://${PNAME}/${SRCFILE}
158     mirror://udev/${UDEV_CONFIG_SRCFILE}
159     mirror://${PNAME}/${PNAME}-235-magellan-configurable-getty-2.patch
160     mirror://${PNAME}/${PNAME}-234-uucp-group.patch
161     mirror://${PNAME}/${PNAME}-233-systemd-user-pam.patch
162     mirror://${PNAME}/${PNAME}-235-generator-path.patch
163     mirror://${PNAME}/login-manager.pamd
164     mirror://${PNAME}/systemd-user.pamd
165     )
166    
167     if [[ ${ENABLE_GTK} = 1 ]]
168     then
169     SRC_URI+=( http://www.freedesktop.org/software/${PNAME}/${UI_SRCFILE} )
170     fi
171    
172     UP2SEPERATOR="v"
173     UP2DATE="updatecmd https://github.com/systemd/systemd/releases | highesttarball gz"
174    
175     split_info_libudev()
176     {
177     DESCRIPTION="Dynamic library to access udev device information."
178     DEPEND="${LIBUDEV_DEPEND}"
179     PCAT="sys-fs"
180     }
181    
182     split_info_libudev-dev()
183     {
184     DESCRIPTION="Development files for libudev."
185     DEPEND=">= sys-fs/libudev-${PVER}"
186     PCAT="sys-fs"
187     }
188    
189     split_info_udev()
190     {
191     DESCRIPTION="A Userspace Implementation for dynamic /dev nodes."
192     DEPEND="${UDEV_DEPEND}
193     == sys-fs/libudev-${PVER}"
194     PCAT="sys-fs"
195     }
196    
197     split_info_udev-dev()
198     {
199     DESCRIPTION="Development files for udev."
200     DEPEND=">= sys-fs/udev-${PVER}"
201     PCAT="sys-fs"
202     }
203    
204     split_info_nss-myhostname()
205     {
206     DESCRIPTION="glibc plugin for local system host name resolution."
207     DEPEND="${NSS_DEPEND}"
208     PCAT="net-dns"
209     }
210    
211     split_info_nss-myhostname-dev()
212     {
213     DESCRIPTION="Development files for nss-myhostname."
214     DEPEND=">= net-dns/nss-myhostname-${PVER}"
215     PCAT="net-dns"
216     }
217    
218     split_info_libsystemd()
219     {
220     DESCRIPTION="systemd library."
221     DEPEND="${LIBSYSTEMD_DEPEND}"
222     PCAT="sys-libs"
223     }
224    
225     split_info_systemd-coredump()
226     {
227     DESCRIPTION="systemd coredump utility."
228     DEPEND="${COREDUMP_DEPEND}"
229     }
230    
231     split_info_systemd()
232     {
233     DESCRIPTION="System and Session Manager."
234     DEPEND="${SYSTEMD_DEPEND}
235     == sys-libs/libsystemd-${PVER}
236     == net-dns/nss-myhostname-${PVER}
237     == sys-apps/systemd-coredump-${PVER}
238     == sys-fs/udev-${PVER}"
239     # systemd >=195 provides now full syslog facilities
240     PROVIDE="virtual/syslog"
241     }
242    
243     split_info_systemd-dev()
244     {
245     DESCRIPTION="Development files for systemd."
246     DEPEND="== sys-fs/libudev-dev-${PVER}
247     == net-dns/nss-myhostname-dev-${PVER}
248     == sys-fs/udev-dev-${PVER}
249     >= sys-apps/systemd-dev-${PVER}"
250     }
251    
252     split_info_systemd-tools()
253     {
254     local gtkdesc
255     [[ ${ENABLE_GTK} = 1 ]] && gtkdesc="for gtk3/gnome and "
256    
257     DESCRIPTION="Systemd utilites ${gtkdesc}for analysing the boot process."
258     DEPEND="== sys-apps/systemd-${PVER}
259     ${TOOLS_DEPEND}"
260     }
261    
262     pkg_setup()
263     {
264     # adding lock group
265     mgroupadd -o "-g 54" lock
266     # adding journal group/users
267     mgroupadd -o "-g 190" systemd-journal
268     mgroupadd -o "-g 191" systemd-journal-gateway
269     museradd -o "-u 191 -g systemd-journal-gateway -d /var/log/journal -s /bin/false" systemd-journal-gateway
270     mgroupadd -o "-g 196" systemd-journal-remote
271     museradd -o "-u 196 -g systemd-journal-remote -d /var/log/journal/remote -s /bin/false" systemd-journal-remote
272     mgroupadd -o "-g 197" systemd-journal-upload
273     museradd -o "-u 197 -g systemd-journal-upload -d /var/log/journal/upload -s /bin/false" systemd-journal-upload
274     # adding other systemd group/users
275     mgroupadd -o "-g 192" systemd-timesync
276     museradd -o "-u 192 -g systemd-timesync -l -d / -s /bin/false" systemd-timesync
277     mgroupadd -o "-g 193" systemd-network
278     museradd -o "-u 193 -g systemd-network -l -d / -s /bin/false" systemd-network
279     mgroupadd -o "-g 194" systemd-resolve
280     museradd -o "-u 194 -g systemd-resolve -l -d / -s /bin/false" systemd-resolve
281     mgroupadd -o "-g 195" systemd-bus-proxy
282     museradd -o "-u 195 -g systemd-bus-proxy -l -d / -s /bin/false" systemd-bus-proxy
283     }
284    
285     src_prepare()
286     {
287     munpack ${SRCFILE} || die
288     oldmunpack ${UDEV_CONFIG_SRCFILE} || die
289     if [[ ${ENABLE_GTK} = 1 ]]
290     then
291     SRCDIR="${UI_SRCDIR}" munpack ${UI_SRCFILE} || die
292     fi
293    
294     # magellan-only: use a configurable getty
295     mpatch ${PNAME}-235-magellan-configurable-getty-2.patch || die
296    
297     # replace dialout group with uucp for ttys
298     mpatch ${PNAME}-234-uucp-group.patch || die
299    
300     # honor pam system-auth
301     mpatch ${PNAME}-233-systemd-user-pam.patch || die
302    
303     # look in /usr/lib and /lib for systemd generators
304     mpatch ${PNAME}-235-generator-path.patch || die
305    
306     # fix rootlink install location
307     sed -i "s:^\(udevdir=\).*:\1/usr/lib/udev:" ${UDEV_CONFIG_SRCDIR}/Makefile || die
308     }
309    
310     src_compile()
311     {
312     local myconf
313    
314     meson_setup_builddir || die
315    
316     # fixes build errors, enforce utf-8
317     export LC_ALL=en_US.UTF-8
318    
319     # disable dnssec
320     myconf+=" $(meson_opt default-dnssec no)"
321    
322     # disable kill user processes as this will prevent screen and tmux from working correctly
323     # see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394
324     # https://bugs.freedesktop.org/show_bug.cgi?id=94508
325     # https://bbs.archlinux.org/viewtopic.php?id=204307
326     # https://github.com/systemd/systemd/issues/2900
327     myconf+=" $(meson_opt kill-user-processes false)"
328    
329     # no rpm macros
330     myconf+=" $(meson_opt rpmmacrosdir no)"
331    
332     meson_configure \
333     --libexecdir=/usr/lib \
334     --localstatedir=/var \
335     $(meson_opt pamlibdir /usr/'$(mlibdir)'/security) \
336     $(meson_opt ima false) \
337     $(meson_opt audit false) \
338     $(meson_opt selinux false) \
339     $(meson_opt qrencode false) \
340     $(meson_opt pam true) \
341     $(meson_opt xz true) \
342     $(meson_opt acl true) \
343     $(meson_opt libcryptsetup true) \
344     $(meson_opt sysvinit-path /etc/rc.d/init.d) \
345     $(meson_opt sysvrcnd-path /etc/rc.d) \
346     $(meson_opt loadkeys-path /usr/bin/loadkeys) \
347     $(meson_opt setfont-path /usr/bin/setfont) \
348     $(meson_opt tty-gid 4) \
349     $(meson_opt sysusers true) \
350     ${myconf} \
351     || die
352    
353     mninja || die
354    
355     if [[ ${ENABLE_GTK} = 1 ]]
356     then
357     SRCDIR="${UI_SRCDIR}" mconfigure || die
358     SRCDIR="${UI_SRCDIR}" mmake || die
359     fi
360     }
361    
362     src_install_systemd()
363     {
364     DESTDIR=${BINDIR} mninja install || die
365    
366     # keep some directories
367     mkeepdir /run || die
368     mkeepdir /etc/modules-load.d || die
369     mkeepdir /etc/sysctl.d || die
370     mkeepdir /etc/tmpfiles.d || die
371     mkeepdir /etc/binfmt.d || die
372    
373     # make sure the shutdown/sleep drop-in dirs exist
374     mkeepdir /usr/lib/systemd/system-shutdown || die
375     mkeepdir /usr/lib/systemd/system-sleep || die
376    
377     # make sure the NTP units dir exists
378     mkeepdir /usr/lib/systemd/ntp-units.d || die
379    
380     # make sure directories in /var exist
381     mkeepdir /var/lib/systemd/coredump || die
382     mkeepdir /var/lib/systemd/catalog || die
383     mkeepdir /var/lib/systemd/backlight || die
384     mkeepdir /var/lib/systemd/rfkill || die
385     mkeepdir /var/log/journal || die
386    
387     if [[ ${SYSVINIT_SUPPORT} != 1 ]]
388     then
389     echo "Include SysV init Compat symlinks"
390     # create SysV compatibility symlinks. systemctl/systemd are smart
391     # enough to detect in which way they are called.
392     minstalldir /usr/sbin || die
393     mlink ../lib/systemd/systemd /usr/sbin/init || die
394     local i
395     for i in reboot halt poweroff shutdown telinit runlevel
396     do
397     mlink ../bin/systemctl /usr/sbin/${i} || die
398     done
399     else
400     echo "Using sysvinit package for SysV compat"
401     fi
402    
403     # we create all wants links manually at installation time to make sure
404     # they are not owned and hence overriden by mage after the user deleted
405     # them.
406     rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
407     # but make sure these directories are properly owned
408     mkeepdir /usr/lib/systemd/system/basic.target.wants || die
409     mkeepdir /usr/lib/systemd/system/default.target.wants || die
410     mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
411     mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
412     # make sure the user generators dir exists too
413     mkeepdir /usr/lib/systemd/user-generators || die
414     mkeepdir /usr/lib/systemd/system-generators || die
415    
416     # login-manager pam policy - force register kdm, gdm etc with pam_systemd
417     minstallpam login-manager.pamd login-manager || die
418     minstallpam systemd-user.pamd systemd-user || die
419    
420     # we have no rpm, remove config macros
421     #mdelete -r /etc/rpm || die
422    
423     minstalldocs DISTRO_PORTING LICENSE README TODO || die
424    
425     # remove files which are owned by other packages
426     mdelete /etc/systemd/coredump.conf || die
427     mdelete /usr/bin/coredumpctl || die
428     mdelete /usr/bin/systemd-analyze || die
429     mdelete /usr/bin/kernel-install || die
430     mdelete -r /etc/udev || die
431     mdelete /usr/bin/udevadm || die
432     mdelete /usr/include/libudev.h || die
433     mdelete /usr/lib/sysctl.d/50-coredump.conf || die
434     mdelete /usr/lib/systemd/systemd-coredump || die
435     mdelete /usr/lib/systemd/systemd-udevd || die
436     mdelete /usr/lib/systemd/system/systemd-udevd-control.socket || die
437     mdelete /usr/lib/systemd/system/systemd-udevd-kernel.socket || die
438     mdelete /usr/lib/systemd/system/systemd-udevd.service || die
439     mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
440     mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
441     mdelete -r /usr/lib/udev || die
442     mdelete /usr/$(mlibdir)/libudev\* || die
443     mdelete /usr/$(mlibdir)/libnss_myhostname\* || die
444     mdelete /usr/$(mlibdir)/libsystemd.\* || die
445     mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
446     if [[ $(mlibdir) != lib ]]
447     then
448     mdelete /usr/lib/libudev\* || die
449     mdelete /usr/lib/libnss_myhostname\* || die
450     mdelete /usr/lib/libsystemd.\* || die
451     mdelete /usr/lib/pkgconfig/libudev.pc || die
452     fi
453     mdelete /usr/share/man/man1/coredumpctl.1 || die
454     mdelete /usr/share/man/man5/coredump.conf.5 || die
455     mdelete /usr/share/man/man5/coredump.conf.d.5 || die
456     mdelete /usr/share/man/man8/systemd-coredump.8 || die
457     mdelete /usr/share/man/man7/udev.7 || die
458     mdelete /usr/share/man/man8/systemd-udevd.8 || die
459     mdelete /usr/share/man/man8/udevadm.8 || die
460     mdelete /usr/share/man/man8/nss-myhostname.8 || die
461     mdelete /usr/share/pkgconfig/udev.pc || die
462    
463     # install udev rule for systemd
464     all-abis minstalludevrule ${BUILDDIR}/build-$(mabi)/rules/99-systemd.rules || die
465    
466     # ghost own runtime generated config files
467     minstalldir /etc/X11/xorg.conf.d || die
468     memptyfile /etc/X11/xorg.conf.d/00-keyboard.conf || die
469     memptyfile /etc/machine-id || die
470     memptyfile /etc/machine-info || die
471     # and set CONFIG_PROTECT_MASK for them
472     minstalldir /etc/env.d || die
473     MCONFIG=/etc/env.d/02systemd
474     mclearconfig || die
475     maddconfig 'CONFIG_PROTECT_IGNORE="/etc/machine-id /etc/machine-info /etc/X11/xorg.conf.d/00-keyboard.conf"' || die
476    
477     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
478     then
479     mdelete -r /usr/include || die
480     mdelete -r /usr/share/bash-completion || die
481     mdelete -r /usr/share/doc || die
482     mdelete -r /usr/share/man || die
483     mdelete -r /usr/share/pkgconfig || die
484     mdelete -r /usr/share/zsh || die
485     mdelete -r /usr/$(mlibdir)/rpm || die
486     mdelete -r /usr/$(mlibdir)/pkgconfig || die
487     if [[ $(mlibdir) != lib ]]
488     then
489     mdelete -r /usr/$(mlibdir)/rpm || die
490     mdelete -r /usr/$(mlibdir)/pkgconfig || die
491     fi
492     fi
493     }
494    
495     src_install_systemd-dev()
496     {
497     DESTDIR=${BINDIR} mninja install || die
498     minstalldocs DISTRO_PORTING LICENSE README TODO || die
499    
500     # remove files which are owned by other packages
501     mdelete /usr/include/libudev.h || die
502     mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
503     if [[ $(mlibdir) != lib ]]
504     then
505     mdelete /usr/lib/pkgconfig/libudev.pc || die
506     fi
507     mdelete /usr/share/man/man1/coredumpctl.1 || die
508     mdelete /usr/share/man/man5/coredump.conf.5 || die
509     mdelete /usr/share/man/man5/coredump.conf.d.5 || die
510     mdelete /usr/share/man/man8/systemd-coredump.8 || die
511     mdelete /usr/share/man/man7/udev.7 || die
512     mdelete /usr/share/man/man8/systemd-udevd.8 || die
513     mdelete /usr/share/man/man8/udevadm.8 || die
514     mdelete /usr/share/man/man8/nss-myhostname.8 || die
515     mdelete /usr/share/pkgconfig/udev.pc || die
516    
517     zapmost ${BINDIR} \
518     usr/include \
519     usr/share/bash-completion \
520     usr/share/doc \
521     usr/share/man \
522     usr/share/pkgconfig \
523     usr/share/zsh \
524     usr/$(mlibdir)/rpm \
525     usr/$(mlibdir)/pkgconfig \
526     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/rpm') \
527     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig') \
528     || die
529     }
530    
531     src_install_systemd-coredump()
532     {
533     DESTDIR=${BINDIR} mninja install || die
534    
535     zapmost ${BINDIR} \
536     etc/systemd/coredump.conf \
537     usr/bin/coredumpctl \
538     usr/lib/sysctl.d/50-coredump.conf \
539     usr/lib/systemd/systemd-coredump \
540     usr/share/man/man1/coredumpctl.1 \
541     usr/share/man/man5/coredump.conf.5 \
542     usr/share/man/man5/coredump.conf.d.5 \
543     usr/share/man/man8/systemd-coredump.8 \
544     || die
545     }
546    
547     src_install_systemd-tools()
548     {
549     if [[ ${ENABLE_GTK} = 1 ]]
550     then
551     SRCDIR="${UI_SRCDIR}" mmake DESTDIR=${BINDIR} install || die
552     fi
553    
554     all-abis minstallexec ${BUILDDIR}/build-$(mabi)/systemd-analyze || die
555     all-abis minstallexec ${SRCDIR}-$(mabi)/src/kernel-install/kernel-install || die
556     }
557    
558     src_install_libudev()
559     {
560     DESTDIR=${BINDIR} mninja install || die
561    
562     # cleanup all files but the libudev owned ones
563     zapmost ${BINDIR} \
564     usr/include/libudev.h \
565     usr/$(mlibdir)/libudev\* \
566     usr/$(mlibdir)/pkgconfig/libudev.pc \
567     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev*') \
568     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
569     || die
570    
571     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
572     then
573     mdelete -r /usr/include || die
574     mdelete -r /usr/$(mlibdir)/pkgconfig || die
575     fi
576     }
577    
578     src_install_libudev-dev()
579     {
580     DESTDIR=${BINDIR} mninja install || die
581    
582     # cleanup all files but the libudev owned ones
583     zapmost ${BINDIR} \
584     usr/include/libudev.h \
585     usr/$(mlibdir)/pkgconfig/libudev.pc \
586     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
587     || die
588     }
589    
590     src_install_udev()
591     {
592     DESTDIR=${BINDIR} mninja install || die
593    
594     # cleanup all files but the udev owned ones
595     zapmost ${BINDIR} \
596     etc/udev \
597     usr/bin/udevadm \
598     usr/lib/systemd/systemd-udevd \
599     usr/lib/systemd/system/systemd-udevd-control.socket \
600     usr/lib/systemd/system/systemd-udevd-kernel.socket \
601     usr/lib/systemd/system/systemd-udevd.service \
602     usr/lib/systemd/system/systemd-udev-settle.service \
603     usr/lib/systemd/system/systemd-udev-trigger.service \
604     usr/lib/udev \
605     usr/share/man/man7/udev.7 \
606     usr/share/man/man8/systemd-udevd.8 \
607     usr/share/man/man8/udevadm.8 \
608     usr/share/pkgconfig/udev.pc \
609     || die
610    
611     # remove udev rule for systemd
612     mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
613    
614     minstalldocs LICENSE* NEWS README TODO || die
615    
616     # install our config
617     cd ${UDEV_CONFIG_SRCDIR}
618     make DESTDIR=${BINDIR} install || die
619     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
620     then
621     # install sysvinit rc. script
622     make DESTDIR=${BINDIR} install-sysvinit || die
623     fi
624    
625     # create symlinks for these utilities to /sbin
626     minstalldir /usr/sbin || die
627     # where multipath-tools expect them to be
628     mlink ../lib/udev/scsi_id /usr/sbin/ || die
629    
630     # mark some dirs undeletable
631     mkeepdir /etc/udev/rules.d || die
632     mkeepdir /usr/lib/udev/state || die
633    
634     # CONFIG_PROTECT_MASK for /etc/udev/rules.d
635     minstalldir /etc/env.d || die
636     MCONFIG="/etc/env.d/02udev"
637     mclearconfig || die
638     maddconfig 'CONFIG_PROTECT_MASK="/etc/udev/rules.d"' || die
639    
640     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
641     then
642     mdelete -r /usr/share || die
643     fi
644     }
645    
646     src_install_udev-dev()
647     {
648     DESTDIR=${BINDIR} mninja install || die
649    
650     # cleanup all files but the udev owned ones
651     zapmost ${BINDIR} \
652     usr/share/man/man7/udev.7 \
653     usr/share/man/man8/systemd-udevd.8 \
654     usr/share/man/man8/udevadm.8 \
655     usr/share/pkgconfig/udev.pc \
656     || die
657    
658     minstalldocs LICENSE* NEWS README TODO || die
659     }
660    
661     src_install_nss-myhostname()
662     {
663     DESTDIR=${BINDIR} mninja install || die
664    
665     # cleanup all files but the nss-myhostname owned ones
666     zapmost ${BINDIR} \
667     usr/$(mlibdir)/libnss_myhostname\* \
668     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libnss_myhostname*') \
669     usr/share/man/man8/nss-myhostname.8 \
670     || die
671    
672     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
673     then
674     mdelete -r /usr/share || die
675     fi
676     }
677    
678     src_install_nss-myhostname-dev()
679     {
680     DESTDIR=${BINDIR} mninja install || die
681    
682     # cleanup all files but the nss-myhostname owned ones
683     zapmost ${BINDIR} \
684     usr/share/man/man8/nss-myhostname.8 \
685     || die
686     }
687    
688     src_install_libsystemd()
689     {
690     DESTDIR=${BINDIR} mninja install || die
691    
692     # cleanup all files but the libsystem owned ones
693     zapmost ${BINDIR} \
694     usr/$(mlibdir)/libsystemd.\* \
695     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd.*') \
696     || die
697     }
698    
699     preinstall_udev()
700     {
701     if [[ ! -z $(magequery -n hotplug) ]]
702     then
703     echo -e ${COLRED}
704     echo -e "Error: sys-apps/hotplug is installed!!"
705     echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
706     echo -e "Please uninstall sys-apps/hotplug first!"
707     echo -e ${COLDEFAULT}
708     die "sys-apps/hotplug found!"
709     fi
710    
711     # move udev state
712     if [ ! -L ${MROOT}/lib ]
713     then
714     if [[ -d ${MROOT}/lib/udev-state ]]
715     then
716     mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
717     rm -r ${MROOT}/lib/udev-state
718     fi
719     if [[ -d ${MROOT}/lib/udev/state ]]
720     then
721     mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
722     rm -r ${MROOT}/lib/udev/state
723     fi
724     fi
725    
726     # remove deprecated udev devices dir
727     if [[ -d ${MROOT}/lib/udev/devices ]]
728     then
729     rm -r ${MROOT}/lib/udev/devices
730     fi
731     if [[ -d ${MROOT}/usr/lib/udev/devices ]]
732     then
733     rm -r ${MROOT}/usr/lib/udev/devices
734     fi
735    
736     if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
737     [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
738     then
739     mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
740     fi
741    
742     # delete the old udev.hotplug symlink if it is present
743     if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
744     then
745     rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
746     fi
747    
748     # delete the old wait_for_sysfs.hotplug symlink if it is present
749     if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
750     then
751     rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
752     fi
753    
754     # delete the old 10-udev.hotplug symlink if it is present
755     if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
756     then
757     rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
758     fi
759    
760     # delete the deprectated udev-late rc-script
761     [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
762    
763     # delete obsolete hotplug.dev script
764     if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
765     then
766     rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
767     fi
768    
769     # delete deprecated pnp-aliases
770     if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
771     then
772     rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
773     fi
774    
775     # delete deprecated blacklist
776     if [[ -f ${MROOT}/etc/udev/blacklist ]]
777     then
778     rm -f ${MROOT}/etc/udev/blacklist
779     fi
780    
781     # delete all udev.rules which are moved from /etc/udev to /lib/udev
782     local rule
783     for rule in 40-arch-s390.rules \
784     61-persistent-storage-edd.rules \
785     75-persistent-net-generator.rules \
786     64-md-raid.rules \
787     65-permissions.rules \
788     64-device-mapper.rules \
789     40-alsa.rules \
790     40-zaptel.rules \
791     60-persistent-input.rules \
792     40-arch-ia64.rules \
793     05-udev-early.rules \
794     40-arch-ppc.rules \
795     60-cdrom_id.rules \
796     40-pilot-links.rules \
797     95-udev-late.rules \
798     40-magellan.rules \
799     50-udev-default.rules \
800     80-drivers.rules \
801     30-kernel-compat.rules \
802     40-video.rules \
803     60-persistent-storage-tape.rules \
804     75-cd-aliases-generator.rules \
805     60-persistent-storage.rules
806     do
807     # delete obsolete hotplug.dev script
808     if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
809     then
810     rm -f ${MROOT}/etc/udev/rules.d/${rule}
811     fi
812     done
813    
814     echo "Network device naming is now controlled by udev's net_setup_link"
815     echo "builtin. Refer to the NETWORK LINK CONFIGURATION section of the"
816     echo "udev manpage for a full description."
817     if [ -e ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules ]
818     then
819     echo
820     echo "Renaming old 80-net-name-slot.rules to 80-net-setup-link.rules in order"
821     echo "to preserve existing network naming behavior."
822     mv -v ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules \
823     ${MROOT}/etc/udev/rules.d/80-net-setup-link.rules
824     fi
825     }
826    
827     postinstall_udev()
828     {
829     [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
830    
831     # systemd
832     if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
833     then
834     # reload config
835     systemctl daemon-reload
836    
837     # try to kill
838     if ! systemctl stop systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket >/dev/null 2>&1
839     then
840     # kill daemon if we are not in a chroot
841     if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
842     then
843     if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
844     then
845     udevadm control --exit 2>&1
846     fi
847     fi
848     fi
849     # start the daemon
850     if ! systemctl start systemd-udevd.service >/dev/null 2>&1
851     then
852     # start daemon if we are not in a chroot
853     if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
854     then
855     if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
856     then
857     /usr/lib/systemd/systemd-udevd --daemon
858     fi
859     fi
860     fi
861    
862     # sysV
863     else
864     # after install/uprade, udev *must* be reloaded if already running
865     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
866     [[ -n $(pidof systemd-udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
867     then
868     echo "MROOT=/; restarting udev daemon ..."
869     # support old installations too
870     killall -15 udevd &> /dev/null
871     killall -15 systemd-udevd &> /dev/null
872     sleep 1
873     killall -9 systemd-udevd &> /dev/null
874     killall -9 udevd &> /dev/null
875     /usr/lib/systemd/systemd-udevd --daemon
876     fi
877     fi
878    
879     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
880     then
881     # update hwdb
882     udevadm hwdb --update > /dev/null 2>&1
883     fi
884     }
885    
886     postinstall_nss-myhostname()
887     {
888     # add myhostname to the hosts line of /etc/nsswitch.conf
889     if [ -f ${MROOT}/etc/nsswitch.conf ]
890     then
891     sed -i -e '
892     /^hosts:/ !b
893     /\<myhostname\>/ b
894     s/[[:blank:]]*$/ myhostname/
895     ' ${MROOT}/etc/nsswitch.conf
896     fi
897     }
898    
899     postremove_nss-myhostname()
900     {
901     # remove myhostname from the hosts line of /etc/nsswitch.conf
902     if [ ! -e ${MROOT}/usr/$(mlibdir)/libnss_myhostname.so.* ]
903     then
904     if [ -f ${MROOT}/etc/nsswitch.conf ]
905     then
906     sed -i -e '
907     /^hosts:/ !b
908     s/[[:blank:]]\+myhostname\>//
909     ' ${MROOT}/etc/nsswitch.conf
910     fi
911     fi
912     }
913    
914     preinstall_systemd()
915     {
916     if [[ ${SYSVINIT_SUPPORT} != 1 ]]
917     then
918     if [[ ! -z $(magequery -n sysvinit) ]]
919     then
920     echo -e ${COLRED}
921     echo -e "Error: sys-apps/sysvinit is installed!!"
922     echo -e "sysvinit is now replaced by systemd which is the new default init system."
923     echo -e "Please uninstall sys-apps/sysvinit first!"
924     echo -e ${COLDEFAULT}
925     die "sys-apps/sysvinit found!"
926     fi
927     fi
928    
929     # adding users
930     pkg_setup
931    
932     # fix broken systemd installations, where
933     # /usr/lib/systemd/systemd is a directory and not the daemon-exec
934     if [ -d ${MROOT}/usr/lib/systemd/systemd ]
935     then
936     rm -r ${MROOT}/usr/lib/systemd/systemd
937     fi
938    
939     # rename configuration files that changed their names
940     if [ -f ${MROOT}/etc/systemd/systemd-logind.conf ]
941     then
942     mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
943     fi
944     if [ -f ${MROOT}/etc/systemd/systemd-journald.conf ]
945     then
946     mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
947     fi
948    
949     # move old stuff around in /var/lib
950     if [ -f ${MROOT}/var/lib/random-seed ]
951     then
952     [ -d ${MROOT}/var/lib/systemd ] || install -d ${MROOT}/var/lib/systemd
953     mv -n ${MROOT}/var/lib/random-seed ${MROOT}/var/lib/systemd/random-seed
954     fi
955     if [ -f ${MROOT}/var/lib/backlight ]
956     then
957     [ -d ${MROOT}/var/lib/systemd ] || install -d ${MROOT}/var/lib/systemd
958     mv -n ${MROOT}/var/lib/backlight ${MROOT}/var/lib/systemd/backlight
959     fi
960     }
961    
962     postinstall_systemd()
963     {
964     # remove deprecated compat libraries
965     local lib
966     for lib in daemon id128 journal login
967     do
968     if [[ -n $(magequery -n libsystemd-${lib}) ]]
969     then
970     echo "Uninstalling deprecated 'libsystemd-${lib}'"
971     mage uninstall libsystemd-${lib}
972     fi
973     done
974    
975     # try to read default runlevel from the old inittab if it exists
976     local runlevel
977     runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
978     local target
979     if [[ -z ${runlevel} ]]
980     then
981     target="/usr/lib/systemd/system/graphical.target"
982     else
983     target="/usr/lib/systemd/system/runlevel${runlevel}.target"
984     fi
985     # and symlink what we found to the new-style default.target
986     ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
987    
988     # convert modules.autoload
989     if [ -f ${MROOT}/etc/modules.autoload ]
990     then
991     local modules
992     # get only lines which are not commented or empty;
993     # if we get any items than the modules.autoload is in use
994     modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
995     if [[ ! -z ${modules} ]]
996     then
997     [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
998     echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
999     > ${MROOT}/etc/modules-load.d/modules.autoload.conf
1000     cat ${MROOT}/etc/modules.autoload \
1001     >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
1002     fi
1003     fi
1004    
1005     # check mtab and replace with a symlink if required
1006     if [[ ! -L ${MROOT}/etc/mtab ]] || \
1007     [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
1008     then
1009     ln -snf /proc/self/mounts ${MROOT}/etc/mtab
1010     fi
1011    
1012     if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
1013     then
1014     # create machine-id
1015     if [ ! -s /etc/machine-id ]
1016     then
1017     systemd-machine-id-setup
1018     fi
1019     # create a random-seed
1020     /usr/lib/systemd/systemd-random-seed save
1021    
1022     # allow detect-virt to be run by unprivileged code
1023     setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
1024    
1025     # restart systemd daemon
1026     systemctl daemon-reexec
1027    
1028     # restart systemd-logind daemon
1029     systemctl try-restart systemd-logind.service
1030    
1031     # update journal catalog
1032     journalctl --update-catalog > /dev/null 2>&1
1033    
1034     # create missing tmpfiles
1035     systemd-tmpfiles --create > /dev/null 2>&1
1036    
1037     # set acls for wheel and adm group
1038     if [ -x /usr/bin/setfacl ]
1039     then
1040     /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
1041     fi
1042    
1043     # enable the services we install by default.
1044     systemctl enable \
1045     getty@tty1.service \
1046     remote-fs.target \
1047     systemd-timesyncd.service
1048     #systemd-readahead-replay.service
1049     #systemd-readahead-collect.service
1050     #console-getty.service
1051     #console-shell.service
1052     #debug-shell.service
1053     #systemd-networkd.service
1054     fi
1055    
1056     echo
1057     echo "with >=systemd-216 coredumps are no longer sent to the journal by default."
1058     echo "To re-enable:"
1059     echo ' echo >/etc/sysctl.d/50-coredump.conf \'
1060     echo ' "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"'
1061     echo
1062    
1063     if [[ ${SYSVINIT_SUPPORT} = 1 ]]
1064     then
1065     echo
1066     echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
1067     echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
1068     echo
1069     fi
1070     }