Magellan Linux

Contents of /trunk/core/systemd/systemd-208-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 20906 - (show annotations) (download)
Thu Feb 13 15:27:22 2014 UTC (10 years, 7 months ago) by niro
File size: 25926 byte(s)
-fixed systemd-python pcat
1 # $Id$
2
3 PNAME="systemd"
4 PVER="208"
5 PBUILD="r3"
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.6"
31 LIBGPGERROR_DEPEND=">= app-crypt/libgpg-error-1.12"
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 PCAT="dev-python"
244 }
245
246 src_prepare()
247 {
248 munpack ${SRCFILE} || die
249 oldmunpack ${UDEV_CONFIG_SRCFILE} || die
250 if [[ ${ENABLE_GTK} = 1 ]]
251 then
252 SRCDIR="${UI_SRCDIR}" munpack ${UI_SRCFILE} || die
253 fi
254
255 # magellan-only: use a configurable getty
256 mpatch ${PNAME}-206-magellan-configurable-getty.patch || die
257
258 # fix busybox compat
259 if need_busybox_support readlink
260 then
261 # busybox does not support readlink -m
262 all-abis "sed -i 's:readlink -m:readlink -f:g' configure.ac || die"
263 # mkdir -p gets not detected in rare cases
264 all-abis "sed -i 's:AC_PROG_MKDIR_P:MKDIR_P=\"$(type -p mkdir) -p\":g' configure.ac || die"
265 fi
266
267 # fix rootlink install location
268 sed -i "s:^\(udevdir=\).*:\1/usr/lib/udev:" ${UDEV_CONFIG_SRCDIR}/Makefile || die
269
270 # regen configure
271 mautoreconf || die
272 }
273
274 src_compile()
275 {
276 # todo:
277 # hostname - ok
278 # move /etc/conf.d/locale -> /etc/locale.conf - done
279 # instead of 'fastboot' add 'fsck.mode=skip
280 # instead of 'forcefsck' add 'fsck.mode=force
281 # /forcequotacheck was dropped
282 # /etc/conf.d/keymaps -> /etc/vconsole.conf - done
283 # vars: KEYMAP KEYMAP_TOGGLE FONT FONT_MAP FONT_UNIMAP - done
284
285 # disable plymouth in configure, to drop the .wants/ symlinks
286 # which are provided now by the plymouth package itself (>=plymouth-0.8.5.1)
287 mconfigure \
288 --libexecdir=/usr/lib \
289 --localstatedir=/var \
290 --with-pamlibdir=/usr/'$(mlibdir)'/security \
291 --disable-ima \
292 --disable-audit \
293 --disable-selinux \
294 --disable-plymouth \
295 --disable-qrencode \
296 --enable-pam \
297 --enable-tcpwrap \
298 --enable-xz \
299 --enable-acl \
300 --enable-libcryptsetup \
301 --enable-gudev \
302 --enable-introspection \
303 --with-pci-ids-path=/usr/share/misc/pci.ids \
304 --with-usb-ids-path=/usr/share/misc/usb.ids \
305 --with-firmware-path=/usr/lib/firmware/updates:/usr/lib/firmware:/lib/firmware/updates:/lib/firmware \
306 --with-sysvinit-path=/etc/rc.d/init \
307 --with-sysvrcnd-path=/etc/rc.d \
308 --with-kbd-loadkeys=/usr/bin/loadkeys \
309 --with-kbd-setfont=/usr/bin/setfont \
310 --with-tty-gid=4 \
311 || die
312
313 mmake -j1 || die
314
315 if [[ ${ENABLE_GTK} = 1 ]]
316 then
317 SRCDIR="${UI_SRCDIR}" mconfigure || die
318 SRCDIR="${UI_SRCDIR}" mmake || die
319 fi
320 }
321
322 src_install_systemd()
323 {
324 mmake -j1 DESTDIR=${BINDIR} install || die
325
326 # keep some directories
327 mkeepdir /run || die
328 mkeepdir /etc/modules-load.d || die
329 mkeepdir /etc/sysctl.d || die
330 mkeepdir /etc/tmpfiles.d || die
331 mkeepdir /etc/binfmt.d || die
332
333 # make sure the shutdown/sleep drop-in dirs exist
334 mkeepdir /usr/lib/systemd/system-shutdown || die
335 mkeepdir /usr/lib/systemd/system-sleep || die
336
337 # make sure the NTP units dir exists
338 mkeepdir /usr/lib/systemd/ntp-units.d || die
339
340 # make sure directories in /var exist
341 mkeepdir /var/lib/systemd/coredump || die
342 mkeepdir /var/lib/systemd/catalog || die
343 mkeepdir /var/log/journal || die
344
345 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
346 then
347 echo "Include SysV init Compat symlinks"
348 # create SysV compatibility symlinks. systemctl/systemd are smart
349 # enough to detect in which way they are called.
350 minstalldir /usr/sbin || die
351 mlink ../lib/systemd/systemd /usr/sbin/init || die
352 local i
353 for i in reboot halt poweroff shutdown telinit runlevel
354 do
355 mlink ../bin/systemctl /usr/sbin/${i} || die
356 done
357 else
358 echo "Using sysvinit package for SysV compat"
359 fi
360
361 # do not package the kernel.core_pattern setting until systemd-coredump
362 # is a part of an actual systemd release and it's made clear how to get
363 # the core dumps out of the journal
364 rm ${BINDIR}/usr/lib/sysctl.d/50-coredump.conf || die
365 #rm -r ${BINDIR}/usr/lib/sysctl.d || die
366
367 # we create all wants links manually at installation time to make sure
368 # they are not owned and hence overriden by mage after the user deleted
369 # them.
370 rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
371 # but make sure these directories are properly owned
372 mkeepdir /usr/lib/systemd/system/basic.target.wants || die
373 mkeepdir /usr/lib/systemd/system/default.target.wants || die
374 mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
375 mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
376 # make sure the user generators dir exists too
377 mkeepdir /usr/lib/systemd/user-generators || die
378 mkeepdir /usr/lib/systemd/system-generators || die
379
380 # login-manager pam policy - force register kdm, gdm etc with pam_systemd
381 all-abis minstallpam login-manager.pamd login-manager || die
382
383 # we have no rpm, remove config macros
384 #mdelete -r /etc/rpm || die
385
386 minstalldocs DISTRO_PORTING LICENSE README TODO || die
387
388 # remove files which are owned by other packages
389 mdelete /usr/bin/systemd-analyze || die
390 mdelete /usr/bin/kernel-install || die
391 mdelete -r /etc/udev || die
392 mdelete /usr/bin/udevadm || die
393 mdelete /usr/include/libudev.h || die
394 mdelete -r /usr/include/gudev-1.0 || die
395 mdelete /usr/lib/systemd/systemd-udevd || die
396 mdelete /usr/lib/systemd/system/systemd-udevd-control.socket || die
397 mdelete /usr/lib/systemd/system/systemd-udevd-kernel.socket || die
398 mdelete /usr/lib/systemd/system/systemd-udevd.service || die
399 mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
400 mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
401 mdelete -r /usr/lib/udev || die
402 rm ${BINDIR}/usr/$(mlibdir)/libgudev* || die
403 rm ${BINDIR}/usr/$(mlibdir)/libudev* || die
404 rm ${BINDIR}/usr/$(mlibdir)/libnss_myhostname* || die
405 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-daemon* || die
406 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-id128* || die
407 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-journal* || die
408 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-login* || die
409 mdelete -r /usr/$(mlibdir)/girepository-1.0 || die
410 mdelete /usr/$(mlibdir)/pkgconfig/gudev-1.0.pc || die
411 mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
412 mdelete -r $(get_python_libdir) || die
413 if [[ $(mlibdir) != lib ]]
414 then
415 rm ${BINDIR}/usr/lib/libgudev* || die
416 rm ${BINDIR}/usr/lib/libudev* || die
417 rm ${BINDIR}/usr/lib/libnss_myhostname* || die
418 rm ${BINDIR}/usr/lib/libsystemd-daemon* || die
419 rm ${BINDIR}/usr/lib/libsystemd-id128* || die
420 rm ${BINDIR}/usr/lib/libsystemd-journal* || die
421 rm ${BINDIR}/usr/lib/libsystemd-login* || die
422 mdelete -r /usr/lib/girepository-1.0 || die
423 mdelete /usr/lib/pkgconfig/gudev-1.0.pc || die
424 mdelete /usr/lib/pkgconfig/libudev.pc || die
425 mdelete -r $(ABI=m32 get_python_libdir) || die
426 fi
427 mdelete -r /usr/share/gir-1.0 || die
428 mdelete /usr/share/man/man7/udev.7 || die
429 mdelete /usr/share/man/man8/systemd-udevd.8 || die
430 mdelete /usr/share/man/man8/udevadm.8 || die
431 mdelete /usr/share/man/man8/nss-myhostname.8 || die
432 mdelete /usr/share/pkgconfig/udev.pc || die
433
434 # install udev rule for systemd
435 minstalludevrule rules/99-systemd.rules || die
436
437 # ghost own runtime generated config files
438 minstalldir /etc/X11/xorg.conf.d || die
439 memptyfile /etc/X11/xorg.conf.d/00-keyboard.conf || die
440 memptyfile /etc/machine-id || die
441 memptyfile /etc/machine-info || die
442 # and set CONFIG_PROTECT_MASK for them
443 minstalldir /etc/env.d || die
444 MCONFIG=/etc/env.d/02systemd
445 mclearconfig || die
446 maddconfig 'CONFIG_PROTECT_IGNORE="/etc/machine-id /etc/machine-info /etc/X11/xorg.conf.d/00-keyboard.conf"' || die
447 }
448
449 src_install_systemd-tools()
450 {
451 cd ${SRCDIR}
452
453 if [[ ${ENABLE_GTK} = 1 ]]
454 then
455 SRCDIR="${UI_SRCDIR}" mmake DESTDIR=${BINDIR} install || die
456 fi
457
458 all-abis minstallexec systemd-analyze || die
459 all-abis minstallexec src/kernel-install/kernel-install || die
460 }
461
462 src_install_libudev()
463 {
464 mmake -j1 DESTDIR=${BINDIR} install || die
465
466 # cleanup all files but the libudev owned ones
467 zapmost ${BINDIR} \
468 usr/include/libudev.h \
469 usr/$(mlibdir)/libudev\* \
470 usr/$(mlibdir)/pkgconfig/libudev.pc \
471 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev*') \
472 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
473 || die
474 }
475
476 src_install_libgudev()
477 {
478 mmake -j1 DESTDIR=${BINDIR} install || die
479
480 # cleanup all files but the libgudev owned ones
481 zapmost ${BINDIR} \
482 usr/include/gudev-1.0 \
483 usr/$(mlibdir)/libgudev\* \
484 usr/$(mlibdir)/girepository-1.0 \
485 usr/$(mlibdir)/pkgconfig/gudev-1.0.pc \
486 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libgudev*') \
487 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/girepository-1.0') \
488 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/gudev-1.0.pc') \
489 usr/share/gir-1.0 \
490 || die
491 }
492
493 src_install_udev()
494 {
495 mmake -j1 DESTDIR=${BINDIR} install || die
496
497 # cleanup all files but the udev owned ones
498 zapmost ${BINDIR} \
499 etc/udev \
500 usr/bin/udevadm \
501 usr/lib/systemd/systemd-udevd \
502 usr/lib/systemd/system/systemd-udevd-control.socket \
503 usr/lib/systemd/system/systemd-udevd-kernel.socket \
504 usr/lib/systemd/system/systemd-udevd.service \
505 usr/lib/systemd/system/systemd-udev-settle.service \
506 usr/lib/systemd/system/systemd-udev-trigger.service \
507 usr/lib/udev \
508 usr/share/man/man7/udev.7 \
509 usr/share/man/man8/systemd-udevd.8 \
510 usr/share/man/man8/udevadm.8 \
511 usr/share/pkgconfig/udev.pc \
512 || die
513
514 # remove udev rule for systemd
515 mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
516
517 minstalldocs LICENSE* NEWS README TODO || die
518
519 # install our config
520 cd ${UDEV_CONFIG_SRCDIR}
521 make DESTDIR=${BINDIR} install || die
522 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
523 then
524 # install sysvinit rc. script
525 make DESTDIR=${BINDIR} install-sysvinit || die
526 fi
527
528 # create symlinks for these utilities to /sbin
529 minstalldir /usr/sbin || die
530 # where multipath-tools expect them to be
531 mlink ../lib/udev/scsi_id /usr/sbin/ || die
532
533 # mark some dirs undeletable
534 mkeepdir /etc/udev/rules.d || die
535 mkeepdir /usr/lib/udev/state || die
536
537 # CONFIG_PROTECT_MASK for /etc/udev/rules.d
538 minstalldir /etc/env.d || die
539 MCONFIG="/etc/env.d/02udev"
540 mclearconfig || die
541 maddconfig 'CONFIG_PROTECT_MASK="/etc/udev/rules.d"' || die
542 }
543
544 src_install_nss-myhostname()
545 {
546 mmake -j1 DESTDIR=${BINDIR} install || die
547
548 # cleanup all files but the nss-myhostname owned ones
549 zapmost ${BINDIR} \
550 usr/$(mlibdir)/libnss_myhostname\* \
551 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libnss_myhostname*') \
552 usr/share/man/man8/nss-myhostname.8 \
553 || die
554 }
555
556 src_install_libsystemd-daemon()
557 {
558 mmake -j1 DESTDIR=${BINDIR} install || die
559
560 # cleanup all files but the libsystem-daemon owned ones
561 zapmost ${BINDIR} \
562 usr/$(mlibdir)/libsystemd-daemon\* \
563 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-daemon*') \
564 || die
565 }
566
567 src_install_libsystemd-id128()
568 {
569 mmake -j1 DESTDIR=${BINDIR} install || die
570
571 # cleanup all files but the libsystem-id128 owned ones
572 zapmost ${BINDIR} \
573 usr/$(mlibdir)/libsystemd-id128\* \
574 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-id128*') \
575 || die
576 }
577
578 src_install_libsystemd-journal()
579 {
580 mmake -j1 DESTDIR=${BINDIR} install || die
581
582 # cleanup all files but the libsystem-journal owned ones
583 zapmost ${BINDIR} \
584 usr/$(mlibdir)/libsystemd-journal\* \
585 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-journal*') \
586 || die
587 }
588
589 src_install_libsystemd-login()
590 {
591 mmake -j1 DESTDIR=${BINDIR} install || die
592
593 # cleanup all files but the libsystem-login owned ones
594 zapmost ${BINDIR} \
595 usr/$(mlibdir)/libsystemd-login\* \
596 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-login*') \
597 || die
598 }
599
600 src_install_systemd-python()
601 {
602 mmake -j1 DESTDIR=${BINDIR} install || die
603
604 # cleanup all files but the systemd-python owned ones
605 zapmost ${BINDIR} \
606 $(get_python_libdir | sed 's:/::') \
607 $([[ $(mlibdir) != lib ]] && $(ABI=m32 get_python_libdir | sed 's:/::')) \
608 || die
609 }
610
611 preinstall_udev()
612 {
613 if [[ ! -z $(magequery -n hotplug) ]]
614 then
615 echo -e ${COLRED}
616 echo -e "Error: sys-apps/hotplug is installed!!"
617 echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
618 echo -e "Please uninstall sys-apps/hotplug first!"
619 echo -e ${COLDEFAULT}
620 die "sys-apps/hotplug found!"
621 fi
622
623 # move udev state
624 if [ ! -L ${MROOT}/lib ]
625 then
626 if [[ -d ${MROOT}/lib/udev-state ]]
627 then
628 mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
629 rm -r ${MROOT}/lib/udev-state
630 fi
631 if [[ -d ${MROOT}/lib/udev/state ]]
632 then
633 mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
634 rm -r ${MROOT}/lib/udev/state
635 fi
636 fi
637
638 # remove deprecated udev devices dir
639 if [[ -d ${MROOT}/lib/udev/devices ]]
640 then
641 rm -r ${MROOT}/lib/udev/devices
642 fi
643 if [[ -d ${MROOT}/usr/lib/udev/devices ]]
644 then
645 rm -r ${MROOT}/usr/lib/udev/devices
646 fi
647
648 if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
649 [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
650 then
651 mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
652 fi
653
654 # delete the old udev.hotplug symlink if it is present
655 if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
656 then
657 rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
658 fi
659
660 # delete the old wait_for_sysfs.hotplug symlink if it is present
661 if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
662 then
663 rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
664 fi
665
666 # delete the old 10-udev.hotplug symlink if it is present
667 if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
668 then
669 rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
670 fi
671
672 # delete the deprectated udev-late rc-script
673 [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
674
675 # delete obsolete hotplug.dev script
676 if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
677 then
678 rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
679 fi
680
681 # delete deprecated pnp-aliases
682 if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
683 then
684 rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
685 fi
686
687 # delete deprecated blacklist
688 if [[ -f ${MROOT}/etc/udev/blacklist ]]
689 then
690 rm -f ${MROOT}/etc/udev/blacklist
691 fi
692
693 # delete all udev.rules which are moved from /etc/udev to /lib/udev
694 local rule
695 for rule in 40-arch-s390.rules \
696 61-persistent-storage-edd.rules \
697 75-persistent-net-generator.rules \
698 64-md-raid.rules \
699 65-permissions.rules \
700 64-device-mapper.rules \
701 40-alsa.rules \
702 40-zaptel.rules \
703 60-persistent-input.rules \
704 40-arch-ia64.rules \
705 05-udev-early.rules \
706 40-arch-ppc.rules \
707 60-cdrom_id.rules \
708 40-pilot-links.rules \
709 95-udev-late.rules \
710 40-magellan.rules \
711 50-udev-default.rules \
712 80-drivers.rules \
713 30-kernel-compat.rules \
714 40-video.rules \
715 60-persistent-storage-tape.rules \
716 75-cd-aliases-generator.rules \
717 60-persistent-storage.rules
718 do
719 # delete obsolete hotplug.dev script
720 if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
721 then
722 rm -f ${MROOT}/etc/udev/rules.d/${rule}
723 fi
724 done
725 }
726
727 postinstall_udev()
728 {
729 [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
730
731 # systemd
732 if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
733 then
734 # reload config
735 systemctl daemon-reload
736
737 # try to kill
738 if ! systemctl stop systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket >/dev/null 2>&1
739 then
740 # kill daemon if we are not in a chroot
741 if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
742 then
743 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
744 then
745 udevadm control --exit 2>&1
746 fi
747 fi
748 fi
749 # start the daemon
750 if ! systemctl start systemd-udevd.service >/dev/null 2>&1
751 then
752 # start daemon if we are not in a chroot
753 if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
754 then
755 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
756 then
757 /usr/lib/systemd/systemd-udevd --daemon
758 fi
759 fi
760 fi
761
762 # sysV
763 else
764 # after install/uprade, udev *must* be reloaded if already running
765 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
766 [[ -n $(pidof systemd-udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
767 then
768 echo "MROOT=/; restarting udev daemon ..."
769 # support old installations too
770 killall -15 udevd &> /dev/null
771 killall -15 systemd-udevd &> /dev/null
772 sleep 1
773 killall -9 systemd-udevd &> /dev/null
774 killall -9 udevd &> /dev/null
775 /usr/lib/systemd/systemd-udevd --daemon
776 fi
777 fi
778
779 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
780 then
781 # update hwdb
782 udevadm hwdb --update > /dev/null 2>&1
783 fi
784 }
785
786 postinstall_nss-myhostname()
787 {
788 # add myhostname to the hosts line of /etc/nsswitch.conf
789 if [ -f ${MROOT}/etc/nsswitch.conf ]
790 then
791 sed -i -e '
792 /^hosts:/ !b
793 /\<myhostname\>/ b
794 s/[[:blank:]]*$/ myhostname/
795 ' ${MROOT}/etc/nsswitch.conf
796 fi
797 }
798
799 postremove_nss-myhostname()
800 {
801 # remove myhostname from the hosts line of /etc/nsswitch.conf
802 if [ ! -e ${MROOT}/usr/$(mlibdir)/libnss_myhostname.so.* ]
803 then
804 if [ -f ${MROOT}/etc/nsswitch.conf ]
805 then
806 sed -i -e '
807 /^hosts:/ !b
808 s/[[:blank:]]\+myhostname\>//
809 ' ${MROOT}/etc/nsswitch.conf
810 fi
811 fi
812 }
813
814 preinstall_systemd()
815 {
816 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
817 then
818 if [[ ! -z $(magequery -n sysvinit) ]]
819 then
820 echo -e ${COLRED}
821 echo -e "Error: sys-apps/sysvinit is installed!!"
822 echo -e "sysvinit is now replaced by systemd which is the new default init system."
823 echo -e "Please uninstall sys-apps/sysvinit first!"
824 echo -e ${COLDEFAULT}
825 die "sys-apps/sysvinit found!"
826 fi
827 fi
828
829 # adding lock group
830 ${MLIBDIR}/mgroupadd -o "-g 54" lock
831 # adding journal group
832 ${MLIBDIR}/mgroupadd -o "-g 190" systemd-journal
833 ${MLIBDIR}/mgroupadd -o "-g 191" systemd-journal-gateway
834 ${MLIBDIR}/museradd -o "-u 191 -g systemd-journal-gateway -d /var/log/journal -s /bin/false" systemd-journal-gateway
835
836 # fix broken systemd installations, where
837 # /usr/lib/systemd/systemd is a directory and not the daemon-exec
838 if [[ -d ${MROOT}/usr/lib/systemd/systemd ]]
839 then
840 rm -r ${MROOT}/usr/lib/systemd/systemd
841 fi
842
843 # rename configuration files that changed their names
844 if [[ -f ${MROOT}/etc/systemd/systemd-logind.conf ]]
845 then
846 mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
847 fi
848 if [[ -f ${MROOT}/etc/systemd/systemd-journald.conf ]]
849 then
850 mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
851 fi
852 }
853
854 postinstall_systemd()
855 {
856 # try to read default runlevel from the old inittab if it exists
857 local runlevel
858 runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
859 local target
860 if [[ -z ${runlevel} ]]
861 then
862 target="/usr/lib/systemd/system/graphical.target"
863 else
864 target="/usr/lib/systemd/system/runlevel${runlevel}.target"
865 fi
866 # and symlink what we found to the new-style default.target
867 ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
868
869 # convert modules.autoload
870 if [ -f ${MROOT}/etc/modules.autoload ]
871 then
872 local modules
873 # get only lines which are not commented or empty;
874 # if we get any items than the modules.autoload is in use
875 modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
876 if [[ ! -z ${modules} ]]
877 then
878 [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
879 echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
880 > ${MROOT}/etc/modules-load.d/modules.autoload.conf
881 cat ${MROOT}/etc/modules.autoload \
882 >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
883 fi
884 fi
885
886 # check mtab, and replace with a symlink if required
887 if [[ ! -L ${MROOT}/etc/mtab ]] || \
888 [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
889 then
890 ln -snf /proc/self/mounts ${MROOT}/etc/mtab
891 fi
892
893 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
894 then
895 # create machine-id
896 if [ ! -s /etc/machine-id ]
897 then
898 systemd-machine-id-setup
899 fi
900 # create a random-seed
901 /usr/lib/systemd/systemd-random-seed save
902
903 # allow detect-virt to be run by unprivileged code
904 setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
905
906 # restart systemd daemon
907 systemctl daemon-reexec
908
909 # restart systemd-logind daemon
910 systemctl try-restart systemd-logind.service
911
912 # update journal catalog
913 journalctl --update-catalog > /dev/null 2>&1
914
915 # set acls for wheel and adm group
916 if [ -x /usr/bin/setfacl ]
917 then
918 /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
919 fi
920
921 # enable the services we install by default.
922 systemctl enable \
923 getty@tty1.service \
924 remote-fs.target \
925 systemd-readahead-replay.service \
926 systemd-readahead-collect.service
927 fi
928
929 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
930 then
931 echo
932 echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
933 echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
934 echo
935 fi
936 }