Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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