Magellan Linux

Contents of /smage/trunk/core/systemd/systemd-201-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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