Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3732 - (show annotations) (download)
Tue Jul 17 08:51:54 2012 UTC (11 years, 10 months ago) by niro
File size: 21859 byte(s)
-split dev files for alx
1 # $Id$
2
3 PNAME="systemd"
4 PVER="185"
5 PBUILD="r1"
6
7 SPLIT_PACKAGES="libudev libudev-dev udev udev-dev"
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=1
15
16 # enable or disable busybox support
17 # 1=yes, 0=no
18 BUSYBOX_SUPPORT=1
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.32"
28 GLIBC_DEPEND=">= virtual/glibc"
29 COMMON_DEPEND="${GLIBC_DEPEND}
30 ${GLIB2_DEPEND}
31 >= sys-apps/util-linux-2.21
32 >= virtual/sysvinit-tools
33 >= sys-apps/kmod-8"
34
35 LIBUDEV_DEPEND="${GLIBC_DEPEND}"
36 LIBGUDEV_DEPEND="${GLIBC_DEPEND}
37 ${GLIB2_DEPEND}"
38
39 # only /etc/os-release is supported from now on
40 SYSTEMD_DEPEND="${COMMON_DEPEND}
41 >= sys-apps/mage-release-1
42 >= sys-apps/dbus-1.6
43 >= dev-libs/dbus-glib-0.98
44 >= dev-libs/libgee-0.7
45 >= net-dns/nss-myhostname-0.3
46 >= app-arch/xz-utils-5
47 >= sys-apps/tcp-wrappers-7.6
48 >= sys-libs/pam-1.1
49 >= sys-libs/libcap-2.22
50 >= sys-apps/shadow-4.1"
51
52 TOOLS_DEPEND=">= dev-python/dbus-python-0.84
53 >= sys-apps/polkit-0.104"
54
55 #UDEV_DEPEND="${COMMON_DEPEND}
56 # >= dev-libs/libusb-compat-0.1.4
57 # >= sys-apps/usbutils-005
58 # >= sys-apps/pciutils-3.1"
59 UDEV_DEPEND="${COMMON_DEPEND}"
60
61 if [[ ${ENABLE_GTK} = 1 ]]
62 then
63 TOOLS_DEPEND="${TOOLS_DEPEND}
64 >= x11-libs/gtk2+-2.24
65 >= dev-libs/libgee-0.7"
66 fi
67
68 # busybox supports requires sysvinit support
69 if [[ ${BUSYBOX_SUPPORT} = 1 ]]
70 then
71 [[ ${SYSVINIT_SUPPORT} != 1 ]] && SYSVINIT_SUPPORT=1
72 fi
73
74 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
75 then
76 SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
77 >= virtual/sysvinit"
78 fi
79
80 #SDEPEND="${LIBUDEV_DEPEND}
81 # ${LIBGUDEV_DEPEND}
82 # ${SYSTEMD_DEPEND}
83 # ${TOOLS_DEPEND}
84 # ${UDEV_DEPEND}
85 # >= app-text/docbook-xsl-stylesheets-1.76
86 # >= dev-libs/libcgroup-0.38
87 # >= dev-libs/libxslt-1.1.26
88 # >= dev-lang/vala-0.16
89 # >= dev-util/intltool-0.50
90 # >= dev-util/gperf-3
91 # >= virtual/kernel-headers
92 # >= x11-libs/libnotify-0.7"
93
94 SDEPEND="${LIBUDEV_DEPEND}
95 ${UDEV_DEPEND}
96 >= dev-util/intltool-0.50
97 >= dev-util/gperf-3"
98
99 SRCFILE="${PNAME}-${PVER}.tar.xz"
100 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
101
102 UDEV_CONFIG_PVER="${PVER}-r1"
103 UDEV_CONFIG_SRCFILE="config-udev-${UDEV_CONFIG_PVER}.tar.bz2"
104 UDEV_CONFIG_SRCDIR="${BUILDDIR}/config-udev-${UDEV_CONFIG_PVER}"
105
106 if [[ ${ENABLE_GTK} = 1 ]]
107 then
108 UI_PVER="1"
109 UI_SRCFILE="${PNAME}-ui-${UI_PVER}.tar.xz"
110 UI_SRCDIR="${BUILDDIR}/${PNAME}-ui-${PVER}"
111 fi
112
113 sminclude mtools multilib cleanutils
114 msetfeature "!check"
115
116 SRC_URI=(
117 http://www.freedesktop.org/software/${PNAME}/${SRCFILE}
118 mirror://${PNAME}/${SRCFILE}
119 mirror://udev/${UDEV_CONFIG_SRCFILE}
120 mirror://${PNAME}/${PNAME}-185-magellan.patch
121 mirror://${PNAME}/${PNAME}-185-magellan-configurable-getty-2.patch
122 mirror://${PNAME}/login-manager.pamd
123 )
124
125 if [[ ${ENABLE_GTK} = 1 ]]
126 then
127 SRC_URI+=( http://www.freedesktop.org/software/${PNAME}/${UI_SRCFILE} )
128 fi
129
130 UP2DATE="updatecmd http://www.freedesktop.org/software/systemd/ | grep ${PNAME}-[0-9] | lasttarball xz"
131
132 split_info_libudev()
133 {
134 DESCRIPTION="Dynamic library to access udev device information."
135 DEPEND="${LIBUDEV_DEPEND}"
136 PCAT="sys-fs"
137 }
138
139 split_info_libudev-dev()
140 {
141 DESCRIPTION="Development files for libudev."
142 DEPEND="== sys-fs/libudev-${PVER}"
143 PCAT="sys-fs"
144 }
145
146 split_info_libgudev()
147 {
148 DESCRIPTION="Libraries for adding libudev support to applications that use glib2."
149 DEPEND="${LIBGUDEV_DEPEND}
150 == sys-fs/libudev-${PVER}"
151 PCAT="sys-fs"
152 }
153
154 split_info_udev()
155 {
156 DESCRIPTION="A Userspace Implementation for dynamic /dev nodes."
157 DEPEND="${UDEV_DEPEND}
158 == sys-fs/libudev-${PVER}"
159 #== sys-fs/libgudev-${PVER}"
160 PCAT="sys-fs"
161 }
162
163 split_info_udev-dev()
164 {
165 DESCRIPTION="Development files for udev."
166 DEPEND="== sys-fs/libudev-dev-${PVER}
167 == sys-fs/udev-dev-${PVER}"
168 PCAT="sys-fs"
169 }
170
171 split_info_systemd()
172 {
173 DESCRIPTION="System and Session Manager."
174 DEPEND="${SYSTEMD_DEPEND}
175 == sys-fs/udev-${PVER}"
176 }
177
178 split_info_systemd-tools()
179 {
180 local gtkdesc
181 [[ ${ENABLE_GTK} = 1 ]] && gtkdesc="for gtk2/gnome and "
182
183 DESCRIPTION="Systemd utilites ${gtkdesc}for analysing the boot process."
184 DEPEND="== sys-apps/systemd-${PVER}
185 ${TOOLS_DEPEND}"
186 }
187
188 src_prepare()
189 {
190 munpack ${SRCFILE} || die
191 oldmunpack ${UDEV_CONFIG_SRCFILE} || die
192 if [[ ${ENABLE_GTK} = 1 ]]
193 then
194 SRCDIR="${UI_SRCDIR}" munpack ${UI_SRCFILE} || die
195 fi
196
197 # apply our magellan patch
198 mpatch ${PNAME}-185-magellan.patch || die
199
200 # magellan-only: use a configurable getty
201 mpatch ${PNAME}-185-magellan-configurable-getty-2.patch || die
202
203 # let rsyslog read from /proc/kmsg for now
204 all-abis sed -i "s:#ImportKernel=yes:ImportKernel=no:" src/journal/journald.conf || die
205
206 # regen configure
207 mautoreconf || die
208 }
209
210 src_compile()
211 {
212 mconfigure \
213 --with-distro=magellan \
214 --libexecdir=/usr/lib \
215 --localstatedir=/var \
216 --disable-ima \
217 --disable-audit \
218 --disable-selinux \
219 --disable-pam \
220 --disable-tcpwrap \
221 --disable-xz \
222 --disable-acl \
223 --disable-libcryptsetup \
224 --disable-plymouth \
225 --disable-gudev \
226 --disable-introspection \
227 --with-pci-ids-path=no \
228 --with-usb-ids-path=no \
229 --with-firmware-path=/usr/lib/firmware/updates:/usr/lib/firmware:/lib/firmware/updates:/lib/firmware \
230 --disable-binfmt \
231 --disable-vconsole \
232 --disable-readahead \
233 --disable-quotacheck \
234 --disable-randomseed \
235 --disable-logind \
236 --disable-hostnamed \
237 --disable-timedated \
238 --disable-localed \
239 --disable-coredump \
240 --disable-keymap \
241 --disable-manpages \
242 || die
243
244 mmake || die
245
246 if [[ ${ENABLE_GTK} = 1 ]]
247 then
248 SRCDIR="${UI_SRCDIR}" mconfigure || die
249 SRCDIR="${UI_SRCDIR}" mmake || die
250 fi
251 }
252
253 src_install_systemd()
254 {
255 mmake DESTDIR=${BINDIR} install || die
256 if [[ ${ENABLE_GTK} = 1 ]]
257 then
258 SRCDIR="${UI_SRCDIR}" mmake DESTDIR=${BINDIR} install || die
259 fi
260
261 # keep some directories
262 mkeepdir /run || die
263 mkeepdir /etc/modules-load.d || die
264 mkeepdir /etc/sysctl.d || die
265 mkeepdir /etc/tmpfiles.d || die
266 mkeepdir /etc/binfmt.d || die
267
268 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
269 then
270 echo "Include SysV init Compat symlinks"
271 # create SysV compatibility symlinks. systemctl/systemd are smart
272 # enough to detect in which way they are called.
273 minstalldir /usr/sbin || die
274 mlink ../lib/systemd/systemd /usr/sbin/init || die
275 local i
276 for i in reboot halt poweroff shutdown telinit runlevel
277 do
278 mlink ../bin/systemctl /usr/sbin/${i} || die
279 done
280 else
281 echo "Using sysvinit package for SysV compat"
282 fi
283
284 # do not package the kernel.core_pattern setting until systemd-coredump
285 # is a part of an actual systemd release and it's made clear how to get
286 # the core dumps out of the journal
287 rm ${BINDIR}/usr/lib/sysctl.d/coredump.conf || die
288 rm -r ${BINDIR}/usr/lib/sysctl.d || die
289
290 # we create all wants links manually at installation time to make sure
291 # they are not owned and hence overriden by mage after the user deleted
292 # them.
293 rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
294 # but make sure these directories are properly owned
295 mkeepdir /usr/lib/systemd/system/basic.target.wants || die
296 mkeepdir /usr/lib/systemd/system/default.target.wants || die
297 mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
298 mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
299 # make sure the user generators dir exists too
300 mkeepdir /usr/lib/systemd/user-generators || die
301
302 # login-manager pam policy - force register kdm, gdm etc with pam_systemd
303 all-abis minstallpam login-manager.pamd login-manager || die
304
305 # do not bother with non-existend services, mask them
306 mlink /dev/null /etc/systemd/system/syslog.service || die
307 mlink /dev/null /etc/systemd/system/rc-local.service || die
308 mlink /dev/null /etc/systemd/system/auditd.service || die
309
310 minstalldocs DISTRO_PORTING LICENSE README TODO || die
311
312 # remove files which are owned by other packages
313 if [[ ${ENABLE_GTK} = 1 ]]
314 then
315 mdelete /usr/bin/systemadm || die
316 mdelete /usr/bin/systemd-gnome-ask-password-agent || die
317 mdelete /usr/share/man/man1/systemadm.\* || die
318 fi
319 mdelete /usr/bin/systemd-analyze || die
320 mdelete -r /etc/udev || die
321 mdelete /usr/bin/udevadm || die
322 mdelete /usr/include/libudev.h || die
323 mdelete -r /usr/include/gudev-1.0 || die
324 mdelete /usr/lib/systemd/systemd-udevd || die
325 mdelete /usr/lib/systemd/system/systemd-udev-control.socket || die
326 mdelete /usr/lib/systemd/system/systemd-udev-kernel.socket || die
327 mdelete /usr/lib/systemd/system/systemd-udev.service || die
328 mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
329 mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
330 mdelete -r /usr/lib/udev || die
331 rm ${BINDIR}/usr/$(mlibdir)/libgudev* || die
332 rm ${BINDIR}/usr/$(mlibdir)/libudev* || die
333 mdelete -r /usr/$(mlibdir)/girepository-1.0 || die
334 mdelete /usr/$(mlibdir)/pkgconfig/gudev-1.0.pc || die
335 mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
336 if [[ $(mlibdir) != lib ]]
337 then
338 rm ${BINDIR}/usr/lib/libgudev* || die
339 rm ${BINDIR}/usr/lib/libudev* || die
340 mdelete -r /usr/lib/girepository-1.0 || die
341 mdelete /usr/lib/pkgconfig/gudev-1.0.pc || die
342 mdelete /usr/lib/pkgconfig/libudev.pc || die
343 fi
344 mdelete -r /usr/share/gir-1.0 || die
345 mdelete /usr/share/man/man7/udev.7 || die
346 mdelete /usr/share/man/man8/systemd-udevd.8 || die
347 mdelete /usr/share/man/man8/udevadm.8 || die
348 mdelete /usr/share/pkgconfig/udev.pc || die
349
350 # install udev rule for systemd
351 minstalludevrule rules/99-systemd.rules || die
352 }
353
354 src_install_systemd-tools()
355 {
356 cd ${SRCDIR}
357 if [[ ${ENABLE_GTK} = 1 ]]
358 then
359 all-abis minstallexec systemadm || die
360 all-abis minstallexec systemd-gnome-ask-password-agent || die
361 all-abis minstallman man/systemadm.1 || die
362 fi
363 all-abis minstallexec src/analyze/systemd-analyze || die
364 }
365
366 src_install_libudev()
367 {
368 mmake DESTDIR=${BINDIR} install || die
369
370 # cleanup all files but the libudev owned ones
371 zapmost ${BINDIR} \
372 usr/$(mlibdir)/libudev.so.* \
373 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev.so.*') \
374 || die
375 }
376
377 src_install_libudev-dev()
378 {
379 mmake DESTDIR=${BINDIR} install || die
380
381 # cleanup all files but the libudev owned ones
382 zapmost ${BINDIR} \
383 usr/include/libudev.h \
384 usr/$(mlibdir)/libudev.so \
385 usr/$(mlibdir)/pkgconfig/libudev.pc \
386 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev.so') \
387 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
388 || die
389 }
390
391 src_install_libgudev()
392 {
393 mmake DESTDIR=${BINDIR} install || die
394
395 # cleanup all files but the libgudev owned ones
396 zapmost ${BINDIR} \
397 usr/include/gudev-1.0 \
398 usr/$(mlibdir)/libgudev\* \
399 usr/$(mlibdir)/girepository-1.0 \
400 usr/$(mlibdir)/pkgconfig/gudev-1.0.pc \
401 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libgudev*') \
402 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/girepository-1.0') \
403 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/gudev-1.0.pc') \
404 usr/share/gir-1.0 \
405 || die
406 }
407
408 src_install_udev()
409 {
410 mmake DESTDIR=${BINDIR} install || die
411
412 # cleanup all files but the udev owned ones
413 zapmost ${BINDIR} \
414 usr/bin/udevadm \
415 usr/lib/systemd/systemd-udevd \
416 usr/lib/udev \
417 || die
418
419 # remove udev rule for systemd
420 mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
421
422 # install our config
423 cd ${UDEV_CONFIG_SRCDIR}
424 make DESTDIR=${BINDIR} install || die
425 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
426 then
427 # install sysvinit rc. script
428 make DESTDIR=${BINDIR} install-sysvinit || die
429 fi
430 if [[ ${BUSYBOX_SUPPORT} = 1 ]]
431 then
432 # udev writerootlink rule is required by busybox
433 make DESTDIR=${BINDIR} install-writerootlink || die
434 fi
435
436 # create symlinks for these utilities to /sbin
437 minstalldir /usr/sbin || die
438 # where multipath-tools expect them to be
439 mlink ../lib/udev/scsi_id /usr/sbin/ || die
440 # udevd is now installed to /lib/systemd/systemd-udevd by upstream - we need compat symlinks
441 mlink ../lib/systemd/systemd-udevd /usr/sbin/udevd || die
442
443 # mark some dirs undeletable
444 mkeepdir /etc/udev/rules.d || die
445 mkeepdir /usr/lib/udev/state || die
446 mkeepdir /usr/lib/udev/devices || die
447 mkeepdir /usr/lib/udev/devices/net || die
448 mkeepdir /usr/lib/udev/devices/pts || die
449 mkeepdir /usr/lib/udev/devices/shm || die
450 mkeepdir /usr/lib/udev/devices/hugepages || die
451
452 # CONFIG_PROTECT_MASK for /etc/udev/rules.d
453 minstalldir /etc/env.d || die
454 echo "CONFIG_PROTECT_MASK=\"/etc/udev/rules.d\"" > ${BINDIR}/etc/env.d/02udev || die
455
456 # create some nodes that we know we need
457 mknod ${BINDIR}/usr/lib/udev/devices/null c 1 3 || die
458 chmod 666 ${BINDIR}/usr/lib/udev/devices/null || die
459 # hey, that's my birthday :)
460 touch -t 198002220222 ${BINDIR}/usr/lib/udev/devices/null || die
461
462 mknod ${BINDIR}/usr/lib/udev/devices/zero c 1 5 || die
463 chmod 666 ${BINDIR}/usr/lib/udev/devices/zero || die
464 touch -t 198002220222 ${BINDIR}/usr/lib/udev/devices/zero || die
465
466 mknod ${BINDIR}/usr/lib/udev/devices/console c 5 1 || die
467 chmod 600 ${BINDIR}/usr/lib/udev/devices/console || die
468 chown root:tty ${BINDIR}/usr/lib/udev/devices/console || die
469 touch -t 198002220222 ${BINDIR}/usr/lib/udev/devices/console || die
470
471 mknod ${BINDIR}/usr/lib/udev/devices/urandom c 1 9 || die
472 chmod 666 ${BINDIR}/usr/lib/udev/devices/urandom || die
473 touch -t 198002220222 ${BINDIR}/usr/lib/udev/devices/urandom || die
474 }
475
476 src_install_udev-dev()
477 {
478 mmake DESTDIR=${BINDIR} install || die
479
480 # cleanup all files but the udev owned ones
481 zapmost ${BINDIR} \
482 usr/lib/systemd/system/systemd-udev-control.socket \
483 usr/lib/systemd/system/systemd-udev-kernel.socket \
484 usr/lib/systemd/system/systemd-udev.service \
485 usr/lib/systemd/system/systemd-udev-settle.service \
486 usr/lib/systemd/system/systemd-udev-trigger.service \
487 usr/share/man/man7/udev.7 \
488 usr/share/man/man8/systemd-udevd.8 \
489 usr/share/man/man8/udevadm.8 \
490 usr/share/pkgconfig/udev.pc \
491 || die
492
493 minstalldocs LICENSE* NEWS README TODO || die
494 }
495
496 preinstall_udev()
497 {
498 if [[ ! -z $(magequery -n hotplug) ]]
499 then
500 echo -e ${COLRED}
501 echo -e "Error: sys-apps/hotplug is installed!!"
502 echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
503 echo -e "Please uninstall sys-apps/hotplug first!"
504 echo -e ${COLDEFAULT}
505 die "sys-apps/hotplug found!"
506 fi
507
508 if [[ -d ${MROOT}/lib/udev-state ]]
509 then
510 mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
511 rm -r ${MROOT}/lib/udev-state
512 fi
513
514 if [[ -d ${MROOT}/lib/udev/state ]]
515 then
516 mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
517 rm -r ${MROOT}/lib/udev/state
518 fi
519
520 if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
521 [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
522 then
523 mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
524 fi
525
526 # delete the old udev.hotplug symlink if it is present
527 if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
528 then
529 rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
530 fi
531
532 # delete the old wait_for_sysfs.hotplug symlink if it is present
533 if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
534 then
535 rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
536 fi
537
538 # delete the old 10-udev.hotplug symlink if it is present
539 if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
540 then
541 rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
542 fi
543
544 # delete the deprectated udev-late rc-script
545 [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
546
547 # delete obsolete hotplug.dev script
548 if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
549 then
550 rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
551 fi
552
553 # delete deprecated pnp-aliases
554 if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
555 then
556 rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
557 fi
558
559 # delete deprecated blacklist
560 if [[ -f ${MROOT}/etc/udev/blacklist ]]
561 then
562 rm -f ${MROOT}/etc/udev/blacklist
563 fi
564
565 # delete all udev.rules which are moved from /etc/udev to /lib/udev
566 local rule
567 for rule in 40-arch-s390.rules \
568 61-persistent-storage-edd.rules \
569 75-persistent-net-generator.rules \
570 64-md-raid.rules \
571 65-permissions.rules \
572 64-device-mapper.rules \
573 40-alsa.rules \
574 40-zaptel.rules \
575 60-persistent-input.rules \
576 40-arch-ia64.rules \
577 05-udev-early.rules \
578 40-arch-ppc.rules \
579 60-cdrom_id.rules \
580 40-pilot-links.rules \
581 95-udev-late.rules \
582 40-magellan.rules \
583 50-udev-default.rules \
584 80-drivers.rules \
585 30-kernel-compat.rules \
586 40-video.rules \
587 60-persistent-storage-tape.rules \
588 75-cd-aliases-generator.rules \
589 60-persistent-storage.rules
590 do
591 # delete obsolete hotplug.dev script
592 if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
593 then
594 rm -f ${MROOT}/etc/udev/rules.d/${rule}
595 fi
596 done
597 }
598
599 postinstall_udev()
600 {
601 # create some nodes that we need if they not exist
602 [[ ! -e ${MROOT}/usr/lib/udev/devices/null ]] &&
603 mknod ${MROOT}/usr/lib/udev/devices/null c 1 3
604 chmod 666 ${MROOT}/usr/lib/udev/devices/null
605 touch -t 198002220222 ${MROOT}/usr/lib/udev/devices/null
606
607 [[ ! -e ${MROOT}/usr/lib/udev/devices/zero ]] &&
608 mknod ${MROOT}/usr/lib/udev/devices/zero c 1 5
609 chmod 666 ${MROOT}/usr/lib/udev/devices/zero
610 touch -t 198002220222 ${MROOT}/usr/lib/udev/devices/zero
611
612 [[ ! -e ${MROOT}/usr/lib/udev/devices/console ]] &&
613 mknod ${MROOT}/usr/lib/udev/devices/console c 5 1
614 chmod 600 ${MROOT}/usr/lib/udev/devices/console
615 chown root:tty ${MROOT}/usr/lib/udev/devices/console
616 touch -t 198002220222 ${MROOT}/usr/lib/udev/devices/console
617
618 [[ ! -e ${MROOT}/usr/lib/udev/devices/urandom ]] &&
619 mknod ${MROOT}/usr/lib/udev/devices/urandom c 1 9
620 chmod 666 ${MROOT}/usr/lib/udev/devices/urandom
621 touch -t 198002220222 ${MROOT}/usr/lib/udev/devices/urandom
622
623 [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
624
625 # systemd
626 if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
627 then
628 # reload config
629 systemctl daemon-reload
630
631 # try to kill
632 if ! systemctl stop udev.service udev-control.socket udev-kernel.socket >/dev/null 2>&1
633 then
634 # kill daemon if we are not in a chroot
635 if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
636 then
637 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
638 then
639 udevadm control --exit 2>&1
640 fi
641 fi
642 fi
643 # start the daemon
644 if ! systemctl start udev.service >/dev/null 2>&1
645 then
646 # start daemon if we are not in a chroot
647 if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
648 then
649 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
650 then
651 /usr/lib/systemd/systemd-udevd --daemon
652 fi
653 fi
654 fi
655
656 # sysV
657 else
658 # after install/uprade, udev *must* be reloaded if already running
659 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
660 [[ -n $(pidof udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
661 then
662 echo "MROOT=/; restarting udev daemon ..."
663 # support old installations too
664 killall -15 udevd &> /dev/null
665 killall -15 systemd-udevd &> /dev/null
666 sleep 1
667 killall -9 systemd-udevd &> /dev/null
668 killall -9 udevd &> /dev/null
669 /usr/lib/systemd/systemd-udevd --daemon
670 fi
671 fi
672 }
673
674 preinstall_systemd()
675 {
676 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
677 then
678 if [[ ! -z $(magequery -n sysvinit) ]]
679 then
680 echo -e ${COLRED}
681 echo -e "Error: sys-apps/sysvinit is installed!!"
682 echo -e "sysvinit is now replaced by systemd which is the new default init system."
683 echo -e "Please uninstall sys-apps/sysvinit first!"
684 echo -e ${COLDEFAULT}
685 die "sys-apps/sysvinit found!"
686 fi
687 fi
688
689 # adding lock group
690 ${MLIBDIR}/mgroupadd -o "-g 54" lock
691
692 # fix broken systemd installations, where
693 # /usr/lib/systemd/systemd is a directory and not the daemon-exec
694 if [[ -d ${MROOT}/usr/lib/systemd/systemd ]]
695 then
696 rm -r ${MROOT}/usr/lib/systemd/systemd
697 fi
698
699 # rename configuration files that changed their names
700 if [[ -f ${MROOT}/etc/systemd/systemd-logind.conf ]]
701 then
702 mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
703 fi
704 if [[ -f ${MROOT}/etc/systemd/systemd-journald.conf ]]
705 then
706 mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
707 fi
708 }
709
710 postinstall_systemd()
711 {
712 # try to read default runlevel from the old inittab if it exists
713 local runlevel
714 runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
715 local target
716 if [[ -z ${runlevel} ]]
717 then
718 target="/usr/lib/systemd/system/graphical.target"
719 else
720 target="/usr/lib/systemd/system/runlevel${runlevel}.target"
721 fi
722 # and symlink what we found to the new-style default.target
723 ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
724
725 # convert modules.autoload
726 if [ -f ${MROOT}/etc/modules.autoload ]
727 then
728 local modules
729 # get only lines which are not commented or empty;
730 # if we get any items than the modules.autoload is in use
731 modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
732 if [[ ! -z ${modules} ]]
733 then
734 [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
735 echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
736 > ${MROOT}/etc/modules-load.d/modules.autoload.conf
737 cat ${MROOT}/etc/modules.autoload \
738 >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
739 fi
740 fi
741
742 # check mtab, and replace with a symlink if required
743 if [[ ! -L ${MROOT}/etc/mtab ]] || \
744 [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
745 then
746 ln -snf /proc/self/mounts ${MROOT}/etc/mtab
747 fi
748
749 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
750 then
751 # create machine-id
752 if [ ! -f /etc/machine-id ]
753 then
754 systemd-machine-id-setup
755 fi
756 # create a random-seed
757 /usr/lib/systemd/systemd-random-seed save
758
759 # restart systemd daemon
760 systemctl daemon-reexec
761
762 # restart systemd-logind daemon
763 systemctl try-restart systemd-logind.service
764
765 # enable the services we install by default.
766 systemctl enable \
767 getty@.service \
768 remote-fs.target \
769 systemd-readahead-replay.service \
770 systemd-readahead-collect.service
771 fi
772
773 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
774 then
775 echo
776 echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
777 echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
778 echo
779 fi
780 }