diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-03-10 19:15:28 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-03-10 19:15:28 +0000 |
commit | da6a52f691ef980bab92d003d5df8f463c623af8 (patch) | |
tree | 4d89e0d5915f8a3f57c8f9c17420ba3f7b44b7b2 /sys-apps/systemd | |
parent | 80208fb578cf92cc308906660ca6d7860c6b2a1f (diff) |
gentoo resync : 10.03.2018
Diffstat (limited to 'sys-apps/systemd')
4 files changed, 515 insertions, 0 deletions
diff --git a/sys-apps/systemd/Manifest b/sys-apps/systemd/Manifest index 5a50f578f066..3844eccab66a 100644 --- a/sys-apps/systemd/Manifest +++ b/sys-apps/systemd/Manifest @@ -1,4 +1,6 @@ AUX 237-0001-networkctl-display-type.patch 9575 BLAKE2B 17b42e55d7f9eb2452d2826bb62a8b2ee4f6655d686c21a0f6471629aef06f171427baa79a24eff910ff8c3dc0a7612fa48fc6df1f4de2c586852e1eb4498c85 SHA512 8378a1c153e92d3fad084c57badfa9bf13faab5e9e6319ab3be387b1c609cce5fcc481776365da2cfabde7c9f7c9f4fe24e280b53c76d5813eceeec800d173f0 +AUX 238-0001-sd-bus-do-not-try-to-close-already-closed-fd-8392.patch 865 BLAKE2B e1f0765b2b500f34db613b6d7720e2da02c0f3346768a4053706641c61834e04a483d7ba96dabcf9935c39db3219f4871151ccb0069390afd724be9d8694c89a SHA512 eafe369e6df89cb18122273711395a0d9a624b00c7e5aa0bd872e3241129321110f76cf10fb0e98a02268c36f0bc118870706467c5b41f32eb7e3db4075fcacc +AUX 238-0002-core-do-not-free-heap-allocated-strings-8391.patch 1664 BLAKE2B 6a3f9ec23b9c28ade566cece1e0b70a5217e3e0881ba9dab6ad3e4d74bc50a0d8b1ec5ff5550da778acb63abbc5467e5690633dd509b42430ff8b485e1645a03 SHA512 1d103a6c033063a2250bb1ef7858f358f49f6ce2d599d94491054afb7808881fd338d24cf8997eafcfb5efeeb564b34c10680bde6079941f41a3ba653d71cafd AUX CVE-2017-15908.patch 1371 BLAKE2B ccb735919864347108366e33466d2daa5599825e8efcef29ad2139c20070443a6c2c6cb008ba018ea64a37f7046e366f42d45698d6c82aee19d38ca9f2b489d9 SHA512 e3ca9cb44981a7a5d80a7ca63d6c9249e42dc5af1290ecfd472ec377db4ac372a18c3a3b6a99e1b7cfa322f7c00f0a755c916f67273b0b1e0a0e37957035aba9 AUX gentoo-Dont-enable-audit-by-default.patch 1027 BLAKE2B 9193a409db4e5c1dec6f6b66ee6e0a4cc1ada49d41ab758c788cf12534fffb67bd7370b8558a6af56572d7f2b73cf47db255fef105e56362c15f0a426f80b256 SHA512 44e512d8bbadbc5714192896a3ba262e460af034846e4e9b9832b4143fff772e2734e655316fd88d1ef386509bd234c195dce2087348f220836b3bf4f26790e0 AUX gentoo-generator-path.patch 1046 BLAKE2B 648d1fff6874135267647ff6ffb52ddd9e991af64fb2b41909246c173e55709c49edd6e47245d566457ba9f55bf6d758ed837ff740f58004f2790b5565f8e462 SHA512 e9999afbf4d2d8a9e828d81dd0b54e2c2ba556e9778a4954dac3da885a15bc6dcc718f7e119c352eb2efd090e410735395ec20ce2eb3c84a481570bc8b5f66b3 @@ -13,9 +15,11 @@ DIST systemd-236-patches-2.tar.gz 54737 BLAKE2B bce5f9e234c975a2b6e474ca2a0c2c82 DIST systemd-236.tar.gz 6759035 BLAKE2B 0fc26bd67fb6cc3b0565c763fc26e38186c4b05c3d38652b73a2189dfbfb46382dba239f7f6f889eec57ad1d8f69d4098745c8f4ca16a707aa23b7771f2328f3 SHA512 1a9672960e03e05c09e41fb8cfe9b0f25e867fd43f37f8371515ddddfdbd4270afd746a6da733f6d1d3b2cc43db1ecc7a9f2245f2dac2ec233db74e9e70e4f6d DIST systemd-237-patches-0.tar.gz 74617 BLAKE2B 52750bb08731e9e694a00fedc1e42beb7c6ad7736d3b6567f2ab094d4356506d10ec11e1c4c62623078d647c3314c71c9f141eb7c8628b610fd8a5e818b90ec6 SHA512 a6db99b330585e57c722bb0e692b0d988d5fbfef60c6cc87efbb7b903e55642c2f03bf6cdc80f15da22d0c41b5051387dac23a2f04238331f235154b17f32d1b DIST systemd-237.tar.gz 6871350 BLAKE2B 4734a110a297fbbd6679bced6302fcdca55ab5d4207905e8dee9f5545f1de841d5adeaa4fd89961b9e63709d04b5c862b8bc81481311cf8e72ee327e459c9d91 SHA512 15ef4b92815a6dd9a6c51672dbc00fd7cd0f08068ef0cbeaca574f68d330b28bc67ba1946f24f75ef3d9e7b63843a73eea700db54688061dbf5c9f8470394c3b +DIST systemd-238.tar.gz 6954022 BLAKE2B 9b5cc36a7234c0d037a2656ee1e5ed54186a394b8be41771ebc29c903d3efcecf7f13f004a6d1695c022923bd0d540a243e897852f07e810f73fd3163f688dde SHA512 c0f272b022308d3bd94679184e102a8dc85de55310bda205a458ea33c77c7733e5c8c8e5b15f786ba3e0ce59e7c6a9bf0d5a0950517c6b91e0f345950129b9c8 EBUILD systemd-233-r6.ebuild 13593 BLAKE2B 82e15d7171054d46049bc9a50a8482bc1ebbe7bb53af2ad1b6ee594582f30cb561c6d2e18226f4401c605cf9bcd53290128c7be441cfa6cd60470e313144009d SHA512 53b2e092bc48bc8d2899d9869e77049e9ce0cc6178ac63bb830544ec0a69a3ba5ba29a82a5ba76ab19dd4ce8997b9ae5ffeb3698780fe086ed5a632ff386c1d3 EBUILD systemd-236-r5.ebuild 13008 BLAKE2B e3613cb1aeac22a92ba2f8c6ae47acad59281493ffb044d9dcb2417de9db1f00f29cf197b0fca764911edfc6c39ae7a49c56593770dd4fbba23adc35130ad3ac SHA512 259156a807ca41bc2fe36a87fa1b425ea5cd1b8c9a6f648487fcdeb1d8a8b7f607723b2cbdc2a5bf9b7d59f23716ab17b2032e41b214dd2fe71628c3272c96de EBUILD systemd-237-r2.ebuild 13075 BLAKE2B ff45dd6aa7ff3c27ad18495eb44a8ff04c67d8dddc80546fafa52e3845f1f3ded10f47f9b4e6c46b46786651d3c387f0e86e87ebf09f52045d62054fd9c5f403 SHA512 8bd6fb56e66284ef26f5ad525a38ce67e74d2b48d57dd15a1c67dfd60805da57745b837342d45c96406bef4c7a26aabf0de0db6f60fafb026268a6a154f457b1 EBUILD systemd-237-r3.ebuild 13136 BLAKE2B 78e7a0488497d3fd8be87f640a5f9fb7c7547e4c1c95ae21ff36a42998ef5ca75e16e7421335b5a979ef05c273c9b69e1915afc77637d5f5836ca26579627591 SHA512 61522415b4d25c8d83ab2c598a06df60dbf8d545091f304dc86b42378e62da2c5a7eee3113e11e6b5225aa98f7287ba77917c1a2c3468635d0fc2bdf503d3462 +EBUILD systemd-238.ebuild 13177 BLAKE2B e0929870bcf56bdc9f7d8c77a1b9928b189974e6fef2784c760e2e03d7ce1ea401331ac0de940db856e4f50c6db7b7dea1f889d9415e3f4eb4199c655f3331b8 SHA512 e33daaf2bb3250215e75f5d900d6ce13aea966ce864cb66e8cc7b97ee93b6041471fcdbaa0b37cb4efb3e894c7bf69af9533a3180ceec5a994464e8634588696 EBUILD systemd-9999.ebuild 13020 BLAKE2B dcba36f9056f996c5aba1be98786e050be0ea128a03b4deb73d9e3d8f5ec6bfe9f2e0b1d9b6be105269dc7a93f34d967e55d5b9ec30c8abb22a6443c06f8f3ec SHA512 0bb205a1421d6bc733794c6db488d58d5855ba972c7f9715253a4d584f02c103ce445171d4fedd5651fc81aa492d696a49c05aea6130840ea0b6f7f931b78259 MISC metadata.xml 2032 BLAKE2B a554cb3dc21d5c5a5a4227f05f4a91054080999d23022051252f3461fb9c4398112fa1c96982205b4e1709de00ae395706ac46b86ae44610ecf85ededc3ceca7 SHA512 1c97f2c573c63a63d2ed78820d891d9593c5d8636574270c4306dc3c8ce739e52f6829e7e219cc2744acd7f3e2362e340b7c2406923f1aaf9adebc785cdb6544 diff --git a/sys-apps/systemd/files/238-0001-sd-bus-do-not-try-to-close-already-closed-fd-8392.patch b/sys-apps/systemd/files/238-0001-sd-bus-do-not-try-to-close-already-closed-fd-8392.patch new file mode 100644 index 000000000000..c39575c62b67 --- /dev/null +++ b/sys-apps/systemd/files/238-0001-sd-bus-do-not-try-to-close-already-closed-fd-8392.patch @@ -0,0 +1,26 @@ +From 5681f772d7bc8226cb10bfc7f9fba0a29e34a54d Mon Sep 17 00:00:00 2001 +From: Yu Watanabe <watanabe.yu+github@gmail.com> +Date: Thu, 8 Mar 2018 22:19:35 +0900 +Subject: [PATCH 1/2] sd-bus: do not try to close already closed fd (#8392) + +Fixes #8376, which is introduced by 2b33ab0957f453a06b58e4bee482f2c2d4e100c1. +--- + src/libsystemd/sd-bus/bus-socket.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c +index b5160cff6..166fba157 100644 +--- a/src/libsystemd/sd-bus/bus-socket.c ++++ b/src/libsystemd/sd-bus/bus-socket.c +@@ -960,8 +960,6 @@ int bus_socket_exec(sd_bus *b) { + if (r == 0) { + /* Child */ + +- safe_close(s[0]); +- + if (rearrange_stdio(s[1], s[1], STDERR_FILENO) < 0) + _exit(EXIT_FAILURE); + +-- +2.16.2 + diff --git a/sys-apps/systemd/files/238-0002-core-do-not-free-heap-allocated-strings-8391.patch b/sys-apps/systemd/files/238-0002-core-do-not-free-heap-allocated-strings-8391.patch new file mode 100644 index 000000000000..3ee2527f77d2 --- /dev/null +++ b/sys-apps/systemd/files/238-0002-core-do-not-free-heap-allocated-strings-8391.patch @@ -0,0 +1,44 @@ +From 84c5e8010042788a03cff680592b37257b2a6de0 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe <watanabe.yu+github@gmail.com> +Date: Thu, 8 Mar 2018 22:21:54 +0900 +Subject: [PATCH 2/2] core: do not free heap-allocated strings (#8391) + +Fixes #8387. +--- + src/core/mount-setup.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c +index 536c17b4d..9c27972af 100644 +--- a/src/core/mount-setup.c ++++ b/src/core/mount-setup.c +@@ -248,6 +248,7 @@ int mount_setup_early(void) { + + int mount_cgroup_controllers(char ***join_controllers) { + _cleanup_set_free_free_ Set *controllers = NULL; ++ bool has_argument = !!join_controllers; + int r; + + if (!cg_is_legacy_wanted()) +@@ -255,7 +256,7 @@ int mount_cgroup_controllers(char ***join_controllers) { + + /* Mount all available cgroup controllers that are built into the kernel. */ + +- if (!join_controllers) ++ if (!has_argument) + /* The defaults: + * mount "cpu" + "cpuacct" together, and "net_cls" + "net_prio". + * +@@ -300,7 +301,8 @@ int mount_cgroup_controllers(char ***join_controllers) { + + t = set_remove(controllers, *i); + if (!t) { +- free(*i); ++ if (has_argument) ++ free(*i); + continue; + } + } +-- +2.16.2 + diff --git a/sys-apps/systemd/systemd-238.ebuild b/sys-apps/systemd/systemd-238.ebuild new file mode 100644 index 000000000000..00e28112485d --- /dev/null +++ b/sys-apps/systemd/systemd-238.ebuild @@ -0,0 +1,441 @@ +# Copyright 1999-2018 Gentoo Foundation +# 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/archive/v${PV}/${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86" +fi + +PYTHON_COMPAT=( python{3_4,3_5,3_6} ) + +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" +IUSE="acl apparmor audit build cryptsetup curl elfutils +gcrypt gnuefi http idn importd +kmod libidn2 +lz4 lzma nat pam pcre policykit qrcode +seccomp selinux ssl +sysv-utils test usrmerge vanilla xkb" + +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= ) + abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r9 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )" + +# 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 ) + !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) +PDEPEND=">=sys-apps/dbus-1.9.8[systemd] + >=sys-apps/hwids-20150417[udev] + >=sys-fs/udev-init-scripts-25 + policykit? ( sys-auth/polkit ) + !vanilla? ( sys-apps/gentoo-systemd-integration )" + +# Newer linux-headers needed by ia64, bug #480218 +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 + gnuefi? ( >=sys-boot/gnu-efi-3.0.2 ) + test? ( sys-apps/dbus ) + 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() { + local PATCHES=( + "${FILESDIR}/238-0001-sd-bus-do-not-try-to-close-already-closed-fd-8392.patch" + "${FILESDIR}/238-0002-core-do-not-free-heap-allocated-strings-8391.patch" + ) + + [[ -d "${WORKDIR}"/patches ]] && PATCHES+=( "${WORKDIR}"/patches ) + + 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 + + default +} + +src_configure() { + # Prevent conflicts with i686 cross toolchain, bug 559726 + tc-export AR CC NM OBJCOPY RANLIB + + 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)" + # make sure we get /bin:/sbin in PATH + -Dsplit-usr=$(usex usrmerge false true) + -Drootprefix="$(usex usrmerge "${EPREFIX}/usr" "${EPREFIX:-/}")" + -Dsysvinit-path= + -Dsysvrcnd-path= + # Avoid infinite exec recursion, bug 642724 + -Dtelinit-path="${EPREFIX}/lib/sysvinit/telinit" + # no deps + -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 + -Dntp-servers="0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org 2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org" + # Breaks screen, tmux, etc. + -Ddefault-kill-user-processes=false + + # multilib options + -Dbacklight=$(meson_multilib) + -Dbinfmt=$(meson_multilib) + -Dcoredump=$(meson_multilib) + -Denvironment-d=$(meson_multilib) + -Dfirstboot=$(meson_multilib) + -Dhibernate=$(meson_multilib) + -Dhostnamed=$(meson_multilib) + -Dhwdb=$(meson_multilib) + -Dldconfig=$(meson_multilib) + -Dlocaled=$(meson_multilib) + -Dman=$(meson_multilib) + -Dnetworkd=$(meson_multilib) + -Dquotacheck=$(meson_multilib) + -Drandomseed=$(meson_multilib) + -Drfkill=$(meson_multilib) + -Dsysusers=$(meson_multilib) + -Dtimedated=$(meson_multilib) + -Dtimesyncd=$(meson_multilib) + -Dtmpfiles=$(meson_multilib) + -Dvconsole=$(meson_multilib) + ) + + 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() { + eninja test +} + +multilib_src_install() { + DESTDIR="${D}" eninja install +} + +multilib_src_install_all() { + # meson doesn't know about docdir + mv "${ED%/}"/usr/share/doc/{systemd,${PF}} || die + + einstalldocs + dodoc "${FILESDIR}"/nsswitch.conf + + if use sysv-utils; then + local app + for app in halt poweroff reboot runlevel shutdown telinit; do + dosym ../bin/systemctl /sbin/${app} + done + dosym ../lib/systemd/systemd /sbin/init + else + # we just keep sysvinit tools, so no need for the mans + rm "${ED%/}"/usr/share/man/man8/{halt,poweroff,reboot,runlevel,shutdown,telinit}.8 \ + || die + rm "${ED%/}"/usr/share/man/man1/init.1 || 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 + keepdir /etc/udev/{hwdb.d,rules.d} + keepdir /var/log/journal/remote + + # Symlink /etc/sysctl.conf for easy migration. + dosym ../sysctl.conf /etc/sysctl.d/99-sysctl.conf + + # 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 + + local udevdir=/lib/udev + use usrmerge && udevdir=/usr/lib/udev + + rm -r "${ED%/}${udevdir}/hwdb.d" || die + + if ! use usrmerge; 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 kvm 78 + enewgroup render + enewgroup systemd-journal + newusergroup systemd-bus-proxy + newusergroup systemd-coredump + newusergroup systemd-journal-gateway + newusergroup systemd-journal-remote + newusergroup systemd-journal-upload + newusergroup systemd-network + newusergroup systemd-resolve + newusergroup systemd-timesync + + 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 + + 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 +} |