Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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