| # Copyright 2011-2019 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=6 |
| |
| if [[ ${PV} == 9999 ]]; then |
| EGIT_REPO_URI="https://github.com/systemd/systemd.git" |
| inherit git-r3 |
| else |
| SRC_URI="https://github.com/systemd/systemd-stable/archive/v${PV}.tar.gz -> systemd-stable-${PV}.tar.gz" |
| KEYWORDS="*" |
| S=${WORKDIR}/systemd-stable-${PV} |
| fi |
| |
| PYTHON_COMPAT=( python{3_4,3_5,3_6,3_7} ) |
| |
| inherit bash-completion-r1 linux-info meson multilib-minimal ninja-utils pam python-any-r1 systemd toolchain-funcs udev user |
| |
| DESCRIPTION="System and service manager for Linux" |
| HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd" |
| |
| LICENSE="GPL-2 LGPL-2.1 MIT public-domain" |
| SLOT="0/2" |
| |
| # lakitu: Added "doc" USE flag to conditionalize the installation of docs. |
| IUSE="acl apparmor audit build cryptsetup curl doc elfutils +gcrypt gnuefi http idn importd +kmod libidn2 +lz4 lzma nat pam pcre policykit qrcode +resolvconf +seccomp selinux +split-usr ssl +sysv-utils test vanilla vtconsole xkb predictable-interface-name +networkd-wait-online" |
| |
| REQUIRED_USE="importd? ( curl gcrypt lzma )" |
| RESTRICT="!test? ( test )" |
| |
| MINKV="3.11" |
| |
| COMMON_DEPEND=">=sys-apps/util-linux-2.30:0=[${MULTILIB_USEDEP}] |
| sys-libs/libcap:0=[${MULTILIB_USEDEP}] |
| !<sys-libs/glibc-2.16 |
| acl? ( sys-apps/acl:0= ) |
| apparmor? ( sys-libs/libapparmor:0= ) |
| audit? ( >=sys-process/audit-2:0= ) |
| cryptsetup? ( >=sys-fs/cryptsetup-1.6:0= ) |
| curl? ( net-misc/curl:0= ) |
| elfutils? ( >=dev-libs/elfutils-0.158:0= ) |
| gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[${MULTILIB_USEDEP}] ) |
| http? ( |
| >=net-libs/libmicrohttpd-0.9.33:0= |
| ssl? ( >=net-libs/gnutls-3.1.4:0= ) |
| ) |
| idn? ( |
| libidn2? ( net-dns/libidn2:= ) |
| !libidn2? ( net-dns/libidn:= ) |
| ) |
| importd? ( |
| app-arch/bzip2:0= |
| sys-libs/zlib:0= |
| ) |
| kmod? ( >=sys-apps/kmod-15:0= ) |
| lz4? ( >=app-arch/lz4-0_p131:0=[${MULTILIB_USEDEP}] ) |
| lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[${MULTILIB_USEDEP}] ) |
| nat? ( net-firewall/iptables:0= ) |
| pam? ( virtual/pam:=[${MULTILIB_USEDEP}] ) |
| pcre? ( dev-libs/libpcre2 ) |
| qrcode? ( media-gfx/qrencode:0= ) |
| seccomp? ( >=sys-libs/libseccomp-2.3.3:0= ) |
| selinux? ( sys-libs/libselinux:0= ) |
| xkb? ( >=x11-libs/libxkbcommon-0.4.1:0= )" |
| |
| # baselayout-2.2 has /run |
| RDEPEND="${COMMON_DEPEND} |
| >=sys-apps/baselayout-2.2 |
| selinux? ( sec-policy/selinux-base-policy[systemd] ) |
| sysv-utils? ( !sys-apps/sysvinit ) |
| !sysv-utils? ( sys-apps/sysvinit ) |
| resolvconf? ( !net-dns/openresolv ) |
| !build? ( || ( |
| sys-apps/util-linux[kill(-)] |
| sys-process/procps[kill(+)] |
| sys-apps/coreutils[kill(-)] |
| ) ) |
| !sys-auth/nss-myhostname |
| !<sys-kernel/dracut-044 |
| !sys-fs/eudev |
| !sys-fs/udev" |
| |
| # sys-apps/dbus: the daemon only (+ build-time lib dep for tests) |
| # The following PDEPENDs are present in Gentoo upstream but don't make sense for |
| # lakitu: |
| # >=sys-fs/udev-init-scripts-25 |
| # udev-init-scripts: startup scripts for OpenRC |
| PDEPEND=">=sys-apps/dbus-1.9.8[systemd] |
| >=sys-apps/hwids-20150417[udev] |
| policykit? ( sys-auth/polkit ) |
| !vanilla? ( sys-apps/gentoo-systemd-integration )" |
| |
| # Newer linux-headers needed by ia64, bug #480218 |
| # lakitu: Added conditional doc dependency |
| DEPEND="${COMMON_DEPEND} |
| app-arch/xz-utils:0 |
| dev-util/gperf |
| >=dev-util/intltool-0.50 |
| >=sys-apps/coreutils-8.16 |
| >=sys-kernel/linux-headers-${MINKV} |
| virtual/pkgconfig[${MULTILIB_USEDEP}] |
| gnuefi? ( >=sys-boot/gnu-efi-3.0.2 ) |
| test? ( sys-apps/dbus ) |
| doc? ( |
| app-text/docbook-xml-dtd:4.2 |
| app-text/docbook-xml-dtd:4.5 |
| app-text/docbook-xsl-stylesheets |
| dev-libs/libxslt:0 |
| $(python_gen_any_dep 'dev-python/lxml[${PYTHON_USEDEP}]') |
| ) |
| " |
| |
| pkg_pretend() { |
| if [[ ${MERGE_TYPE} != buildonly ]]; then |
| local CONFIG_CHECK="~AUTOFS4_FS ~BLK_DEV_BSG ~CGROUPS |
| ~CHECKPOINT_RESTORE ~DEVTMPFS ~EPOLL ~FANOTIFY ~FHANDLE |
| ~INOTIFY_USER ~IPV6 ~NET ~NET_NS ~PROC_FS ~SIGNALFD ~SYSFS |
| ~TIMERFD ~TMPFS_XATTR ~UNIX |
| ~CRYPTO_HMAC ~CRYPTO_SHA256 ~CRYPTO_USER_API_HASH |
| ~!FW_LOADER_USER_HELPER_FALLBACK ~!GRKERNSEC_PROC ~!IDE ~!SYSFS_DEPRECATED |
| ~!SYSFS_DEPRECATED_V2" |
| |
| use acl && CONFIG_CHECK+=" ~TMPFS_POSIX_ACL" |
| use seccomp && CONFIG_CHECK+=" ~SECCOMP ~SECCOMP_FILTER" |
| kernel_is -lt 3 7 && CONFIG_CHECK+=" ~HOTPLUG" |
| kernel_is -lt 4 7 && CONFIG_CHECK+=" ~DEVPTS_MULTIPLE_INSTANCES" |
| kernel_is -ge 4 10 && CONFIG_CHECK+=" ~CGROUP_BPF" |
| |
| if linux_config_exists; then |
| local uevent_helper_path=$(linux_chkconfig_string UEVENT_HELPER_PATH) |
| if [[ -n ${uevent_helper_path} ]] && [[ ${uevent_helper_path} != '""' ]]; then |
| ewarn "It's recommended to set an empty value to the following kernel config option:" |
| ewarn "CONFIG_UEVENT_HELPER_PATH=${uevent_helper_path}" |
| fi |
| if linux_chkconfig_present X86; then |
| CONFIG_CHECK+=" ~DMIID" |
| fi |
| fi |
| |
| if kernel_is -lt ${MINKV//./ }; then |
| ewarn "Kernel version at least ${MINKV} required" |
| fi |
| |
| check_extra_config |
| fi |
| } |
| |
| pkg_setup() { |
| : |
| } |
| |
| src_unpack() { |
| default |
| [[ ${PV} != 9999 ]] || git-r3_src_unpack |
| } |
| |
| src_prepare() { |
| # Do NOT add patches here |
| local PATCHES=() |
| |
| [[ -d "${WORKDIR}"/patches ]] && PATCHES+=( "${WORKDIR}"/patches ) |
| |
| # Add local patches here |
| # lakitu: To want some gentoo patches if not vanilla and to keep the |
| # code aligned with gentoo's ebuild file |
| #if ! use vanilla; then |
| # PATCHES+=( |
| # "${FILESDIR}/gentoo-Dont-enable-audit-by-default.patch" |
| # "${FILESDIR}/gentoo-systemd-user-pam.patch" |
| # "${FILESDIR}/gentoo-uucp-group-r1.patch" |
| # "${FILESDIR}/gentoo-generator-path.patch" |
| # ) |
| #fi |
| PATCHES+=( |
| # Gentoo patches |
| "${FILESDIR}/239-debug-extra.patch" |
| "${FILESDIR}/CVE-2019-6454.patch" |
| "${FILESDIR}/gentoo-uucp-group-r1.patch" |
| "${FILESDIR}/gentoo-systemd-user-pam.patch" |
| "${FILESDIR}/228-noclean-tmp.patch" |
| # Lakitu patches |
| # CL:*250967 |
| "${FILESDIR}"/232-tmpfiles-no-srv.patch |
| # CL:*256679 |
| "${FILESDIR}"/225-Force-re-creation-of-etc-localtime-symlink.patch |
| # This prevents the kernel from logging all audit messages to |
| # both dmesg and audit log. b/29581598. |
| "${FILESDIR}"/225-audit-set-pid.patch |
| # Allow networkd => hostnamed communication w/o polkit. |
| "${FILESDIR}"/225-allow-networkd-to-hostnamed.patch |
| # Work around the 64 bit restriction of hostname length from |
| # kernel. b/27702816. |
| "${FILESDIR}"/232-single-label-hostname.patch |
| # Make networkd default to not touch IP forwarding setting. |
| # b/33257712 |
| "${FILESDIR}"/225-networkd-default-ip-forwarding-to-kernel.patch |
| # Avoid render and kvm group |
| "${FILESDIR}"/239-avoid-render-and-kvm-group.patch |
| # Change paths for udev rules, init, halt, poweroff |
| # shutdown and reboot to minimize the effect of systemd upgrade |
| # TODO(vaibhavrustagi): Need to check to use default paths provided |
| # by systemd or not |
| "${FILESDIR}"/239-change-paths-for-udev-rules-init-reboot.patch |
| # Disable LMNR and MDNS since COS does not support multicast. |
| "${FILESDIR}"/239-resolved-conf-in.patch |
| # Boot into multi-user.target instead of graphical.target. |
| "${FILESDIR}"/239-default-target.patch |
| # Fix a bug where DHCP was not restarted as expected (b/149344651). |
| # Those patches are from |
| # https://github.com/systemd/systemd/pull/9832, and |
| # should be dropped after systemd upgrade to v240. |
| "${FILESDIR}"/239-networkd-fixes.patch |
| # Invalid mount units shouldn't result in leaked units. |
| # Fixes b/152632012, from https://github.com/systemd/systemd/pull/10980. |
| "${FILESDIR}"/239-mount-don-t-propagate-errors-from-mount_setup_unit-f.patch |
| "${FILESDIR}"/239-Use-chronyd-as-the-default-NTP-service.patch |
| # Cherry-pick of upstream commit: |
| # https://github.com/systemd/systemd/commit/700805f6c546f2adb79059614f3747f7b5474325 |
| "${FILESDIR}"/242-meson-drop-misplaced-Wl-undefined-argument.patch |
| # Cherry-pick of upsteam commit to fix b/171809082: |
| # https://github.com/systemd/systemd/pull/9625/commits/987c138c19a45e9afe400d50ea797e64264f5fab |
| "${FILESDIR}"/241-line-begins-match-full-string.patch |
| # Backport of the upstream fix |
| # https://github.com/systemd/systemd/commit/4df8fe8415eaf4abd5b93c3447452547c6ea9e5f |
| "${FILESDIR}"/243-seccomp-old-libsec-fix.patch |
| # Fixes b/182952897 |
| "${FILESDIR}"/246-basic-cap-list-parse-print-numerical-capabilities.patch |
| ) |
| default |
| } |
| |
| src_configure() { |
| # Prevent conflicts with i686 cross toolchain, bug 559726 |
| tc-export AR CC NM OBJCOPY RANLIB |
| |
| # lakitu: Need python setup only when doc USE flag is |
| # enabled |
| use doc && python_setup |
| |
| multilib-minimal_src_configure |
| } |
| |
| meson_use() { |
| usex "$1" true false |
| } |
| |
| meson_multilib() { |
| if multilib_is_native_abi; then |
| echo true |
| else |
| echo false |
| fi |
| } |
| |
| meson_multilib_native_use() { |
| if multilib_is_native_abi && use "$1"; then |
| echo true |
| else |
| echo false |
| fi |
| } |
| |
| multilib_src_configure() { |
| local myconf=( |
| --localstatedir="${EPREFIX}/var" |
| -Dpamlibdir="$(getpam_mod_dir)" |
| # avoid bash-completion dep |
| -Dbashcompletiondir="$(get_bashcompdir)" |
| # lakitu: Do not want the "split-usr" USE flag |
| # as it uses rootprefix as "/" and lakitu currently |
| # uses "/usr" |
| # make sure we get /bin:/sbin in PATH |
| -Dsplit-usr=true |
| -Drootprefix="$(usex split-usr "${EPREFIX:-/}" "${EPREFIX}/usr")" |
| # lakitu: Install libraries at /usr/lib instead of /lib |
| -Drootlibdir="$(usex split-usr "${EPREFIX:-/}" "${EPREFIX}/usr/$(get_libdir)")" |
| -Dsysvinit-path= |
| -Dsysvrcnd-path= |
| # Avoid infinite exec recursion, bug 642724 |
| -Dtelinit-path="${EPREFIX}/lib/sysvinit/telinit" |
| # no deps |
| # lakitu: no efi |
| # -Defi=$(meson_multilib) |
| -Dima=true |
| # Optional components/dependencies |
| -Dacl=$(meson_multilib_native_use acl) |
| -Dapparmor=$(meson_multilib_native_use apparmor) |
| -Daudit=$(meson_multilib_native_use audit) |
| -Dlibcryptsetup=$(meson_multilib_native_use cryptsetup) |
| -Dlibcurl=$(meson_multilib_native_use curl) |
| -Delfutils=$(meson_multilib_native_use elfutils) |
| -Dgcrypt=$(meson_use gcrypt) |
| -Dgnu-efi=$(meson_multilib_native_use gnuefi) |
| -Defi-libdir="${EPREFIX}/usr/$(get_libdir)" |
| -Dmicrohttpd=$(meson_multilib_native_use http) |
| $(usex http -Dgnutls=$(meson_multilib_native_use ssl) -Dgnutls=false) |
| -Dimportd=$(meson_multilib_native_use importd) |
| -Dbzip2=$(meson_multilib_native_use importd) |
| -Dzlib=$(meson_multilib_native_use importd) |
| -Dkmod=$(meson_multilib_native_use kmod) |
| -Dlz4=$(meson_use lz4) |
| -Dxz=$(meson_use lzma) |
| -Dlibiptc=$(meson_multilib_native_use nat) |
| -Dpam=$(meson_use pam) |
| -Dpcre2=$(meson_multilib_native_use pcre) |
| -Dpolkit=$(meson_multilib_native_use policykit) |
| -Dqrencode=$(meson_multilib_native_use qrcode) |
| -Dseccomp=$(meson_multilib_native_use seccomp) |
| -Dselinux=$(meson_multilib_native_use selinux) |
| #-Dtests=$(meson_multilib_native_use test) |
| -Ddbus=$(meson_multilib_native_use test) |
| -Dxkbcommon=$(meson_multilib_native_use xkb) |
| # hardcode a few paths to spare some deps |
| -Dkill-path=/bin/kill |
| # lakitu: specifying dbus policy dir path |
| -Ddbuspolicydir="${EPREFIX}/etc/dbus-1/system.d" |
| # Breaks screen, tmux, etc. |
| -Ddefault-kill-user-processes=false |
| ) |
| |
| # lakitu specific enabled features |
| myconf+=( |
| -Dbinfmt=true |
| -Dcoredump=true |
| -Dhostnamed=true |
| -Dldconfig=true |
| -Dnetworkd=true |
| -Dutmp=true |
| -Dtimedated=true |
| -Dtmpfiles=true |
| ) |
| |
| # lakitu: disable all features not used and not disabled by USE flags. |
| # multilib options |
| myconf+=( |
| -Dbacklight=false |
| -Defi=false |
| -Denvironment-d=false |
| -Dfirstboot=false |
| -Dhibernate=false |
| -Dhwdb=false |
| -Dlocaled=false |
| -Dmachined=false |
| -Dman=false |
| -Dquotacheck=false |
| -Drandomseed=false |
| -Drfkill=false |
| -Dsysusers=false |
| -Dtimesyncd=false |
| -Dvconsole=false |
| ) |
| |
| if multilib_is_native_abi && use idn; then |
| myconf+=( |
| -Dlibidn2=$(usex libidn2 true false) |
| -Dlibidn=$(usex libidn2 false true) |
| ) |
| else |
| myconf+=( |
| -Dlibidn2=false |
| -Dlibidn=false |
| ) |
| fi |
| |
| meson_src_configure "${myconf[@]}" |
| } |
| |
| multilib_src_compile() { |
| eninja |
| } |
| |
| multilib_src_test() { |
| unset DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR |
| eninja test |
| } |
| |
| multilib_src_install() { |
| DESTDIR="${D}" eninja install |
| } |
| |
| # lakitu specific src_install customizations. |
| lakitu_src_install() { |
| dosym /usr/bin/udevadm sbin/udevadm |
| dosym /usr/lib/systemd/systemd-udevd sbin/udevd |
| dosym /run/systemd/resolve/resolv.conf etc/resolv.conf |
| |
| # Disable all sysctl settings. In ChromeOS sysctl.conf is |
| # provided by chromeos-base. |
| rm "${D}"/usr/lib/sysctl.d/* |
| |
| # Install our systemd-preset file. |
| insinto /usr/lib/systemd/system-preset |
| rm -f "${D}"/usr/lib/systemd/system-preset/* |
| doins "${FILESDIR}"/00-lakitu.preset |
| |
| # lakitu: Disable getty on tty1 if VT console is not enabled. |
| if ! use vtconsole; then |
| rm -f "${D}"/etc/systemd/system/getty.target.wants/getty@tty1.service |
| fi |
| |
| # lakitu: Disable systemd-networkd-wait-line if networkd-wait-online is not enabled. |
| # TODO: Remove this patch when we upgraded systemd to version greater |
| # than 241. |
| if ! use networkd-wait-online; then |
| rm -f "${D}"/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service |
| fi |
| |
| # Install network files. |
| insinto /usr/lib/systemd/network |
| doins "${FILESDIR}"/*.network |
| |
| if ! use predictable-interface-name; then |
| # Turn off Predictable Network Interface Names to minimize the |
| # upgrade side-effects. |
| # https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ |
| dosym /dev/null /etc/systemd/network/99-default.link |
| fi |
| |
| # Enable accounting for all supported controllers (CPU, Memory and Block) |
| sed -i 's/#DefaultCPUAccounting=no/DefaultCPUAccounting=yes/' "${ED}"/etc/systemd/system.conf |
| sed -i 's/#DefaultBlockIOAccounting=no/DefaultBlockIOAccounting=yes/' "${ED}"/etc/systemd/system.conf |
| sed -i 's/#DefaultMemoryAccounting=no/DefaultMemoryAccounting=yes/' "${ED}"/etc/systemd/system.conf |
| |
| # Set default log rotation policy: 100M for each journal; 1G total. |
| sed -i 's/#SystemMaxUse=/SystemMaxUse=1G/' "${ED}"/etc/systemd/journald.conf |
| sed -i 's/#SystemMaxFileSize=/SystemMaxFileSize=100M/' "${ED}"/etc/systemd/journald.conf |
| |
| # Enable persistent storage for the journal |
| sed -i 's/#Storage=auto/Storage=persistent/' "${ED}"/etc/systemd/journald.conf |
| } |
| |
| multilib_src_install_all() { |
| local rootprefix=$(usex split-usr '' /usr) |
| # meson doesn't know about docdir |
| mv "${ED%/}"/usr/share/doc/{systemd,${PF}} || die |
| |
| use doc && einstalldocs |
| |
| # lakitu: Do not use nsswitch.conf |
| # dodoc "${FILESDIR}"/nsswitch.conf |
| |
| if ! use resolvconf; then |
| rm -f "${ED%/}${rootprefix}"/sbin/resolvconf || die |
| fi |
| |
| if ! use sysv-utils; then |
| rm "${ED%/}${rootprefix}"/sbin/{halt,init,poweroff,reboot,runlevel,shutdown,telinit} || die |
| rm "${ED%/}"/usr/share/man/man1/init.1 || die |
| rm "${ED%/}"/usr/share/man/man8/{halt,poweroff,reboot,runlevel,shutdown,telinit}.8 || die |
| fi |
| |
| if ! use resolvconf && ! use sysv-utils; then |
| rmdir "${ED%/}${rootprefix}"/sbin || die |
| fi |
| |
| # Preserve empty dirs in /etc & /var, bug #437008 |
| keepdir /etc/{binfmt.d,modules-load.d,tmpfiles.d} |
| keepdir /etc/systemd/{ntp-units.d,user} /var/lib/systemd |
| # lakitu: Remove hwdb.d as it is not present at /etc/udev |
| keepdir /etc/udev/rules.d |
| keepdir /var/log/journal/remote |
| |
| # lakitu: Comment out this symlink since Lakitu board depends |
| # on /etc/sysctl.d/00-sysctl.conf, and this is a broken link. |
| # After our recent reflactoring, we can use 99-sysctl.conf in |
| # the board only so that the board derivied from project-lakitu |
| # can override the settings using board specific ones. |
| # Symlink /etc/sysctl.conf for easy migration. |
| # dosym ../sysctl.conf /etc/sysctl.d/99-sysctl.conf |
| |
| # lakitu: Following lines from Gentoo Upstream, but lakitu wants |
| # networkd and resolved to start on boot |
| # If we install these symlinks, there is no way for the sysadmin to remove them |
| # permanently. |
| #rm -f "${ED%/}"/etc/systemd/system/multi-user.target.wants/systemd-networkd.service || die |
| #rm -f "${ED%/}"/etc/systemd/system/dbus-org.freedesktop.network1.service || die |
| #rm -f "${ED%/}"/etc/systemd/system/multi-user.target.wants/systemd-resolved.service || die |
| #rm -f "${ED%/}"/etc/systemd/system/dbus-org.freedesktop.resolve1.service || die |
| #rm -fr "${ED%/}"/etc/systemd/system/network-online.target.wants || die |
| #rm -fr "${ED%/}"/etc/systemd/system/sockets.target.wants || die |
| #rm -fr "${ED%/}"/etc/systemd/system/sysinit.target.wants || die |
| |
| # lakitu specific |
| lakitu_src_install |
| |
| # lakitu: Don't remove as these are present in systemd-232 |
| #local udevdir=/lib/udev |
| #rm -r "${ED%/}${udevdir}/hwdb.d" || die |
| |
| if use split-usr; then |
| # Avoid breaking boot/reboot |
| dosym ../../../lib/systemd/systemd /usr/lib/systemd/systemd |
| dosym ../../../lib/systemd/systemd-shutdown /usr/lib/systemd/systemd-shutdown |
| fi |
| } |
| |
| migrate_locale() { |
| local envd_locale_def="${EROOT%/}/etc/env.d/02locale" |
| local envd_locale=( "${EROOT%/}"/etc/env.d/??locale ) |
| local locale_conf="${EROOT%/}/etc/locale.conf" |
| |
| if [[ ! -L ${locale_conf} && ! -e ${locale_conf} ]]; then |
| # If locale.conf does not exist... |
| if [[ -e ${envd_locale} ]]; then |
| # ...either copy env.d/??locale if there's one |
| ebegin "Moving ${envd_locale} to ${locale_conf}" |
| mv "${envd_locale}" "${locale_conf}" |
| eend ${?} || FAIL=1 |
| else |
| # ...or create a dummy default |
| ebegin "Creating ${locale_conf}" |
| cat > "${locale_conf}" <<-EOF |
| # This file has been created by the sys-apps/systemd ebuild. |
| # See locale.conf(5) and localectl(1). |
| |
| # LANG=${LANG} |
| EOF |
| eend ${?} || FAIL=1 |
| fi |
| fi |
| |
| if [[ ! -L ${envd_locale} ]]; then |
| # now, if env.d/??locale is not a symlink (to locale.conf)... |
| if [[ -e ${envd_locale} ]]; then |
| # ...warn the user that he has duplicate locale settings |
| ewarn |
| ewarn "To ensure consistent behavior, you should replace ${envd_locale}" |
| ewarn "with a symlink to ${locale_conf}. Please migrate your settings" |
| ewarn "and create the symlink with the following command:" |
| ewarn "ln -s -n -f ../locale.conf ${envd_locale}" |
| ewarn |
| else |
| # ...or just create the symlink if there's nothing here |
| ebegin "Creating ${envd_locale_def} -> ../locale.conf symlink" |
| ln -n -s ../locale.conf "${envd_locale_def}" |
| eend ${?} || FAIL=1 |
| fi |
| fi |
| } |
| |
| pkg_postinst() { |
| newusergroup() { |
| enewgroup "$1" |
| enewuser "$1" -1 -1 -1 "$1" |
| } |
| |
| enewgroup input |
| enewgroup systemd-journal |
| newusergroup systemd-network |
| newusergroup systemd-resolve |
| newusergroup systemd-timesync |
| |
| # lakitu: disable groups not used |
| # enewgroup kvm 78 |
| # enewgroup render |
| # newusergroup systemd-bus-proxy |
| # newusergroup systemd-coredump |
| # newusergroup systemd-journal-gateway |
| # newusergroup systemd-journal-remote |
| # newusergroup systemd-journal-upload |
| |
| systemd_update_catalog |
| |
| # Keep this here in case the database format changes so it gets updated |
| # when required. Despite that this file is owned by sys-apps/hwids. |
| if has_version "sys-apps/hwids[udev]"; then |
| udevadm hwdb --update --root="${EROOT%/}" |
| fi |
| |
| udev_reload || FAIL=1 |
| |
| # Bug 465468, make sure locales are respect, and ensure consistency |
| # between OpenRC & systemd |
| migrate_locale |
| |
| # lakitu: No need to reenable as the symlinks were not disabled above |
| # systemd_reenable systemd-networkd.service systemd-resolved.service |
| |
| if [[ ${FAIL} ]]; then |
| eerror "One of the postinst commands failed. Please check the postinst output" |
| eerror "for errors. You may need to clean up your system and/or try installing" |
| eerror "systemd again." |
| eerror |
| fi |
| } |
| |
| pkg_prerm() { |
| # If removing systemd completely, remove the catalog database. |
| if [[ ! ${REPLACED_BY_VERSION} ]]; then |
| rm -f -v "${EROOT}"/var/lib/systemd/catalog/database |
| fi |
| } |