diff options
3 files changed, 190 insertions, 0 deletions
diff --git a/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_args_tempfile.patch b/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_args_tempfile.patch new file mode 100644 index 000000000000..6ad40c860f96 --- /dev/null +++ b/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_args_tempfile.patch @@ -0,0 +1,65 @@ +From 586579d5c9fad63eb8780c556f34b80d0302e6b9 Mon Sep 17 00:00:00 2001 +From: Lars Wendler <polynomial-c@gentoo.org> +Date: Fri, 22 May 2020 10:09:22 +0200 +Subject: [PATCH] net/dhcpcd.sh: Put user args into a temp file + +So we still use the correct PID even if the user has changed his +configuration between start and stop. + +Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> +--- + net/dhcpcd.sh | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/net/dhcpcd.sh b/net/dhcpcd.sh +index c0639e0..dcc6817 100644 +--- a/net/dhcpcd.sh ++++ b/net/dhcpcd.sh +@@ -16,11 +16,14 @@ _config_vars="$_config_vars dhcp dhcpcd" + + dhcpcd_start() + { +- # check for pidfile after we gathered the user's opts because they can ++ # check for pidfile after we gathered the user's args because they can + # alter the pidfile's name (#718114) +- local args= opt= pidfile= opts= new=true ++ # Save the args into a file so dhcpcd_stop can later re-use the very ++ # same args later. ++ local args= opt= pidfile= opts= new=true argsfile=/run/netifrc_dhcpcd_${IFACE}_args + eval args=\$dhcpcd_${IFVAR} + [ -z "${args}" ] && args=${dhcpcd} ++ echo "${args}" > ${argsfile} + pidfile="$(dhcpcd -P ${args} ${IFACE})" + + # Get our options +@@ -78,12 +81,16 @@ dhcpcd_start() + + dhcpcd_stop() + { +- local args= pidfile= opts= sig=SIGTERM ++ local args= pidfile= opts= sig=SIGTERM argsfile=/run/netifrc_dhcpcd_${IFACE}_args + +- # check for pidfile after we gathered the user's opts because they can ++ # check for pidfile after we gathered the user's args because they can + # alter the pidfile's name (#718114) +- eval args=\$dhcpcd_${IFVAR} +- [ -z "${args}" ] && args=${dhcpcd} ++ if [ -f "${argsfile}" ] ; then ++ args="$(cat ${argsfile})" ++ else ++ eval args=\$dhcpcd_${IFVAR} ++ [ -z "${args}" ] && args=${dhcpcd} ++ fi + pidfile="$(dhcpcd -P ${args} ${IFACE})" + [ ! -f "${pidfile}" ] && return 0 + +@@ -94,5 +101,6 @@ dhcpcd_stop() + *" release "*) dhcpcd -k "${IFACE}" ;; + *) dhcpcd -x "${IFACE}" ;; + esac ++ [ -f "${argsfile}" ] && rm -f "${argsfile}" + eend $? + } +-- +2.27.0.rc0 + diff --git a/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_pidfile_location.patch b/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_pidfile_location.patch new file mode 100644 index 000000000000..154e7a7696a0 --- /dev/null +++ b/net-misc/netifrc/files/netifrc-0.7.1-dhcpcd_pidfile_location.patch @@ -0,0 +1,50 @@ +From c29dffb14e321d927196a9b39b545004e632d3c4 Mon Sep 17 00:00:00 2001 +From: Lars Wendler <polynomial-c@gentoo.org> +Date: Thu, 21 May 2020 18:35:32 +0200 +Subject: [PATCH] net/dhcpcd.sh: fetch pidfile location from dhcpcd + +There's a -P switch for this but we also need to take into account the +-4 and -6 switches as they both alter the pidfile's name. + +Bug: https://bugs.gentoo.org/718114 +Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> +--- + net/dhcpcd.sh | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/net/dhcpcd.sh b/net/dhcpcd.sh +index 0a306b8..c0639e0 100644 +--- a/net/dhcpcd.sh ++++ b/net/dhcpcd.sh +@@ -16,9 +16,12 @@ _config_vars="$_config_vars dhcp dhcpcd" + + dhcpcd_start() + { +- local args= opt= opts= pidfile="/run/dhcpcd-${IFACE}.pid" new=true ++ # check for pidfile after we gathered the user's opts because they can ++ # alter the pidfile's name (#718114) ++ local args= opt= pidfile= opts= new=true + eval args=\$dhcpcd_${IFVAR} + [ -z "${args}" ] && args=${dhcpcd} ++ pidfile="$(dhcpcd -P ${args} ${IFACE})" + + # Get our options + eval opts=\$dhcp_${IFVAR} +@@ -75,7 +78,13 @@ dhcpcd_start() + + dhcpcd_stop() + { +- local pidfile="/run/dhcpcd-${IFACE}.pid" opts= sig=SIGTERM ++ local args= pidfile= opts= sig=SIGTERM ++ ++ # check for pidfile after we gathered the user's opts because they can ++ # alter the pidfile's name (#718114) ++ eval args=\$dhcpcd_${IFVAR} ++ [ -z "${args}" ] && args=${dhcpcd} ++ pidfile="$(dhcpcd -P ${args} ${IFACE})" + [ ! -f "${pidfile}" ] && return 0 + + ebegin "Stopping dhcpcd on ${IFACE}" +-- +2.27.0.rc0 + diff --git a/net-misc/netifrc/netifrc-0.7.1-r1.ebuild b/net-misc/netifrc/netifrc-0.7.1-r1.ebuild new file mode 100644 index 000000000000..a5c2b998bd7a --- /dev/null +++ b/net-misc/netifrc/netifrc-0.7.1-r1.ebuild @@ -0,0 +1,75 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit systemd udev + +DESCRIPTION="Gentoo Network Interface Management Scripts" +HOMEPAGE="https://www.gentoo.org/proj/en/base/openrc/" + +if [[ ${PV} == "9999" ]]; then + EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/netifrc.git" + #EGIT_REPO_URI="https://github.com/gentoo/${PN}" # Alternate + inherit git-r3 +else + SRC_URI="https://gitweb.gentoo.org/proj/${PN}.git/snapshot/${P}.tar.gz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +fi + +LICENSE="BSD-2" +SLOT="0" +IUSE="" + +DEPEND="!<sys-fs/udev-172" +RDEPEND="sys-apps/gentoo-functions + >=sys-apps/openrc-0.15 + !<sys-fs/udev-init-scripts-27" +BDEPEND="kernel_linux? ( virtual/pkgconfig )" + +PATCHES=( + "${FILESDIR}/${PN}-0.7.1-dhcpcd_pidfile_location.patch" + "${FILESDIR}/${PN}-0.7.1-dhcpcd_args_tempfile.patch" +) + +src_prepare() { + if [[ ${PV} == "9999" ]] ; then + local ver="git-${EGIT_VERSION:0:6}" + sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk || die + einfo "Producing ChangeLog from Git history" + GIT_DIR="${S}/.git" git log >"${S}"/ChangeLog + fi + + default +} + +src_compile() { + MAKE_ARGS="${MAKE_ARGS} + UDEVDIR=${EPREFIX}$(get_udevdir) + LIBEXECDIR=${EPREFIX}/lib/${PN} PF=${PF}" + + use prefix && MAKE_ARGS+=" MKPREFIX=yes PREFIX=${EPREFIX}" + + emake ${MAKE_ARGS} all +} + +src_install() { + emake ${MAKE_ARGS} DESTDIR="${D}" install + dodoc README CREDITS FEATURE-REMOVAL-SCHEDULE STYLE TODO + + # Install the service file + LIBEXECDIR="${EPREFIX}/lib/${PN}" + UNIT_DIR="$(systemd_get_systemunitdir)" + sed "s:@LIBEXECDIR@:${LIBEXECDIR}:" "${S}/systemd/net_at.service.in" > "${T}/net_at.service" || die + systemd_newunit "${T}/net_at.service" 'net@.service' + dosym "${UNIT_DIR#${EPREFIX}}/net@.service" "${UNIT_DIR#${EPREFIX}}/net@lo.service" +} + +pkg_postinst() { + if [[ ! -e "${EROOT}"/etc/conf.d/net && -z ${REPLACING_VERSIONS} ]]; then + elog "The network configuration scripts will use dhcp by" + elog "default to set up your interfaces." + elog "If you need to set up something more complete, see" + elog "${EROOT}/usr/share/doc/${P}/README" + fi +} |