diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2024-02-19 12:32:53 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2024-02-19 13:00:55 -0800 |
commit | b0152d3ed507c45608377046bc2f65a48b47ec10 (patch) | |
tree | b952fc5a67854c7f4ebf75978ac433247d8a25bd /sys-fs/mdadm | |
parent | sci-mathematics/eprover: fix build on musl (diff) | |
download | gentoo-b0152d3ed507c45608377046bc2f65a48b47ec10.tar.gz gentoo-b0152d3ed507c45608377046bc2f65a48b47ec10.tar.bz2 gentoo-b0152d3ed507c45608377046bc2f65a48b47ec10.zip |
sys-fs/mdadm: improve mdmonitor on systemd
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Closes: https://bugs.gentoo.org/628968
Diffstat (limited to 'sys-fs/mdadm')
-rw-r--r-- | sys-fs/mdadm/files/mdadm-4.2-mdadm_env.patch | 36 | ||||
-rw-r--r-- | sys-fs/mdadm/mdadm-4.2-r3.ebuild | 104 |
2 files changed, 140 insertions, 0 deletions
diff --git a/sys-fs/mdadm/files/mdadm-4.2-mdadm_env.patch b/sys-fs/mdadm/files/mdadm-4.2-mdadm_env.patch new file mode 100644 index 000000000000..bd09da553820 --- /dev/null +++ b/sys-fs/mdadm/files/mdadm-4.2-mdadm_env.patch @@ -0,0 +1,36 @@ +--- mdadm-4.2/systemd/SUSE-mdadm_env.sh 2021-12-30 11:43:35.000000000 -0800 ++++ mdadm-4.2/systemd/SUSE-mdadm_env.sh 2024-02-19 12:20:56.509632098 -0800 +@@ -6,6 +7,12 @@ + + MDADM_SCAN="yes" + ++# Gentoo: source conf.d ++mdadmd_CONFIG=/etc/conf.d/mdadm ++if test -r $mdadmd_CONFIG; then ++ . $mdadmd_CONFIG ++fi ++ + # Following adapted from /etc/init.d/mdadmd on openSUSE + + mdadmd_CONFIG=/etc/sysconfig/mdadm +@@ -42,7 +49,8 @@ + fi + + mkdir -p /run/sysconfig +-echo "MDADM_MONITOR_ARGS=$MDADM_RAIDDEVICES $MDADM_DELAY $MDADM_MAIL $MDADM_PROGRAM $MDADM_SCAN $MDADM_SEND_MAIL $MDADM_CONFIG" > /run/sysconfig/mdadm ++# Gentoo: added $MDADM_OPTS to the end. ++echo "MDADM_MONITOR_ARGS=$MDADM_RAIDDEVICES $MDADM_DELAY $MDADM_MAIL $MDADM_PROGRAM $MDADM_SCAN $MDADM_SEND_MAIL $MDADM_CONFIG $MDADM_OPTS" > /run/sysconfig/mdadm + if [ -n "$MDADM_CHECK_DURATION" ]; then + echo "MDADM_CHECK_DURATION=$MDADM_CHECK_DURATION" >> /run/sysconfig/mdadm + fi +--- mdadm-4.2.orig/Makefile 2024-02-19 12:27:19.512400849 -0800 ++++ mdadm-4.2/Makefile 2024-02-19 12:27:39.517338433 -0800 +@@ -298,7 +298,7 @@ + $(INSTALL) -D -m 755 .install.tmp.3 $(DESTDIR)$(SYSTEMD_DIR)-shutdown/$$file ; \ + rm -f .install.tmp.3; \ + done +- if [ -f /etc/SuSE-release -o -n "$(SUSE)" ] ;then $(INSTALL) -D -m 755 systemd/SUSE-mdadm_env.sh $(DESTDIR)$(LIB_DIR)/mdadm_env.sh ;fi ++ $(INSTALL) -D -m 755 systemd/SUSE-mdadm_env.sh $(DESTDIR)$(LIB_DIR)/mdadm_env.sh + + install-bin: mdadm mdmon + $(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm diff --git a/sys-fs/mdadm/mdadm-4.2-r3.ebuild b/sys-fs/mdadm/mdadm-4.2-r3.ebuild new file mode 100644 index 000000000000..0b2549330957 --- /dev/null +++ b/sys-fs/mdadm/mdadm-4.2-r3.ebuild @@ -0,0 +1,104 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit flag-o-matic systemd toolchain-funcs udev + +DESCRIPTION="Tool for running RAID systems - replacement for the raidtools" +HOMEPAGE="https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/" +DEB_PF="4.2~rc2-7" +SRC_URI="https://www.kernel.org/pub/linux/utils/raid/mdadm/${P/_/-}.tar.xz + mirror://debian/pool/main/m/mdadm/${PN}_${DEB_PF}.debian.tar.xz" + +LICENSE="GPL-2" +SLOT="0" +[[ "${PV}" = *_rc* ]] || \ +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" +IUSE="static systemd +udev" + +REQUIRED_USE="static? ( !udev )" + +BDEPEND="app-arch/xz-utils + virtual/pkgconfig" +DEPEND="udev? ( virtual/libudev:= )" +RDEPEND="${DEPEND} + >=sys-apps/util-linux-2.16" + +# The tests edit values in /proc and run tests on software raid devices. +# Thus, they shouldn't be run on systems with active software RAID devices. +RESTRICT="test" + +PATCHES=( + "${FILESDIR}/${PN}"-3.4-sysmacros.patch #580188 + "${FILESDIR}/${PN}"-4.2-in_initrd-collision.patch #830461 + "${FILESDIR}/${PN}"-4.2-mdadm_env.patch #628968 +) + +mdadm_emake() { + # We should probably make corosync & libdlm into USE flags. #573782 + local args=( + PKG_CONFIG="$(tc-getPKG_CONFIG)" + CC="$(tc-getCC)" + CWFLAGS="-Wall" + CXFLAGS="${CFLAGS}" + UDEVDIR="$(get_udevdir)" + SYSTEMD_DIR="$(systemd_get_systemunitdir)" + COROSYNC="-DNO_COROSYNC" + DLM="-DNO_DLM" + + # https://bugs.gentoo.org/732276 + STRIP= + + "$@" + ) + emake "${args[@]}" +} + +src_compile() { + use static && append-ldflags -static + + # CPPFLAGS won't work for this + use udev || append-cflags -DNO_LIBUDEV + + mdadm_emake all +} + +src_test() { + mdadm_emake test + + sh ./test || die +} + +src_install() { + mdadm_emake DESTDIR="${D}" install install-systemd + dodoc ChangeLog INSTALL TODO README* ANNOUNCE-* + + insinto /etc + newins mdadm.conf-example mdadm.conf + newinitd "${FILESDIR}"/mdadm.rc mdadm + newconfd "${FILESDIR}"/mdadm.confd mdadm + newinitd "${FILESDIR}"/mdraid.rc mdraid + newconfd "${FILESDIR}"/mdraid.confd mdraid + + # From the Debian patchset + into /usr + dodoc "${WORKDIR}"/debian/README.checkarray + dosbin "${WORKDIR}"/debian/checkarray + insinto /etc/default + newins "${FILESDIR}"/etc-default-mdadm mdadm + + exeinto /etc/cron.weekly + newexe "${FILESDIR}"/mdadm.weekly mdadm +} + +pkg_postinst() { + if ! systemd_is_booted; then + if [[ -z ${REPLACING_VERSIONS} ]] ; then + # Only inform people the first time they install. + elog "If you're not relying on kernel auto-detect of your RAID" + elog "devices, you need to add 'mdraid' to your 'boot' runlevel:" + elog " rc-update add mdraid boot" + fi + fi +} |