Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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