Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5483 - (show annotations) (download)
Wed Mar 26 12:19:05 2014 UTC (10 years, 6 months ago) by niro
File size: 32036 byte(s)
auto added: ver bump to 211-r1
1 # $Id$
2
3 PNAME="systemd"
4 PVER="211"
5 PBUILD="r1"
6
7 # 1=enable dev split packages
8 # 0=disable dev split packages
9 ENABLE_DEV_PACKAGES="0"
10
11 SPLIT_PACKAGES="libudev libgudev udev nss-myhostname libsystemd libsystemd-daemon libsystemd-id128 libsystemd-journal libsystemd-login systemd systemd-tools systemd-python"
12
13 # dev packages
14 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
15 then
16 SPLIT_PACKAGES+=" libudev-dev libgudev-dev udev-dev nss-myhostname-dev systemd-dev"
17 fi
18
19 PCAT="sys-apps"
20 HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd"
21
22 # enable or disable sysvinit support
23 # 1=yes, 0=no
24 SYSVINIT_SUPPORT=0
25
26 # enable or disable busybox support
27 # 1=yes, 0=no
28 BUSYBOX_SUPPORT=0
29
30 # disable gtk until build with libgee is fixed
31 # 1=yes, 0=no
32 ENABLE_GTK=1
33
34 # export this variables for preinstall
35 SPECIAL_VARS="SYSVINIT_SUPPORT BUSYBOX_SUPPORT"
36
37 GLIB2_DEPEND=">= dev-libs/glib2-2.38"
38 GLIBC_DEPEND=">= virtual/glibc"
39 XZ_DEPEND=">= virtual/xz-utils"
40 LIBGCRYPT_DEPEND=">= app-crypt/libgcrypt-1.6"
41 LIBGPGERROR_DEPEND=">= app-crypt/libgpg-error-1.12"
42 LIBNOTIFY_DEPEND=">= x11-libs/libnotify-0.7"
43 LIBGEE_DEPEND=">= dev-libs/libgee-0.12"
44 COMMON_DEPEND="${GLIBC_DEPEND}
45 ${GLIB2_DEPEND}
46 >= virtual/procps
47 >= sys-apps/util-linux-2.24
48 >= sys-apps/kmod-15"
49
50 LIBUDEV_DEPEND="${GLIBC_DEPEND}"
51 LIBGUDEV_DEPEND="${GLIBC_DEPEND}
52 ${GLIB2_DEPEND}"
53
54 NSS_DEPEND="${GLIBC_DEPEND}"
55
56 LIBSYSTEMD_DEPEND="${GLIBC_DEPEND}
57 ${LIBGCRYPT_DEPEND}
58 ${LIBGPGERROR_DEPEND}
59 ${XZ_DEPEND}"
60 LIBSYSTEMDDAEMON_DEPEND="${GLIBC_DEPEND}"
61 LIBSYSTEMID128_DEPEND="${GLIBC_DEPEND}"
62 LIBSYSTEMDJOURNAL_DEPEND="${GLIBC_DEPEND}
63 ${XZ_DEPEND}
64 ${LIBGCRYPT_DEPEND}
65 ${LIBGPGERROR_DEPEND}"
66 LIBSYSTEMDLOGIN_DEPEND="${GLIBC_DEPEND}"
67
68 # only /etc/os-release is supported from now on
69 SYSTEMD_DEPEND="${COMMON_DEPEND}
70 ${XZ_DEPEND}
71 ${LIBGCRYPT_DEPEND}
72 ${LIBGPGERROR_DEPEND}
73 >= sys-apps/mage-release-1
74 >= sys-apps/dbus-1.8
75 >= dev-libs/dbus-glib-0.102
76 ${LIBGEE_DEPEND}
77 >= sys-libs/libcap-2.24
78 >= virtual/shadow"
79
80 TOOLS_DEPEND=">= dev-python/dbus-python-1.2
81 >= sys-apps/polkit-0.112"
82
83 UDEV_DEPEND="${COMMON_DEPEND}
84 >= dev-libs/libusb-compat-0.1.4
85 >= virtual/usbutils
86 >= virtual/pciutils
87 >= sys-libs/libuuid-2.24"
88
89 PYTHON_DEPEND=">= dev-lang/python-2.7
90 >= dev-python/lxml-3.3"
91
92 if [[ ${ENABLE_GTK} = 1 ]]
93 then
94 TOOLS_DEPEND="${TOOLS_DEPEND}
95 >= x11-libs/gtk3+-3.10
96 ${LIBGEE_DEPEND}
97 ${LIBNOTIFY_DEPEND}"
98 fi
99
100 # busybox supports requires sysvinit support
101 if [[ ${BUSYBOX_SUPPORT} = 1 ]]
102 then
103 [[ ${SYSVINIT_SUPPORT} != 1 ]] && SYSVINIT_SUPPORT=1
104 fi
105
106 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
107 then
108 SYSTEMD_DEPEND="${SYSTEMD_DEPEND}
109 >= sys-apps/sysvinit-2.88"
110 fi
111
112 SDEPEND="${LIBUDEV_DEPEND}
113 ${LIBGUDEV_DEPEND}
114 ${NSS_DEPEND}
115 ${LIBSYSTEMD_DEPEND}
116 ${LIBSYSTEMDDAEMON_DEPEND}
117 ${LIBSYSTEMID128_DEPEND}
118 ${LIBSYSTEMDJOURNAL_DEPEND}
119 ${LIBSYSTEMDLOGIN_DEPEND}
120 ${SYSTEMD_DEPEND}
121 ${TOOLS_DEPEND}
122 ${UDEV_DEPEND}
123 ${PYTHON_DEPEND}
124 ${LIBGEE_DEPEND}
125 >= app-text/docbook-xsl-stylesheets-1.76
126 >= dev-libs/libcgroup-0.38
127 >= dev-libs/libxslt-1.1.26
128 >= dev-lang/vala-0.22
129 >= dev-util/intltool-0.50
130 >= dev-util/gperf-3
131 >= virtual/kernel-headers"
132
133 SRCFILE="${PNAME}-${PVER}.tar.xz"
134 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
135
136 UDEV_CONFIG_PVER="185-r4"
137 UDEV_CONFIG_SRCFILE="config-udev-${UDEV_CONFIG_PVER}.tar.bz2"
138 UDEV_CONFIG_SRCDIR="${BUILDDIR}/config-udev-${UDEV_CONFIG_PVER}"
139
140 if [[ ${ENABLE_GTK} = 1 ]]
141 then
142 UI_PVER="2"
143 UI_SRCFILE="${PNAME}-ui-${UI_PVER}.tar.xz"
144 UI_SRCDIR="${BUILDDIR}/${PNAME}-ui-${UI_PVER}"
145 fi
146
147 sminclude python mtools multilib cleanutils udev
148 msetfeature "!check"
149
150 SRC_URI=(
151 http://www.freedesktop.org/software/${PNAME}/${SRCFILE}
152 mirror://${PNAME}/${SRCFILE}
153 mirror://udev/${UDEV_CONFIG_SRCFILE}
154 mirror://${PNAME}/${PNAME}-210-magellan-configurable-getty.patch
155 mirror://${PNAME}/login-manager.pamd
156 )
157
158 if [[ ${ENABLE_GTK} = 1 ]]
159 then
160 SRC_URI+=( http://www.freedesktop.org/software/${PNAME}/${UI_SRCFILE} )
161 fi
162
163 UP2DATE="updatecmd http://www.freedesktop.org/software/systemd/ | grep ${PNAME}-[0-9] | lasttarball xz"
164
165 split_info_libudev()
166 {
167 DESCRIPTION="Dynamic library to access udev device information."
168 DEPEND="${LIBUDEV_DEPEND}"
169 PCAT="sys-fs"
170 }
171
172 split_info_libudev-dev()
173 {
174 DESCRIPTION="Development files for libudev."
175 DEPEND=">= sys-fs/libudev-${PVER}"
176 PCAT="sys-fs"
177 }
178
179 split_info_libgudev()
180 {
181 DESCRIPTION="Libraries for adding libudev support to applications that use glib2."
182 DEPEND="${LIBGUDEV_DEPEND}
183 == sys-fs/libudev-${PVER}"
184 PCAT="sys-fs"
185 }
186
187 split_info_libgudev-dev()
188 {
189 DESCRIPTION="Development files for libgudev."
190 DEPEND=">= sys-fs/libgudev-${PVER}"
191 PCAT="sys-fs"
192 }
193
194 split_info_udev()
195 {
196 DESCRIPTION="A Userspace Implementation for dynamic /dev nodes."
197 DEPEND="${UDEV_DEPEND}
198 == sys-fs/libudev-${PVER}
199 == sys-fs/libgudev-${PVER}"
200 PCAT="sys-fs"
201 }
202
203 split_info_udev-dev()
204 {
205 DESCRIPTION="Development files for udev."
206 DEPEND=">= sys-fs/udev-${PVER}"
207 PCAT="sys-fs"
208 }
209
210 split_info_nss-myhostname()
211 {
212 DESCRIPTION="glibc plugin for local system host name resolution."
213 DEPEND="${NSS_DEPEND}"
214 PCAT="net-dns"
215 }
216
217 split_info_nss-myhostname-dev()
218 {
219 DESCRIPTION="Development files for nss-myhostname."
220 DEPEND=">= net-dns/nss-myhostname-${PVER}"
221 PCAT="net-dns"
222 }
223
224 split_info_libsystemd()
225 {
226 DESCRIPTION="systemd library."
227 DEPEND="${LIBSYSTEMD_DEPEND}"
228 PCAT="sys-libs"
229 }
230
231 split_info_libsystemd-daemon()
232 {
233 DESCRIPTION="systemd utility library."
234 DEPEND="${LIBSYSTEMDDAEMON_DEPEND}
235 == sys-libs/libsystemd-${PVER}"
236 PCAT="sys-libs"
237 }
238
239 split_info_libsystemd-id128()
240 {
241 DESCRIPTION="systemd 128 bit ID utility library."
242 DEPEND="${LIBSYSTEMDID128_DEPEND}
243 == sys-libs/libsystemd-${PVER}
244 == sys-libs/libsystemd-daemon-${PVER}"
245 PCAT="sys-libs"
246 }
247
248 split_info_libsystemd-journal()
249 {
250 DESCRIPTION="systemd journal utility library."
251 DEPEND="${LIBSYSTEMDJOURNAL_DEPEND}
252 == sys-libs/libsystemd-${PVER}
253 == sys-libs/libsystemd-daemon-${PVER}"
254 PCAT="sys-libs"
255 }
256
257 split_info_libsystemd-login()
258 {
259 DESCRIPTION="systemd login utility library."
260 DEPEND="${LIBSYSTEMDLOGIN_DEPEND}
261 == sys-libs/libsystemd-${PVER}
262 == sys-libs/libsystemd-daemon-${PVER}"
263 PCAT="sys-libs"
264 }
265
266 split_info_systemd()
267 {
268 DESCRIPTION="System and Session Manager."
269 DEPEND="${SYSTEMD_DEPEND}
270 == sys-libs/libsystemd-${PVER}
271 == sys-libs/libsystemd-daemon-${PVER}
272 == sys-libs/libsystemd-id128-${PVER}
273 == sys-libs/libsystemd-journal-${PVER}
274 == sys-libs/libsystemd-login-${PVER}
275 == net-dns/nss-myhostname-${PVER}
276 == sys-fs/udev-${PVER}"
277 # systemd >=195 provides now full syslog facilities
278 PROVIDE="virtual/syslog"
279 }
280
281 split_info_systemd-dev()
282 {
283 DESCRIPTION="Development files for systemd."
284 DEPEND="== sys-fs/libudev-dev-${PVER}
285 == sys-fs/libgudev-dev-${PVER}
286 == net-dns/nss-myhostname-dev-${PVER}
287 == sys-fs/udev-dev-${PVER}
288 >= sys-apps/systemd-dev-${PVER}"
289 }
290
291 split_info_systemd-tools()
292 {
293 local gtkdesc
294 [[ ${ENABLE_GTK} = 1 ]] && gtkdesc="for gtk3/gnome and "
295
296 DESCRIPTION="Systemd utilites ${gtkdesc}for analysing the boot process."
297 DEPEND="== sys-apps/systemd-${PVER}
298 ${TOOLS_DEPEND}"
299 }
300
301 split_info_systemd-python()
302 {
303 DESCRIPTION="Python bindings for systemd."
304 DEPEND="== sys-apps/systemd-${PVER}
305 ${PYTHON_DEPEND}"
306 PCAT="dev-python"
307 }
308
309 src_prepare()
310 {
311 munpack ${SRCFILE} || die
312 oldmunpack ${UDEV_CONFIG_SRCFILE} || die
313 if [[ ${ENABLE_GTK} = 1 ]]
314 then
315 SRCDIR="${UI_SRCDIR}" munpack ${UI_SRCFILE} || die
316 fi
317
318 # magellan-only: use a configurable getty
319 mpatch ${PNAME}-210-magellan-configurable-getty.patch || die
320
321 # fix busybox compat
322 if need_busybox_support readlink
323 then
324 # busybox does not support readlink -m
325 all-abis "sed -i 's:readlink -m:readlink -f:g' configure.ac || die"
326 # mkdir -p gets not detected in rare cases
327 all-abis "sed -i 's:AC_PROG_MKDIR_P:MKDIR_P=\"$(type -p mkdir) -p\":g' configure.ac || die"
328 fi
329
330 # fix rootlink install location
331 sed -i "s:^\(udevdir=\).*:\1/usr/lib/udev:" ${UDEV_CONFIG_SRCDIR}/Makefile || die
332
333 # regen configure
334 mautoreconf || die
335 }
336
337 src_compile()
338 {
339 local myconf
340
341 # todo:
342 # hostname - ok
343 # move /etc/conf.d/locale -> /etc/locale.conf - done
344 # instead of 'fastboot' add 'fsck.mode=skip
345 # instead of 'forcefsck' add 'fsck.mode=force
346 # /forcequotacheck was dropped
347 # /etc/conf.d/keymaps -> /etc/vconsole.conf - done
348 # vars: KEYMAP KEYMAP_TOGGLE FONT FONT_MAP FONT_UNIMAP - done
349
350 # enable compat-libs to build a splitted libsystemd not as a single library
351 # builds libsystemd-login, libsystemd-daemon, libsystemd-id128, libsystemd-journal
352 myconf+=" --enable-compat-libs"
353
354 # disable kdbus, we stick with dbus until kdbus is ready for production use
355 myconf+=" --disable-kdbus"
356
357 # disable plymouth in configure, to drop the .wants/ symlinks
358 # which are provided now by the plymouth package itself (>=plymouth-0.8.5.1)
359 myconf+=" --disable-plymouth"
360
361 mconfigure \
362 --libexecdir=/usr/lib \
363 --localstatedir=/var \
364 --with-pamlibdir=/usr/'$(mlibdir)'/security \
365 --disable-ima \
366 --disable-audit \
367 --disable-selinux \
368 --disable-qrencode \
369 --disable-pam \
370 --disable-tcpwrap \
371 --disable-xz \
372 --disable-acl \
373 --disable-libcryptsetup \
374 --enable-gudev \
375 --disable-introspection \
376 --with-pci-ids-path=/usr/share/misc/pci.ids \
377 --with-usb-ids-path=/usr/share/misc/usb.ids \
378 --with-firmware-path=/usr/lib/firmware/updates:/usr/lib/firmware:/lib/firmware/updates:/lib/firmware \
379 --with-sysvinit-path=/etc/rc.d/init \
380 --with-sysvrcnd-path=/etc/rc.d \
381 --with-kbd-loadkeys=/usr/bin/loadkeys \
382 --with-kbd-setfont=/usr/bin/setfont \
383 --with-tty-gid=4 \
384 ${myconf} \
385 || die
386
387 mmake -j1 || die
388
389 if [[ ${ENABLE_GTK} = 1 ]]
390 then
391 SRCDIR="${UI_SRCDIR}" mconfigure || die
392 SRCDIR="${UI_SRCDIR}" mmake || die
393 fi
394 }
395
396 src_install_systemd()
397 {
398 mmake -j1 DESTDIR=${BINDIR} install || die
399
400 # keep some directories
401 mkeepdir /run || die
402 mkeepdir /etc/modules-load.d || die
403 mkeepdir /etc/sysctl.d || die
404 mkeepdir /etc/tmpfiles.d || die
405 mkeepdir /etc/binfmt.d || die
406
407 # make sure the shutdown/sleep drop-in dirs exist
408 mkeepdir /usr/lib/systemd/system-shutdown || die
409 mkeepdir /usr/lib/systemd/system-sleep || die
410
411 # make sure the NTP units dir exists
412 mkeepdir /usr/lib/systemd/ntp-units.d || die
413
414 # make sure directories in /var exist
415 mkeepdir /var/lib/systemd/coredump || die
416 mkeepdir /var/lib/systemd/catalog || die
417 mkeepdir /var/log/journal || die
418
419 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
420 then
421 echo "Include SysV init Compat symlinks"
422 # create SysV compatibility symlinks. systemctl/systemd are smart
423 # enough to detect in which way they are called.
424 minstalldir /usr/sbin || die
425 mlink ../lib/systemd/systemd /usr/sbin/init || die
426 local i
427 for i in reboot halt poweroff shutdown telinit runlevel
428 do
429 mlink ../bin/systemctl /usr/sbin/${i} || die
430 done
431 else
432 echo "Using sysvinit package for SysV compat"
433 fi
434
435 # do not package the kernel.core_pattern setting until systemd-coredump
436 # is a part of an actual systemd release and it's made clear how to get
437 # the core dumps out of the journal
438 rm ${BINDIR}/usr/lib/sysctl.d/50-coredump.conf || die
439 #rm -r ${BINDIR}/usr/lib/sysctl.d || die
440
441 # we create all wants links manually at installation time to make sure
442 # they are not owned and hence overriden by mage after the user deleted
443 # them.
444 rm -r ${BINDIR}/etc/systemd/system/*.target.wants || die
445 # but make sure these directories are properly owned
446 mkeepdir /usr/lib/systemd/system/basic.target.wants || die
447 mkeepdir /usr/lib/systemd/system/default.target.wants || die
448 mkeepdir /usr/lib/systemd/system/dbus.target.wants || die
449 mkeepdir /usr/lib/systemd/system/syslog.target.wants || die
450 # make sure the user generators dir exists too
451 mkeepdir /usr/lib/systemd/user-generators || die
452 mkeepdir /usr/lib/systemd/system-generators || die
453
454 # login-manager pam policy - force register kdm, gdm etc with pam_systemd
455 all-abis minstallpam login-manager.pamd login-manager || die
456
457 # we have no rpm, remove config macros
458 #mdelete -r /etc/rpm || die
459
460 minstalldocs DISTRO_PORTING LICENSE README TODO || die
461
462 # remove files which are owned by other packages
463 mdelete /usr/bin/systemd-analyze || die
464 mdelete /usr/bin/kernel-install || die
465 mdelete -r /etc/udev || die
466 mdelete /usr/bin/udevadm || die
467 mdelete /usr/include/libudev.h || die
468 mdelete -r /usr/include/gudev-1.0 || die
469 mdelete /usr/lib/systemd/systemd-udevd || die
470 mdelete /usr/lib/systemd/system/systemd-udevd-control.socket || die
471 mdelete /usr/lib/systemd/system/systemd-udevd-kernel.socket || die
472 mdelete /usr/lib/systemd/system/systemd-udevd.service || die
473 mdelete /usr/lib/systemd/system/systemd-udev-settle.service || die
474 mdelete /usr/lib/systemd/system/systemd-udev-trigger.service || die
475 mdelete -r /usr/lib/udev || die
476 rm ${BINDIR}/usr/$(mlibdir)/libgudev* || die
477 rm ${BINDIR}/usr/$(mlibdir)/libudev* || die
478 rm ${BINDIR}/usr/$(mlibdir)/libnss_myhostname* || die
479 rm ${BINDIR}/usr/$(mlibdir)/libsystemd.* || die
480 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-daemon* || die
481 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-id128* || die
482 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-journal* || die
483 rm ${BINDIR}/usr/$(mlibdir)/libsystemd-login* || die
484 mdelete -r /usr/$(mlibdir)/girepository-1.0 || die
485 mdelete /usr/$(mlibdir)/pkgconfig/gudev-1.0.pc || die
486 mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
487 mdelete -r $(get_python_libdir) || die
488 if [[ $(mlibdir) != lib ]]
489 then
490 rm ${BINDIR}/usr/lib/libgudev* || die
491 rm ${BINDIR}/usr/lib/libudev* || die
492 rm ${BINDIR}/usr/lib/libnss_myhostname* || die
493 rm ${BINDIR}/usr/lib/libsystemd.* || die
494 rm ${BINDIR}/usr/lib/libsystemd-daemon* || die
495 rm ${BINDIR}/usr/lib/libsystemd-id128* || die
496 rm ${BINDIR}/usr/lib/libsystemd-journal* || die
497 rm ${BINDIR}/usr/lib/libsystemd-login* || die
498 mdelete -r /usr/lib/girepository-1.0 || die
499 mdelete /usr/lib/pkgconfig/gudev-1.0.pc || die
500 mdelete /usr/lib/pkgconfig/libudev.pc || die
501 mdelete -r $(ABI=m32 get_python_libdir) || die
502 fi
503 mdelete -r /usr/share/gir-1.0 || die
504 mdelete /usr/share/man/man7/udev.7 || die
505 mdelete /usr/share/man/man8/systemd-udevd.8 || die
506 mdelete /usr/share/man/man8/udevadm.8 || die
507 mdelete /usr/share/man/man8/nss-myhostname.8 || die
508 mdelete /usr/share/pkgconfig/udev.pc || die
509
510 # install udev rule for systemd
511 minstalludevrule rules/99-systemd.rules || die
512
513 # ghost own runtime generated config files
514 minstalldir /etc/X11/xorg.conf.d || die
515 memptyfile /etc/X11/xorg.conf.d/00-keyboard.conf || die
516 memptyfile /etc/machine-id || die
517 memptyfile /etc/machine-info || die
518 # and set CONFIG_PROTECT_MASK for them
519 minstalldir /etc/env.d || die
520 MCONFIG=/etc/env.d/02systemd
521 mclearconfig || die
522 maddconfig 'CONFIG_PROTECT_IGNORE="/etc/machine-id /etc/machine-info /etc/X11/xorg.conf.d/00-keyboard.conf"' || die
523
524 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
525 then
526 mdelete -r /usr/include || die
527 mdelete -r /usr/share/bash-completion || die
528 mdelete -r /usr/share/doc || die
529 mdelete -r /usr/share/man || die
530 mdelete -r /usr/share/pkgconfig || die
531 mdelete -r /usr/share/zsh || die
532 mdelete -r /usr/$(mlibdir)/rpm || die
533 mdelete -r /usr/$(mlibdir)/pkgconfig || die
534 if [[ $(mlibdir) != lib ]]
535 then
536 mdelete -r /usr/$(mlibdir)/rpm || die
537 mdelete -r /usr/$(mlibdir)/pkgconfig || die
538 fi
539 fi
540
541 # alx only - mount /var/log with a tmpfs
542 mcinjectfile var-log.mount /usr/lib/systemd/system || die
543 mlink ../var-log.mount /usr/lib/systemd/system/local-fs.target.wants/var-log.mount || die
544 }
545
546 src_install_systemd-dev()
547 {
548 mmake -j1 DESTDIR=${BINDIR} install || die
549 minstalldocs DISTRO_PORTING LICENSE README TODO || die
550
551 # remove files which are owned by other packages
552 mdelete /usr/include/libudev.h || die
553 mdelete -r /usr/include/gudev-1.0 || die
554 mdelete /usr/$(mlibdir)/pkgconfig/gudev-1.0.pc || die
555 mdelete /usr/$(mlibdir)/pkgconfig/libudev.pc || die
556 if [[ $(mlibdir) != lib ]]
557 then
558 mdelete /usr/lib/pkgconfig/gudev-1.0.pc || die
559 mdelete /usr/lib/pkgconfig/libudev.pc || die
560 fi
561 mdelete /usr/share/man/man7/udev.7 || die
562 mdelete /usr/share/man/man8/systemd-udevd.8 || die
563 mdelete /usr/share/man/man8/udevadm.8 || die
564 mdelete /usr/share/man/man8/nss-myhostname.8 || die
565 mdelete /usr/share/pkgconfig/udev.pc || die
566
567 zapmost ${BINDIR} \
568 usr/include \
569 usr/share/bash-completion \
570 usr/share/doc \
571 usr/share/man \
572 usr/share/pkgconfig \
573 usr/share/zsh \
574 usr/$(mlibdir)/rpm \
575 usr/$(mlibdir)/pkgconfig \
576 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/rpm') \
577 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig') \
578 || die
579 }
580
581 src_install_systemd-tools()
582 {
583 cd ${SRCDIR}
584
585 if [[ ${ENABLE_GTK} = 1 ]]
586 then
587 SRCDIR="${UI_SRCDIR}" mmake DESTDIR=${BINDIR} install || die
588 fi
589
590 all-abis minstallexec systemd-analyze || die
591 all-abis minstallexec src/kernel-install/kernel-install || die
592 }
593
594 src_install_libudev()
595 {
596 mmake -j1 DESTDIR=${BINDIR} install || die
597
598 # cleanup all files but the libudev owned ones
599 zapmost ${BINDIR} \
600 usr/include/libudev.h \
601 usr/$(mlibdir)/libudev\* \
602 usr/$(mlibdir)/pkgconfig/libudev.pc \
603 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libudev*') \
604 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
605 || die
606
607 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
608 then
609 mdelete -r /usr/include || die
610 mdelete -r /usr/$(mlibdir)/pkgconfig || die
611 fi
612 }
613
614 src_install_libudev-dev()
615 {
616 mmake -j1 DESTDIR=${BINDIR} install || die
617
618 # cleanup all files but the libudev owned ones
619 zapmost ${BINDIR} \
620 usr/include/libudev.h \
621 usr/$(mlibdir)/pkgconfig/libudev.pc \
622 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/libudev.pc') \
623 || die
624 }
625
626 src_install_libgudev()
627 {
628 mmake -j1 DESTDIR=${BINDIR} install || die
629
630 # cleanup all files but the libgudev owned ones
631 zapmost ${BINDIR} \
632 usr/include/gudev-1.0 \
633 usr/$(mlibdir)/libgudev\* \
634 usr/$(mlibdir)/girepository-1.0 \
635 usr/$(mlibdir)/pkgconfig/gudev-1.0.pc \
636 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libgudev*') \
637 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/girepository-1.0') \
638 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/gudev-1.0.pc') \
639 usr/share/gir-1.0 \
640 || die
641
642 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
643 then
644 mdelete -r /usr/include || die
645 mdelete -r /usr/$(mlibdir)/pkgconfig || die
646 fi
647 }
648
649 src_install_libgudev-dev()
650 {
651 mmake -j1 DESTDIR=${BINDIR} install || die
652
653 # cleanup all files but the libgudev owned ones
654 zapmost ${BINDIR} \
655 usr/include/gudev-1.0 \
656 usr/$(mlibdir)/pkgconfig/gudev-1.0.pc \
657 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/pkgconfig/gudev-1.0.pc') \
658 || die
659 }
660
661 src_install_udev()
662 {
663 mmake -j1 DESTDIR=${BINDIR} install || die
664
665 # cleanup all files but the udev owned ones
666 zapmost ${BINDIR} \
667 etc/udev \
668 usr/bin/udevadm \
669 usr/lib/systemd/systemd-udevd \
670 usr/lib/systemd/system/systemd-udevd-control.socket \
671 usr/lib/systemd/system/systemd-udevd-kernel.socket \
672 usr/lib/systemd/system/systemd-udevd.service \
673 usr/lib/systemd/system/systemd-udev-settle.service \
674 usr/lib/systemd/system/systemd-udev-trigger.service \
675 usr/lib/udev \
676 usr/share/man/man7/udev.7 \
677 usr/share/man/man8/systemd-udevd.8 \
678 usr/share/man/man8/udevadm.8 \
679 usr/share/pkgconfig/udev.pc \
680 || die
681
682 # remove udev rule for systemd
683 mdelete /usr/lib/udev/rules.d/99-systemd.rules || die
684
685 minstalldocs LICENSE* NEWS README TODO || die
686
687 # install our config
688 cd ${UDEV_CONFIG_SRCDIR}
689 make DESTDIR=${BINDIR} install || die
690 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
691 then
692 # install sysvinit rc. script
693 make DESTDIR=${BINDIR} install-sysvinit || die
694 fi
695
696 # create symlinks for these utilities to /sbin
697 minstalldir /usr/sbin || die
698 # where multipath-tools expect them to be
699 mlink ../lib/udev/scsi_id /usr/sbin/ || die
700
701 # mark some dirs undeletable
702 mkeepdir /etc/udev/rules.d || die
703 mkeepdir /usr/lib/udev/state || die
704
705 # CONFIG_PROTECT_MASK for /etc/udev/rules.d
706 minstalldir /etc/env.d || die
707 MCONFIG="/etc/env.d/02udev"
708 mclearconfig || die
709 maddconfig 'CONFIG_PROTECT_MASK="/etc/udev/rules.d"' || die
710
711 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
712 then
713 mdelete -r /usr/share || die
714 fi
715
716 # disable predictable network names for alx
717 # see: http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames
718 mlink /dev/null /etc/udev/rules.d/80-net-name-slot.rules || die
719 }
720
721 src_install_udev-dev()
722 {
723 mmake -j1 DESTDIR=${BINDIR} install || die
724
725 # cleanup all files but the udev owned ones
726 zapmost ${BINDIR} \
727 usr/share/man/man7/udev.7 \
728 usr/share/man/man8/systemd-udevd.8 \
729 usr/share/man/man8/udevadm.8 \
730 usr/share/pkgconfig/udev.pc \
731 || die
732
733 minstalldocs LICENSE* NEWS README TODO || die
734 }
735
736 src_install_nss-myhostname()
737 {
738 mmake -j1 DESTDIR=${BINDIR} install || die
739
740 # cleanup all files but the nss-myhostname owned ones
741 zapmost ${BINDIR} \
742 usr/$(mlibdir)/libnss_myhostname\* \
743 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libnss_myhostname*') \
744 usr/share/man/man8/nss-myhostname.8 \
745 || die
746
747 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
748 then
749 mdelete -r /usr/share || die
750 fi
751 }
752
753 src_install_nss-myhostname-dev()
754 {
755 mmake -j1 DESTDIR=${BINDIR} install || die
756
757 # cleanup all files but the nss-myhostname owned ones
758 zapmost ${BINDIR} \
759 usr/share/man/man8/nss-myhostname.8 \
760 || die
761 }
762
763 src_install_libsystemd()
764 {
765 mmake -j1 DESTDIR=${BINDIR} install || die
766
767 # cleanup all files but the libsystem owned ones
768 zapmost ${BINDIR} \
769 usr/$(mlibdir)/libsystemd.\* \
770 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd.*') \
771 || die
772 }
773
774 src_install_libsystemd-daemon()
775 {
776 mmake -j1 DESTDIR=${BINDIR} install || die
777
778 # cleanup all files but the libsystem-daemon owned ones
779 zapmost ${BINDIR} \
780 usr/$(mlibdir)/libsystemd-daemon\* \
781 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-daemon*') \
782 || die
783 }
784
785 src_install_libsystemd-id128()
786 {
787 mmake -j1 DESTDIR=${BINDIR} install || die
788
789 # cleanup all files but the libsystem-id128 owned ones
790 zapmost ${BINDIR} \
791 usr/$(mlibdir)/libsystemd-id128\* \
792 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-id128*') \
793 || die
794 }
795
796 src_install_libsystemd-journal()
797 {
798 mmake -j1 DESTDIR=${BINDIR} install || die
799
800 # cleanup all files but the libsystem-journal owned ones
801 zapmost ${BINDIR} \
802 usr/$(mlibdir)/libsystemd-journal\* \
803 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-journal*') \
804 || die
805 }
806
807 src_install_libsystemd-login()
808 {
809 mmake -j1 DESTDIR=${BINDIR} install || die
810
811 # cleanup all files but the libsystem-login owned ones
812 zapmost ${BINDIR} \
813 usr/$(mlibdir)/libsystemd-login\* \
814 $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libsystemd-login*') \
815 || die
816 }
817
818 src_install_systemd-python()
819 {
820 mmake -j1 DESTDIR=${BINDIR} install || die
821
822 # cleanup all files but the systemd-python owned ones
823 zapmost ${BINDIR} \
824 $(get_python_libdir | sed 's:/::') \
825 $([[ $(mlibdir) != lib ]] && $(ABI=m32 get_python_libdir | sed 's:/::')) \
826 || die
827 }
828
829 preinstall_udev()
830 {
831 if [[ ! -z $(magequery -n hotplug) ]]
832 then
833 echo -e ${COLRED}
834 echo -e "Error: sys-apps/hotplug is installed!!"
835 echo -e "hotplug is now fully provided by udev itself and it is not recommend to use this anymore."
836 echo -e "Please uninstall sys-apps/hotplug first!"
837 echo -e ${COLDEFAULT}
838 die "sys-apps/hotplug found!"
839 fi
840
841 # move udev state
842 if [ ! -L ${MROOT}/lib ]
843 then
844 if [[ -d ${MROOT}/lib/udev-state ]]
845 then
846 mv -f ${MROOT}/lib/udev-state/* ${MROOT}/usr/lib/udev/state/
847 rm -r ${MROOT}/lib/udev-state
848 fi
849 if [[ -d ${MROOT}/lib/udev/state ]]
850 then
851 mv -f ${MROOT}/lib/udev/state/* ${MROOT}/usr/lib/udev/state/
852 rm -r ${MROOT}/lib/udev/state
853 fi
854 fi
855
856 # remove deprecated udev devices dir
857 if [[ -d ${MROOT}/lib/udev/devices ]]
858 then
859 rm -r ${MROOT}/lib/udev/devices
860 fi
861 if [[ -d ${MROOT}/usr/lib/udev/devices ]]
862 then
863 rm -r ${MROOT}/usr/lib/udev/devices
864 fi
865
866 if [[ -f ${MROOT}/etc/udev/udev.config ]] &&
867 [[ ! -f ${MROOT}/etc/udev/udev.rules ]]
868 then
869 mv -f ${MROOT}/etc/udev/udev.config ${MROOT}/etc/udev/udev.rules
870 fi
871
872 # delete the old udev.hotplug symlink if it is present
873 if [[ -h ${MROOT}/etc/hotplug.d/default/udev.hotplug ]]
874 then
875 rm -f ${MROOT}/etc/hotplug.d/default/udev.hotplug
876 fi
877
878 # delete the old wait_for_sysfs.hotplug symlink if it is present
879 if [[ -h ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug ]]
880 then
881 rm -f ${MROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
882 fi
883
884 # delete the old 10-udev.hotplug symlink if it is present
885 if [[ -h ${MROOT}/etc/hotplug.d/default/10-udev.hotplug ]]
886 then
887 rm -f ${MROOT}/etc/hotplug.d/default/10-udev.hotplug
888 fi
889
890 # delete the deprectated udev-late rc-script
891 [[ -x ${MROOT}/sbin/rc-config ]] && ${MROOT}/sbin/rc-config del udev-late
892
893 # delete obsolete hotplug.dev script
894 if [[ -f ${MROOT}/etc/dev.d/net/hotplug.dev ]]
895 then
896 rm -f ${MROOT}/etc/dev.d/net/hotplug.dev
897 fi
898
899 # delete deprecated pnp-aliases
900 if [[ -f ${MROOT}/etc/modprobe.d/pnp-aliases ]]
901 then
902 rm -f ${MROOT}/etc/modprobe.d/pnp-aliases
903 fi
904
905 # delete deprecated blacklist
906 if [[ -f ${MROOT}/etc/udev/blacklist ]]
907 then
908 rm -f ${MROOT}/etc/udev/blacklist
909 fi
910
911 # delete all udev.rules which are moved from /etc/udev to /lib/udev
912 local rule
913 for rule in 40-arch-s390.rules \
914 61-persistent-storage-edd.rules \
915 75-persistent-net-generator.rules \
916 64-md-raid.rules \
917 65-permissions.rules \
918 64-device-mapper.rules \
919 40-alsa.rules \
920 40-zaptel.rules \
921 60-persistent-input.rules \
922 40-arch-ia64.rules \
923 05-udev-early.rules \
924 40-arch-ppc.rules \
925 60-cdrom_id.rules \
926 40-pilot-links.rules \
927 95-udev-late.rules \
928 40-magellan.rules \
929 50-udev-default.rules \
930 80-drivers.rules \
931 30-kernel-compat.rules \
932 40-video.rules \
933 60-persistent-storage-tape.rules \
934 75-cd-aliases-generator.rules \
935 60-persistent-storage.rules
936 do
937 # delete obsolete hotplug.dev script
938 if [[ -f ${MROOT}/etc/udev/rules.d/${rule} ]]
939 then
940 rm -f ${MROOT}/etc/udev/rules.d/${rule}
941 fi
942 done
943
944 echo "Network device naming is now controlled by udev's net_setup_link"
945 echo "builtin. Refer to the NETWORK LINK CONFIGURATION section of the"
946 echo "udev manpage for a full description."
947 if [ -e ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules ]
948 then
949 echo
950 echo "Renaming old 80-net-name-slot.rules to 80-net-setup-link.rules in order"
951 echo "to preserve existing network naming behavior."
952 mv -v ${MROOT}/etc/udev/rules.d/80-net-name-slot.rules \
953 ${MROOT}/etc/udev/rules.d/80-net-setup-link.rules
954 fi
955 }
956
957 postinstall_udev()
958 {
959 [[ ! -d ${MROOT}/run ]] && install -d ${MROOT}/run
960
961 # systemd
962 if [[ -x /usr/bin/systemctl ]] && [[ -z ${MROOT} ]] && [[ ${MROOT} != / ]]
963 then
964 # reload config
965 systemctl daemon-reload
966
967 # try to kill
968 if ! systemctl stop systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket >/dev/null 2>&1
969 then
970 # kill daemon if we are not in a chroot
971 if [[ /proc/1/exe ]] && [[ -d /proc/1/root ]]
972 then
973 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
974 then
975 udevadm control --exit 2>&1
976 fi
977 fi
978 fi
979 # start the daemon
980 if ! systemctl start systemd-udevd.service >/dev/null 2>&1
981 then
982 # start daemon if we are not in a chroot
983 if [[ -f /proc/1/exe ]] && [[ -d /proc/1/root ]]
984 then
985 if [[ $(stat -Lc '%%D-%%i' /) = $(stat -Lc '%%D-%%i' /proc/1/root) ]]
986 then
987 /usr/lib/systemd/systemd-udevd --daemon
988 fi
989 fi
990 fi
991
992 # sysV
993 else
994 # after install/uprade, udev *must* be reloaded if already running
995 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] &&
996 [[ -n $(pidof systemd-udevd) ]] && [[ ${MAGE_BOOTSTRAP} != true ]]
997 then
998 echo "MROOT=/; restarting udev daemon ..."
999 # support old installations too
1000 killall -15 udevd &> /dev/null
1001 killall -15 systemd-udevd &> /dev/null
1002 sleep 1
1003 killall -9 systemd-udevd &> /dev/null
1004 killall -9 udevd &> /dev/null
1005 /usr/lib/systemd/systemd-udevd --daemon
1006 fi
1007 fi
1008
1009 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
1010 then
1011 # update hwdb
1012 udevadm hwdb --update > /dev/null 2>&1
1013 fi
1014 }
1015
1016 postinstall_nss-myhostname()
1017 {
1018 # add myhostname to the hosts line of /etc/nsswitch.conf
1019 if [ -f ${MROOT}/etc/nsswitch.conf ]
1020 then
1021 sed -i -e '
1022 /^hosts:/ !b
1023 /\<myhostname\>/ b
1024 s/[[:blank:]]*$/ myhostname/
1025 ' ${MROOT}/etc/nsswitch.conf
1026 fi
1027 }
1028
1029 postremove_nss-myhostname()
1030 {
1031 # remove myhostname from the hosts line of /etc/nsswitch.conf
1032 if [ ! -e ${MROOT}/usr/$(mlibdir)/libnss_myhostname.so.* ]
1033 then
1034 if [ -f ${MROOT}/etc/nsswitch.conf ]
1035 then
1036 sed -i -e '
1037 /^hosts:/ !b
1038 s/[[:blank:]]\+myhostname\>//
1039 ' ${MROOT}/etc/nsswitch.conf
1040 fi
1041 fi
1042 }
1043
1044 preinstall_systemd()
1045 {
1046 if [[ ${SYSVINIT_SUPPORT} != 1 ]]
1047 then
1048 if [[ ! -z $(magequery -n sysvinit) ]]
1049 then
1050 echo -e ${COLRED}
1051 echo -e "Error: sys-apps/sysvinit is installed!!"
1052 echo -e "sysvinit is now replaced by systemd which is the new default init system."
1053 echo -e "Please uninstall sys-apps/sysvinit first!"
1054 echo -e ${COLDEFAULT}
1055 die "sys-apps/sysvinit found!"
1056 fi
1057 fi
1058
1059 # adding lock group
1060 ${MLIBDIR}/mgroupadd -o "-g 54" lock
1061 # adding journal group
1062 ${MLIBDIR}/mgroupadd -o "-g 190" systemd-journal
1063 ${MLIBDIR}/mgroupadd -o "-g 191" systemd-journal-gateway
1064 ${MLIBDIR}/museradd -o "-u 191 -g systemd-journal-gateway -d /var/log/journal -s /bin/false" systemd-journal-gateway
1065
1066 # fix broken systemd installations, where
1067 # /usr/lib/systemd/systemd is a directory and not the daemon-exec
1068 if [[ -d ${MROOT}/usr/lib/systemd/systemd ]]
1069 then
1070 rm -r ${MROOT}/usr/lib/systemd/systemd
1071 fi
1072
1073 # rename configuration files that changed their names
1074 if [[ -f ${MROOT}/etc/systemd/systemd-logind.conf ]]
1075 then
1076 mv -n ${MROOT}/etc/systemd/{systemd-,}logind.conf
1077 fi
1078 if [[ -f ${MROOT}/etc/systemd/systemd-journald.conf ]]
1079 then
1080 mv -n ${MROOT}/etc/systemd/{systemd-,}journald.conf
1081 fi
1082 }
1083
1084 postinstall_systemd()
1085 {
1086 # try to read default runlevel from the old inittab if it exists
1087 local runlevel
1088 runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' ${MROOT}/etc/inittab 2> /dev/null)
1089 local target
1090 if [[ -z ${runlevel} ]]
1091 then
1092 target="/usr/lib/systemd/system/graphical.target"
1093 else
1094 target="/usr/lib/systemd/system/runlevel${runlevel}.target"
1095 fi
1096 # and symlink what we found to the new-style default.target
1097 ln -snf ${target} ${MROOT}/etc/systemd/system/default.target
1098
1099 # convert modules.autoload
1100 if [ -f ${MROOT}/etc/modules.autoload ]
1101 then
1102 local modules
1103 # get only lines which are not commented or empty;
1104 # if we get any items than the modules.autoload is in use
1105 modules=$(sed -e '/^#/d' -e '/^$/d' ${MROOT}/etc/modules.autoload)
1106 if [[ ! -z ${modules} ]]
1107 then
1108 [ ! -d ${MROOT}/etc/modules-load.d ] && install -d ${MROOT}/etc/modules-load.d
1109 echo -e "# Converted by systemd install from /etc/modules.autoload\n#\n#" \
1110 > ${MROOT}/etc/modules-load.d/modules.autoload.conf
1111 cat ${MROOT}/etc/modules.autoload \
1112 >> ${MROOT}/etc/modules-load.d/modules.autoload.conf
1113 fi
1114 fi
1115
1116 # check mtab, and replace with a symlink if required
1117 if [[ ! -L ${MROOT}/etc/mtab ]] || \
1118 [[ $(readlink ${MROOT}/etc/mtab) != /proc/self/mounts ]]
1119 then
1120 ln -snf /proc/self/mounts ${MROOT}/etc/mtab
1121 fi
1122
1123 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
1124 then
1125 # create machine-id
1126 if [ ! -s /etc/machine-id ]
1127 then
1128 systemd-machine-id-setup
1129 fi
1130 # create a random-seed
1131 /usr/lib/systemd/systemd-random-seed save
1132
1133 # allow detect-virt to be run by unprivileged code
1134 setcap cap_dac_override,cap_sys_ptrace+ep /usr/bin/systemd-detect-virt
1135
1136 # restart systemd daemon
1137 systemctl daemon-reexec
1138
1139 # restart systemd-logind daemon
1140 systemctl try-restart systemd-logind.service
1141
1142 # update journal catalog
1143 journalctl --update-catalog > /dev/null 2>&1
1144
1145 # set acls for wheel and adm group
1146 if [ -x /usr/bin/setfacl ]
1147 then
1148 /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
1149 fi
1150
1151 # enable the services we install by default.
1152 systemctl enable \
1153 getty@tty1.service \
1154 remote-fs.target \
1155 systemd-readahead-replay.service \
1156 systemd-readahead-collect.service \
1157 console-getty.service \
1158 console-shell.service \
1159 debug-shell.service
1160 #systemd-networkd.service
1161 fi
1162
1163 if [[ ${SYSVINIT_SUPPORT} = 1 ]]
1164 then
1165 echo
1166 echo "systemd has been installed to /usr/lib/systemd/systemd. Please ensure you append"
1167 echo "init=/usr/lib/systemd/systemd to your kernel command line in your bootloader."
1168 echo
1169 fi
1170 }