Magellan Linux

Contents of /branches/R11-stable/core/systemd/systemd-208-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 20135 - (show annotations) (download)
Tue Nov 26 10:22:22 2013 UTC (10 years, 6 months ago) by niro
File size: 25906 byte(s)
-release branches/R11-stable
1 # $Id$
2
3 PNAME="systemd"
4 PVER="208"
5 PBUILD="r2"
6
7 SPLIT_PACKAGES="libudev libgudev udev nss-myhostname libsystemd-daemon libsystemd-id128 libsystemd-journal libsystemd-login systemd systemd-tools systemd-python"
8
9 PCAT="sys-apps"
10 HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd"
11
12 # enable or disable sysvinit support
13 # 1=yes, 0=no
14 SYSVINIT_SUPPORT=0
15
16 # enable or disable busybox support
17 # 1=yes, 0=no
18 BUSYBOX_SUPPORT=0
19
20 # disable gtk until build with libgee is fixed
21 # 1=yes, 0=no
22 ENABLE_GTK=1
23
24 # export this variables for preinstall
25 SPECIAL_VARS="SYSVINIT_SUPPORT BUSYBOX_SUPPORT"
26
27 GLIB2_DEPEND=">= dev-libs/glib2-2.38"
28 GLIBC_DEPEND=">= virtual/glibc"
29 XZ_DEPEND=">= virtual/xz-utils"
30 LIBGCRYPT_DEPEND=">= app-crypt/libgcrypt-1.5"
31 LIBGPGERROR_DEPEND=">= app-crypt/libgpg-error-1.9"
32 LIBNOTIFY_DEPEND=">= x11-libs/libnotify-0.7"
33 LIBGEE_DEPEND=">= dev-libs/libgee-0.12"
34 COMMON_DEPEND="${GLIBC_DEPEND}
35 ${GLIB2_DEPEND}
36 >= sys-apps/acl-2.2
37 >= virtual/sysvinit-tools
38 >= sys-apps/kmod-15"
39
40 LIBUDEV_DEPEND="${GLIBC_DEPEND}"
41 LIBGUDEV_DEPEND="${GLIBC_DEPEND}
42 ${GLIB2_DEPEND}"
43
44 NSS_DEPEND="${GLIBC_DEPEND}"
45
46 LIBSYSTEMDDAEMON_DEPEND="${GLIBC_DEPEND}"
47 LIBSYSTEMID128_DEPEND="${GLIBC_DEPEND}"
48 LIBSYSTEMDJOURNAL_DEPEND="${GLIBC_DEPEND}
49 ${XZ_DEPEND}
50 ${LIBGCRYPT_DEPEND}
51 ${LIBGPGERROR_DEPEND}"
52 LIBSYSTEMDLOGIN_DEPEND="${GLIBC_DEPEND}"
53
54 # only /etc/os-release is supported from now on
55 SYSTEMD_DEPEND="${COMMON_DEPEND}
56 ${XZ_DEPEND}
57 ${LIBGCRYPT_DEPEND}
58 ${LIBGPGERROR_DEPEND}
59 >= sys-apps/mage-release-1
60 >= sys-apps/dbus-1.6
61 >= sys-fs/cryptsetup-1.6
62 >= dev-libs/dbus-glib-0.100
63 ${LIBGEE_DEPEND}
64 >= sys-apps/tcp-wrappers-7.6
65 >= sys-libs/pam-1.1
66 >= sys-libs/libcap-2.22
67 >= sys-apps/shadow-4.1"
68
69 TOOLS_DEPEND=">= dev-python/dbus-python-1.1
70 >= sys-apps/polkit-0.111"
71
72 UDEV_DEPEND="${COMMON_DEPEND}
73 >= dev-libs/libusb-compat-0.1.4
74 >= virtual/usbutils
75 >= virtual/pciutils
76 >= sys-libs/libuuid-2.23"
77
78 PYTHON_DEPEND=">= dev-lang/python-2.7"
79
80 if [[ ${ENABLE_GTK} = 1 ]]
81 then
82 TOOLS_DEPEND="${TOOLS_DEPEND}
83 >= x11-libs/gtk3+-3.10
84 ${LIBGEE_DEPEND}
85 ${LIBNOTIFY_DEPEND}"
86 fi
87
88 # busybox supports requires sysvinit support
89 if [[ ${BUSYBOX_SUPPORT} = 1 ]]
90 then
91 [[ ${SYSVINIT_SUPPORT} != 1 ]] && SYSVINIT_SUPPORT=1
92 fi
93
94 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
95 then
96 SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
97 >= sys-apps/sysvinit-2.88"
98 fi
99
100 SDEPEND="${LIBUDEV_DEPEND}
101 ${LIBGUDEV_DEPEND}
102 ${NSS_DEPEND}
103 ${LIBSYSTEMDDAEMON_DEPEND}
104 ${LIBSYSTEMID128_DEPEND}
105 ${LIBSYSTEMDJOURNAL_DEPEND}
106 ${LIBSYSTEMDLOGIN_DEPEND}
107 ${SYSTEMD_DEPEND}
108 ${TOOLS_DEPEND}
109 ${UDEV_DEPEND}
110 ${PYTHON_DEPEND}
111 ${LIBGEE_DEPEND}
112 >= app-text/docbook-xsl-stylesheets-1.76
113 >= dev-libs/libcgroup-0.38
114 >= dev-libs/libxslt-1.1.26
115 >= dev-lang/vala-0.22
116 >= dev-util/intltool-0.50
117 >= dev-util/gperf-3
118 >= virtual/kernel-headers"
119
120 SRCFILE="${PNAME}-${PVER}.tar.xz"
121 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
122
123 UDEV_CONFIG_PVER="185-r4"
124 UDEV_CONFIG_SRCFILE="config-udev-${UDEV_CONFIG_PVER}.tar.bz2"
125 UDEV_CONFIG_SRCDIR="${BUILDDIR}/config-udev-${UDEV_CONFIG_PVER}"
126
127 if [[ ${ENABLE_GTK} = 1 ]]
128 then
129 UI_PVER="2"
130 UI_SRCFILE="${PNAME}-ui-${UI_PVER}.tar.xz"
131 UI_SRCDIR="${BUILDDIR}/${PNAME}-ui-${UI_PVER}"
132 fi
133
134 sminclude python mtools multilib cleanutils udev
135 msetfeature "!check"
136
137 SRC_URI=(
138 http://www.freedesktop.org/software/${PNAME}/${SRCFILE}
139 mirror://${PNAME}/${SRCFILE}
140 mirror://udev/${UDEV_CONFIG_SRCFILE}
141 mirror://${PNAME}/${PNAME}-206-magellan-configurable-getty.patch
142 mirror://${PNAME}/login-manager.pamd
143 )
144
145 if [[ ${ENABLE_GTK} = 1 ]]
146 then
147 SRC_URI+=( http://www.freedesktop.org/software/${PNAME}/${UI_SRCFILE} )
148 fi
149
150 UP2DATE="updatecmd http://www.freedesktop.org/software/systemd/ | grep ${PNAME}-[0-9] | lasttarball xz"
151
152 split_info_libudev()
153 {
154 DESCRIPTION="Dynamic library to access udev device information."
155 DEPEND="${LIBUDEV_DEPEND}"
156 PCAT="sys-fs"
157 }
158
159 split_info_libgudev()
160 {
161 DESCRIPTION="Libraries for adding libudev support to applications that use glib2."
162 DEPEND="${LIBGUDEV_DEPEND}
163 == sys-fs/libudev-${PVER}"
164 PCAT="sys-fs"
165 }
166
167 split_info_udev()
168 {
169 DESCRIPTION="A Userspace Implementation for dynamic /dev nodes."
170 DEPEND="${UDEV_DEPEND}
171 == sys-fs/libudev-${PVER}
172 == sys-fs/libgudev-${PVER}"
173 PCAT="sys-fs"
174 }
175
176 split_info_nss-myhostname()
177 {
178 DESCRIPTION="glibc plugin for local system host name resolution."
179 DEPEND="${NSS_DEPEND}"
180 PCAT="net-dns"
181 }
182
183 split_info_libsystemd-daemon()
184 {
185 DESCRIPTION="systemd utility library."
186 DEPEND="${LIBSYSTEMDDAEMON_DEPEND}"
187 PCAT="sys-libs"
188 }
189
190 split_info_libsystemd-id128()
191 {
192 DESCRIPTION="systemd 128 bit ID utility library."
193 DEPEND="${LIBSYSTEMDID128_DEPEND}
194 == sys-libs/libsystemd-daemon-${PVER}"
195 PCAT="sys-libs"
196 }
197
198 split_info_libsystemd-journal()
199 {
200 DESCRIPTION="systemd journal utility library."
201 DEPEND="${LIBSYSTEMDJOURNAL_DEPEND}
202 == sys-libs/libsystemd-daemon-${PVER}"
203 PCAT="sys-libs"
204 }
205
206 split_info_libsystemd-login()
207 {
208 DESCRIPTION="systemd login utility library."
209 DEPEND="${LIBSYSTEMDLOGIN_DEPEND}
210 == sys-libs/libsystemd-daemon-${PVER}"
211 PCAT="sys-libs"
212 }
213
214 split_info_systemd()
215 {
216 DESCRIPTION="System and Session Manager."
217 DEPEND="${SYSTEMD_DEPEND}
218 == sys-libs/libsystemd-daemon-${PVER}
219 == sys-libs/libsystemd-id128-${PVER}
220 == sys-libs/libsystemd-journal-${PVER}
221 == sys-libs/libsystemd-login-${PVER}
222 == net-dns/nss-myhostname-${PVER}
223 == sys-fs/udev-${PVER}"
224 # systemd >=195 provides now full syslog facilities
225 PROVIDE="virtual/syslog"
226 }
227
228 split_info_systemd-tools()
229 {
230 local gtkdesc
231 [[ ${ENABLE_GTK} = 1 ]] && gtkdesc="for gtk3/gnome and "
232
233 DESCRIPTION="Systemd utilites ${gtkdesc}for analysing the boot process."
234 DEPEND="== sys-apps/systemd-${PVER}
235 ${TOOLS_DEPEND}"
236 }
237
238 split_info_systemd-python()
239 {
240 DESCRIPTION="Python bindings for systemd."
241 DEPEND="== sys-apps/systemd-${PVER}
242 ${PYTHON_DEPEND}"
243 }
244
245 src_prepare()
246 {
247 munpack ${SRCFILE} || die
248 oldmunpack ${UDEV_CONFIG_SRCFILE} || die
249 if [[ ${ENABLE_GTK} = 1 ]]
250 then
251 SRCDIR="${UI_SRCDIR}" munpack ${UI_SRCFILE} || die
252 fi
253
254 # magellan-only: use a configurable getty
255 mpatch ${PNAME}-206-magellan-configurable-getty.patch || die
256
257 # fix busybox compat
258 if need_busybox_support readlink
259 then
260 # busybox does not support readlink -m
261 all-abis "sed -i 's:readlink -m:readlink -f:g' configure.ac || die"
262 # mkdir -p gets not detected in rare cases
263 all-abis "sed -i 's:AC_PROG_MKDIR_P:MKDIR_P=\"$(type -p mkdir) -p\":g' configure.ac || die"
264 fi
265
266 # fix rootlink install location
267 sed -i "s:^\(udevdir=\).*:\1/usr/lib/udev:" ${UDEV_CONFIG_SRCDIR}/Makefile || die
268
269 # regen configure
270 mautoreconf || die
271 }
272
273 src_compile()
274 {
275 # todo:
276 # hostname - ok
277 # move /etc/conf.d/locale -> /etc/locale.conf - done
278 # instead of 'fastboot' add 'fsck.mode=skip
279 # instead of 'forcefsck' add 'fsck.mode=force
280 # /forcequotacheck was dropped
281 # /etc/conf.d/keymaps -> /etc/vconsole.conf - done
282 # vars: KEYMAP KEYMAP_TOGGLE FONT FONT_MAP FONT_UNIMAP - done
283
284 # disable plymouth in configure, to drop the .wants/ symlinks
285 # which are provided now by the plymouth package itself (>=plymouth-0.8.5.1)
286 mconfigure \
287 --libexecdir=/usr/lib \
288 --localstatedir=/var \
289 --with-pamlibdir=/usr/'$(mlibdir)'/security \
290 --disable-ima \
291 --disable-audit \
292 --disable-selinux \
293 --disable-plymouth \
294 --disable-qrencode \
295 --enable-pam \
296 --enable-tcpwrap \
297 --enable-xz \
298 --enable-acl \
299 --enable-libcryptsetup \
300 --enable-gudev \
301 --enable-introspection \
302 --with-pci-ids-path=/usr/share/misc/pci.ids \
303 --with-usb-ids-path=/usr/share/misc/usb.ids \
304 --with-firmware-path=/usr/lib/firmware/updates:/usr/lib/firmware:/lib/firmware/updates:/lib/firmware \
305 --with-sysvinit-path=/etc/rc.d/init \
306 --with-sysvrcnd-path=/etc/rc.d \
307 --with-kbd-loadkeys=/usr/bin/loadkeys \
308 --with-kbd-setfont=/usr/bin/setfont \
309 --with-tty-gid=4 \
310 || die
311
312 mmake -j1 || die
313
314 if [[ ${ENABLE_GTK} = 1 ]]
315 then
316 SRCDIR="${UI_SRCDIR}" mconfigure || die
317 SRCDIR="${UI_SRCDIR}" mmake || die
318 fi
319 }
320
321 src_install_systemd()
322 {
323 mmake -j1 DESTDIR=${BINDIR} install || die
324
325 # keep some directories
326 mkeepdir /run || die
327 mkeepdir /etc/modules-load.d || die
328 mkeepdir /etc/sysctl.d || die
329 mkeepdir /etc/tmpfiles.d || die
330 mkeepdir /etc/binfmt.d || die
331
332 # make sure the shutdown/sleep drop-in dirs exist
333 mkeepdir /usr/lib/systemd/system-shutdown || die
334 mkeepdir /usr/lib/systemd/system-sleep || die
335
336 # make sure the NTP units dir exists
337 mkeepdir /usr/lib/systemd/ntp-units.d || die
338
339 # make sure directories in /var exist
340 mkeepdir /var/lib/systemd/coredump || die
341 mkeepdir /var/lib/systemd/catalog || die
342 mkeepdir /var/log/journal || die
343
344 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
345 then
346 echo "Include SysV init Compat symlinks"
347 # create SysV compatibility symlinks. systemctl/systemd are smart
348 # enough to detect in which way they are called.
349 minstalldir /usr/sbin || die
350 mlink ../lib/systemd/systemd /usr/sbin/init || die
351 local i
352 for i in reboot halt poweroff shutdown telinit runlevel
353 do
354 mlink ../bin/systemctl /usr/sbin/${i} || die
355 done
356 else
357 echo "Using sysvinit package for SysV compat"
358 fi
359
360 # do not package the kernel.core_pattern setting until systemd-coredump
361 # is a part of an actual systemd release and it's made clear how to get
362 # the core dumps out of the journal
363 rm ${BINDIR}/usr/lib/sysctl.d/50-coredump.conf || die
364 #rm -r ${BINDIR}/usr/lib/sysctl.d || die
365
366 # we create all wants links manually at installation time to make sure
367 # they are not owned and hence overriden by mage after the user deleted
368 # them.
369 rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
370 # but make sure these directories are properly owned
371 mkeepdir /usr/lib/systemd/system/basic.target.wants || die
372 mkeepdir /usr/lib/systemd/system/default.target.wants || die
373 mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
374 mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
375 # make sure the user generators dir exists too
376 mkeepdir /usr/lib/systemd/user-generators || die
377 mkeepdir /usr/lib/systemd/system-generators || die
378
379 # login-manager pam policy - force register kdm, gdm etc with pam_systemd
380 all-abis minstallpam login-manager.pamd login-manager || die
381
382 # we have no rpm, remove config macros
383 #mdelete -r /etc/rpm || die
384
385 minstalldocs DISTRO_PORTING LICENSE README TODO || die
386
387 # remove files which are owned by other packages
388 mdelete /usr/bin/systemd-analyze || die
389 mdelete /usr/bin/kernel-install || die
390 mdelete -r /etc/udev || die
391 mdelete /usr/bin/udevadm || die
392 mdelete /usr/include/libudev.h || die
393 mdelete -r /usr/include/gudev-1.0 || die
394 mdelete /usr/lib/systemd/systemd-udevd || die
395 mdelete /usr/lib/systemd/system/systemd-udevd-control.socket || die
396 mdelete /usr/lib/systemd/system/systemd-udevd-kernel.socket || die
397 mdelete /usr/lib/systemd/system/systemd-udevd.service || die
398 mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
399 mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
400 mdelete -r /usr/lib/udev || die
401 rm ${BINDIR}/usr/$(mlibdir)/libgudev* || die
402 rm ${BINDIR}/usr/$(mlibdir)/libudev* || die
403 rm ${BINDIR}/usr/$(mlibdir)/libnss_myhostname* || die
404 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-daemon* || die
405 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-id128* || die
406 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-journal* || die
407 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-login* || die
408 mdelete -r /usr/$(mlibdir)/girepository-1.0 || die
409 mdelete /usr/$(mlibdir)/pkgconfig/gudev-1.0.pc || die
410 mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
411 mdelete -r $(get_python_libdir) || die
412 if [[ $(mlibdir) != lib ]]
413 then
414 rm ${BINDIR}/usr/lib/libgudev* || die
415 rm ${BINDIR}/usr/lib/libudev* || die
416 rm ${BINDIR}/usr/lib/libnss_myhostname* || die
417 rm ${BINDIR}/usr/lib/libsystemd-daemon* || die
418 rm ${BINDIR}/usr/lib/libsystemd-id128* || die
419 rm ${BINDIR}/usr/lib/libsystemd-journal* || die
420 rm ${BINDIR}/usr/lib/libsystemd-login* || die
421 mdelete -r /usr/lib/girepository-1.0 || die
422 mdelete /usr/lib/pkgconfig/gudev-1.0.pc || die
423 mdelete /usr/lib/pkgconfig/libudev.pc || die
424 mdelete -r $(ABI=m32 get_python_libdir) || die
425 fi
426 mdelete -r /usr/share/gir-1.0 || die
427 mdelete /usr/share/man/man7/udev.7 || die
428 mdelete /usr/share/man/man8/systemd-udevd.8 || die
429 mdelete /usr/share/man/man8/udevadm.8 || die
430 mdelete /usr/share/man/man8/nss-myhostname.8 || die
431 mdelete /usr/share/pkgconfig/udev.pc || die
432
433 # install udev rule for systemd
434 minstalludevrule rules/99-systemd.rules || die
435
436 # ghost own runtime generated config files
437 minstalldir /etc/X11/xorg.conf.d || die
438 memptyfile /etc/X11/xorg.conf.d/00-keyboard.conf || die
439 memptyfile /etc/machine-id || die
440 memptyfile /etc/machine-info || die
441 # and set CONFIG_PROTECT_MASK for them
442 minstalldir /etc/env.d || die
443 MCONFIG=/etc/env.d/02systemd
444 mclearconfig || die
445 maddconfig 'CONFIG_PROTECT_IGNORE="/etc/machine-id /etc/machine-info /etc/X11/xorg.conf.d/00-keyboard.conf"' || die
446 }
447
448 src_install_systemd-tools()
449 {
450 cd ${SRCDIR}
451
452 if [[ ${ENABLE_GTK} = 1 ]]
453 then
454 SRCDIR="${UI_SRCDIR}" mmake DESTDIR=${BINDIR} install || die
455 fi
456
457 all-abis minstallexec systemd-analyze || die
458 all-abis minstallexec src/kernel-install/kernel-install || die
459 }
460
461 src_install_libudev()
462 {
463 mmake -j1 DESTDIR=${BINDIR} install || die
464
465 # cleanup all files but the libudev owned ones
466 zapmost ${BINDIR} \
467 usr/include/libudev.h \
468 usr/$(mlibdir)/libudev\* \
469 usr/$(mlibdir)/pkgconfig/libudev.pc \
470 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev*') \
471 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
472 || die
473 }
474
475 src_install_libgudev()
476 {
477 mmake -j1 DESTDIR=${BINDIR} install || die
478
479 # cleanup all files but the libgudev owned ones
480 zapmost ${BINDIR} \
481 usr/include/gudev-1.0 \
482 usr/$(mlibdir)/libgudev\* \
483 usr/$(mlibdir)/girepository-1.0 \
484 usr/$(mlibdir)/pkgconfig/gudev-1.0.pc \
485 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libgudev*') \
486 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/girepository-1.0') \
487 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/gudev-1.0.pc') \
488 usr/share/gir-1.0 \
489 || die
490 }
491
492 src_install_udev()
493 {
494 mmake -j1 DESTDIR=${BINDIR} install || die
495
496 # cleanup all files but the udev owned ones
497 zapmost ${BINDIR} \
498 etc/udev \
499 usr/bin/udevadm \
500 usr/lib/systemd/systemd-udevd \
501 usr/lib/systemd/system/systemd-udevd-control.socket \
502 usr/lib/systemd/system/systemd-udevd-kernel.socket \
503 usr/lib/systemd/system/systemd-udevd.service \
504 usr/lib/systemd/system/systemd-udev-settle.service \
505 usr/lib/systemd/system/systemd-udev-trigger.service \
506 usr/lib/udev \
507 usr/share/man/man7/udev.7 \
508 usr/share/man/man8/systemd-udevd.8 \
509 usr/share/man/man8/udevadm.8 \
510 usr/share/pkgconfig/udev.pc \
511 || die
512
513 # remove udev rule for systemd
514 mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
515
516 minstalldocs LICENSE* NEWS README TODO || die
517
518 # install our config
519 cd ${UDEV_CONFIG_SRCDIR}
520 make DESTDIR=${BINDIR} install || die
521 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
522 then
523 # install sysvinit rc. script
524 make DESTDIR=${BINDIR} install-sysvinit || die
525 fi
526
527 # create symlinks for these utilities to /sbin
528 minstalldir /usr/sbin || die
529 # where multipath-tools expect them to be
530 mlink ../lib/udev/scsi_id /usr/sbin/ || die
531
532 # mark some dirs undeletable
533 mkeepdir /etc/udev/rules.d || die
534 mkeepdir /usr/lib/udev/state || die
535
536 # CONFIG_PROTECT_MASK for /etc/udev/rules.d
537 minstalldir /etc/env.d || die
538 MCONFIG="/etc/env.d/02udev"
539 mclearconfig || die
540 maddconfig 'CONFIG_PROTECT_MASK="/etc/udev/rules.d"' || die
541 }
542
543 src_install_nss-myhostname()
544 {
545 mmake -j1 DESTDIR=${BINDIR} install || die
546
547 # cleanup all files but the nss-myhostname owned ones
548 zapmost ${BINDIR} \
549 usr/$(mlibdir)/libnss_myhostname\* \
550 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libnss_myhostname*') \
551 usr/share/man/man8/nss-myhostname.8 \
552 || die
553 }
554
555 src_install_libsystemd-daemon()
556 {
557 mmake -j1 DESTDIR=${BINDIR} install || die
558
559 # cleanup all files but the libsystem-daemon owned ones
560 zapmost ${BINDIR} \
561 usr/$(mlibdir)/libsystemd-daemon\* \
562 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-daemon*') \
563 || die
564 }
565
566 src_install_libsystemd-id128()
567 {
568 mmake -j1 DESTDIR=${BINDIR} install || die
569
570 # cleanup all files but the libsystem-id128 owned ones
571 zapmost ${BINDIR} \
572 usr/$(mlibdir)/libsystemd-id128\* \
573 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-id128*') \
574 || die
575 }
576
577 src_install_libsystemd-journal()
578 {
579 mmake -j1 DESTDIR=${BINDIR} install || die
580
581 # cleanup all files but the libsystem-journal owned ones
582 zapmost ${BINDIR} \
583 usr/$(mlibdir)/libsystemd-journal\* \
584 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-journal*') \
585 || die
586 }
587
588 src_install_libsystemd-login()
589 {
590 mmake -j1 DESTDIR=${BINDIR} install || die
591
592 # cleanup all files but the libsystem-login owned ones
593 zapmost ${BINDIR} \
594 usr/$(mlibdir)/libsystemd-login\* \
595 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-login*') \
596 || die
597 }
598
599 src_install_systemd-python()
600 {
601 mmake -j1 DESTDIR=${BINDIR} install || die
602
603 # cleanup all files but the systemd-python owned ones
604 zapmost ${BINDIR} \
605 $(get_python_libdir | sed 's:/::') \
606 $([[ $(mlibdir) != lib ]] && $(ABI=m32 get_python_libdir | sed 's:/::')) \
607 || die
608 }
609
610 preinstall_udev()
611 {
612 if [[ ! -z $(magequery -n hotplug) ]]
613 then
614 echo -e ${COLRED}
615 echo -e "Error: sys-apps/hotplug is installed!!"
616 echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
617 echo -e "Please uninstall sys-apps/hotplug first!"
618 echo -e ${COLDEFAULT}
619 die "sys-apps/hotplug found!"
620 fi
621
622 # move udev state
623 if [ ! -L ${MROOT}/lib ]
624 then
625 if [[ -d ${MROOT}/lib/udev-state ]]
626 then
627 mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
628 rm -r ${MROOT}/lib/udev-state
629 fi
630 if [[ -d ${MROOT}/lib/udev/state ]]
631 then
632 mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
633 rm -r ${MROOT}/lib/udev/state
634 fi
635 fi
636
637 # remove deprecated udev devices dir
638 if [[ -d ${MROOT}/lib/udev/devices ]]
639 then
640 rm -r ${MROOT}/lib/udev/devices
641 fi
642 if [[ -d ${MROOT}/usr/lib/udev/devices ]]
643 then
644 rm -r ${MROOT}/usr/lib/udev/devices
645 fi
646
647 if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
648 [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
649 then
650 mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
651 fi
652
653 # delete the old udev.hotplug symlink if it is present
654 if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
655 then
656 rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
657 fi
658
659 # delete the old wait_for_sysfs.hotplug symlink if it is present
660 if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
661 then
662 rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
663 fi
664
665 # delete the old 10-udev.hotplug symlink if it is present
666 if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
667 then
668 rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
669 fi
670
671 # delete the deprectated udev-late rc-script
672 [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
673
674 # delete obsolete hotplug.dev script
675 if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
676 then
677 rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
678 fi
679
680 # delete deprecated pnp-aliases
681 if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
682 then
683 rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
684 fi
685
686 # delete deprecated blacklist
687 if [[ -f ${MROOT}/etc/udev/blacklist ]]
688 then
689 rm -f ${MROOT}/etc/udev/blacklist
690 fi
691
692 # delete all udev.rules which are moved from /etc/udev to /lib/udev
693 local rule
694 for rule in 40-arch-s390.rules \
695 61-persistent-storage-edd.rules \
696 75-persistent-net-generator.rules \
697 64-md-raid.rules \
698 65-permissions.rules \
699 64-device-mapper.rules \
700 40-alsa.rules \
701 40-zaptel.rules \
702 60-persistent-input.rules \
703 40-arch-ia64.rules \
704 05-udev-early.rules \
705 40-arch-ppc.rules \
706 60-cdrom_id.rules \
707 40-pilot-links.rules \
708 95-udev-late.rules \
709 40-magellan.rules \
710 50-udev-default.rules \
711 80-drivers.rules \
712 30-kernel-compat.rules \
713 40-video.rules \
714 60-persistent-storage-tape.rules \
715 75-cd-aliases-generator.rules \
716 60-persistent-storage.rules
717 do
718 # delete obsolete hotplug.dev script
719 if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
720 then
721 rm -f ${MROOT}/etc/udev/rules.d/${rule}
722 fi
723 done
724 }
725
726 postinstall_udev()
727 {
728 [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
729
730 # systemd
731 if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
732 then
733 # reload config
734 systemctl daemon-reload
735
736 # try to kill
737 if ! systemctl stop systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket >/dev/null 2>&1
738 then
739 # kill daemon if we are not in a chroot
740 if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
741 then
742 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
743 then
744 udevadm control --exit 2>&1
745 fi
746 fi
747 fi
748 # start the daemon
749 if ! systemctl start systemd-udevd.service >/dev/null 2>&1
750 then
751 # start daemon if we are not in a chroot
752 if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
753 then
754 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
755 then
756 /usr/lib/systemd/systemd-udevd --daemon
757 fi
758 fi
759 fi
760
761 # sysV
762 else
763 # after install/uprade, udev *must* be reloaded if already running
764 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
765 [[ -n $(pidof systemd-udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
766 then
767 echo "MROOT=/; restarting udev daemon ..."
768 # support old installations too
769 killall -15 udevd &> /dev/null
770 killall -15 systemd-udevd &> /dev/null
771 sleep 1
772 killall -9 systemd-udevd &> /dev/null
773 killall -9 udevd &> /dev/null
774 /usr/lib/systemd/systemd-udevd --daemon
775 fi
776 fi
777
778 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
779 then
780 # update hwdb
781 udevadm hwdb --update > /dev/null 2>&1
782 fi
783 }
784
785 postinstall_nss-myhostname()
786 {
787 # add myhostname to the hosts line of /etc/nsswitch.conf
788 if [ -f ${MROOT}/etc/nsswitch.conf ]
789 then
790 sed -i -e '
791 /^hosts:/ !b
792 /\<myhostname\>/ b
793 s/[[:blank:]]*$/ myhostname/
794 ' ${MROOT}/etc/nsswitch.conf
795 fi
796 }
797
798 postremove_nss-myhostname()
799 {
800 # remove myhostname from the hosts line of /etc/nsswitch.conf
801 if [ ! -e ${MROOT}/usr/$(mlibdir)/libnss_myhostname.so.* ]
802 then
803 if [ -f ${MROOT}/etc/nsswitch.conf ]
804 then
805 sed -i -e '
806 /^hosts:/ !b
807 s/[[:blank:]]\+myhostname\>//
808 ' ${MROOT}/etc/nsswitch.conf
809 fi
810 fi
811 }
812
813 preinstall_systemd()
814 {
815 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
816 then
817 if [[ ! -z $(magequery -n sysvinit) ]]
818 then
819 echo -e ${COLRED}
820 echo -e "Error: sys-apps/sysvinit is installed!!"
821 echo -e "sysvinit is now replaced by systemd which is the new default init system."
822 echo -e "Please uninstall sys-apps/sysvinit first!"
823 echo -e ${COLDEFAULT}
824 die "sys-apps/sysvinit found!"
825 fi
826 fi
827
828 # adding lock group
829 ${MLIBDIR}/mgroupadd -o "-g 54" lock
830 # adding journal group
831 ${MLIBDIR}/mgroupadd -o "-g 190" systemd-journal
832 ${MLIBDIR}/mgroupadd -o "-g 191" systemd-journal-gateway
833 ${MLIBDIR}/museradd -o "-u 191 -g systemd-journal-gateway -d /var/log/journal -s /bin/false" systemd-journal-gateway
834
835 # fix broken systemd installations, where
836 # /usr/lib/systemd/systemd is a directory and not the daemon-exec
837 if [[ -d ${MROOT}/usr/lib/systemd/systemd ]]
838 then
839 rm -r ${MROOT}/usr/lib/systemd/systemd
840 fi
841
842 # rename configuration files that changed their names
843 if [[ -f ${MROOT}/etc/systemd/systemd-logind.conf ]]
844 then
845 mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
846 fi
847 if [[ -f ${MROOT}/etc/systemd/systemd-journald.conf ]]
848 then
849 mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
850 fi
851 }
852
853 postinstall_systemd()
854 {
855 # try to read default runlevel from the old inittab if it exists
856 local runlevel
857 runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
858 local target
859 if [[ -z ${runlevel} ]]
860 then
861 target="/usr/lib/systemd/system/graphical.target"
862 else
863 target="/usr/lib/systemd/system/runlevel${runlevel}.target"
864 fi
865 # and symlink what we found to the new-style default.target
866 ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
867
868 # convert modules.autoload
869 if [ -f ${MROOT}/etc/modules.autoload ]
870 then
871 local modules
872 # get only lines which are not commented or empty;
873 # if we get any items than the modules.autoload is in use
874 modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
875 if [[ ! -z ${modules} ]]
876 then
877 [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
878 echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
879 > ${MROOT}/etc/modules-load.d/modules.autoload.conf
880 cat ${MROOT}/etc/modules.autoload \
881 >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
882 fi
883 fi
884
885 # check mtab, and replace with a symlink if required
886 if [[ ! -L ${MROOT}/etc/mtab ]] || \
887 [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
888 then
889 ln -snf /proc/self/mounts ${MROOT}/etc/mtab
890 fi
891
892 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
893 then
894 # create machine-id
895 if [ ! -s /etc/machine-id ]
896 then
897 systemd-machine-id-setup
898 fi
899 # create a random-seed
900 /usr/lib/systemd/systemd-random-seed save
901
902 # allow detect-virt to be run by unprivileged code
903 setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
904
905 # restart systemd daemon
906 systemctl daemon-reexec
907
908 # restart systemd-logind daemon
909 systemctl try-restart systemd-logind.service
910
911 # update journal catalog
912 journalctl --update-catalog > /dev/null 2>&1
913
914 # set acls for wheel and adm group
915 if [ -x /usr/bin/setfacl ]
916 then
917 /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
918 fi
919
920 # enable the services we install by default.
921 systemctl enable \
922 getty@tty1.service \
923 remote-fs.target \
924 systemd-readahead-replay.service \
925 systemd-readahead-collect.service
926 fi
927
928 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
929 then
930 echo
931 echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
932 echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
933 echo
934 fi
935 }