Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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