From: Thomas Deutschmann Date: Tue, 7 Apr 2020 18:04:59 +0000 (+0200) Subject: net-misc/iputils: fix arping X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=23a95c6869f3abe76afd4197e4b7f92d25048861;p=gentoo.git net-misc/iputils: fix arping Closes: https://bugs.gentoo.org/692982 Package-Manager: Portage-2.3.96, Repoman-2.3.22 Signed-off-by: Thomas Deutschmann --- diff --git a/net-misc/iputils/files/iputils-20190709-arping-revert-partially-fix-sent-vs-received-package.patch b/net-misc/iputils/files/iputils-20190709-arping-revert-partially-fix-sent-vs-received-package.patch new file mode 100644 index 000000000000..715ed45041b5 --- /dev/null +++ b/net-misc/iputils/files/iputils-20190709-arping-revert-partially-fix-sent-vs-received-package.patch @@ -0,0 +1,34 @@ +From 18f14be80466ddc8fb17a400be82764a779c8dcd Mon Sep 17 00:00:00 2001 +From: Sami Kerola +Date: Wed, 31 Jul 2019 21:28:12 +0100 +Subject: [PATCH] arping: revert partially - fix sent vs received packages + return value + +Commit 84ca65ca980315c73f929fed8b6f16bbd698c3a0 caused regression. The +arping -D needs return value evaluation that was the earlier default, in +other cases the new return value should be correct. + +Addresses: https://github.com/iputils/iputils/issues/209 +See-also: https://github.com/void-linux/void-packages/issues/13304 +Signed-off-by: Sami Kerola +--- + arping.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/arping.c b/arping.c +index 77c9c56..2c87c15 100644 +--- a/arping.c ++++ b/arping.c +@@ -792,7 +792,11 @@ static int event_loop(struct run_state *ctl) + close(tfd); + freeifaddrs(ctl->ifa0); + rc |= finish(ctl); +- rc |= (ctl->sent != ctl->received); ++ if (ctl->dad && ctl->quit_on_reply) ++ /* Duplicate address detection mode return value */ ++ rc |= !(ctl->brd_sent != ctl->received); ++ else ++ rc |= (ctl->sent != ctl->received); + return rc; + } + diff --git a/net-misc/iputils/iputils-20190709-r1.ebuild b/net-misc/iputils/iputils-20190709-r1.ebuild new file mode 100644 index 000000000000..52bdec97980e --- /dev/null +++ b/net-misc/iputils/iputils-20190709-r1.ebuild @@ -0,0 +1,201 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# For released versions, we precompile the man/html pages and store +# them in a tarball on our mirrors. This avoids ugly issues while +# building stages, and reduces depedencies. +# To regenerate man/html pages emerge iputils-99999999[doc] with +# EGIT_COMMIT set to release tag and tar ${S}/doc folder. + +EAPI="7" + +PLOCALES="ja" + +inherit fcaps flag-o-matic l10n meson systemd toolchain-funcs + +if [[ ${PV} == "99999999" ]] ; then + EGIT_REPO_URI="https://github.com/iputils/iputils.git" + inherit git-r3 +else + SRC_URI="https://github.com/iputils/iputils/archive/s${PV}.tar.gz -> ${P}.tar.gz + https://dev.gentoo.org/~whissi/dist/iputils/${PN}-manpages-${PV}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-aix ~amd64-linux ~x86-linux" +fi + +DESCRIPTION="Network monitoring tools including ping and ping6" +HOMEPAGE="https://wiki.linuxfoundation.org/networking/iputils" + +LICENSE="BSD GPL-2+ rdisc" +SLOT="0" +IUSE="+arping caps clockdiff doc gcrypt idn ipv6 libressl nettle nls rarpd rdisc SECURITY_HAZARD ssl static tftpd tracepath traceroute6" + +BDEPEND="virtual/pkgconfig" + +LIB_DEPEND=" + caps? ( sys-libs/libcap[static-libs(+)] ) + idn? ( net-dns/libidn2:=[static-libs(+)] ) + ipv6? ( + ssl? ( + gcrypt? ( dev-libs/libgcrypt:0=[static-libs(+)] ) + !gcrypt? ( + nettle? ( dev-libs/nettle[static-libs(+)] ) + !nettle? ( + libressl? ( dev-libs/libressl:0=[static-libs(+)] ) + !libressl? ( dev-libs/openssl:0=[static-libs(+)] ) + ) + ) + ) + ) + nls? ( sys-devel/gettext[static-libs(+)] ) +" + +RDEPEND=" + arping? ( !net-misc/arping ) + rarpd? ( !net-misc/rarpd ) + traceroute6? ( !net-analyzer/traceroute ) + !static? ( ${LIB_DEPEND//\[static-libs(+)]} ) +" + +DEPEND=" + ${RDEPEND} + virtual/os-headers + static? ( ${LIB_DEPEND} ) +" + +if [[ ${PV} == "99999999" ]] ; then + DEPEND+=" + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-ns-stylesheets + app-text/docbook-xsl-stylesheets + dev-libs/libxslt:0 + " +fi + +[ "${PV}" == "99999999" ] || S="${WORKDIR}/${PN}-s${PV}" + +PATCHES=( + "${FILESDIR}"/${P}-arping-revert-partially-fix-sent-vs-received-package.patch +) + +src_prepare() { + use SECURITY_HAZARD && PATCHES+=( "${FILESDIR}"/${PN}-20150815-nonroot-floodping.patch ) + + default + + l10n_get_locales > po/LINGUAS || die +} + +src_configure() { + use static && append-ldflags -static + + local emesonargs=( + -DUSE_CAP="$(usex caps true false)" + -DUSE_IDN="$(usex idn true false)" + -DBUILD_ARPING="$(usex arping true false)" + -DBUILD_CLOCKDIFF="$(usex clockdiff true false)" + -DBUILD_PING="true" + -DBUILD_RARPD="$(usex rarpd true false)" + -DBUILD_RDISC="$(usex rdisc true false)" + -DENABLE_RDISC_SERVER="$(usex rdisc true false)" + -DBUILD_TFTPD="$(usex tftpd true false)" + -DBUILD_TRACEPATH="$(usex tracepath true false)" + -DBUILD_TRACEROUTE6="$(usex ipv6 $(usex traceroute6 true false) false)" + -DBUILD_NINFOD="false" + -DNINFOD_MESSAGES="false" + -DNO_SETCAP_OR_SUID="true" + -Dsystemdunitdir="$(systemd_get_systemunitdir)" + -DUSE_GETTEXT="$(usex nls true false)" + ) + + if use ipv6 && use ssl ; then + emesonargs+=( + -DUSE_CRYPTO="$(usex gcrypt gcrypt $(usex nettle nettle openssl))" + ) + else + emesonargs+=( + -DUSE_CRYPTO="none" + ) + fi + + if [[ "${PV}" == 99999999 ]] ; then + emesonargs+=( + -DBUILD_HTML_MANS="$(usex doc true false)" + -DBUILD_MANS="true" + ) + else + emesonargs+=( + -DBUILD_HTML_MANS="false" + -DBUILD_MANS="false" + ) + fi + + meson_src_configure +} + +src_compile() { + tc-export CC + meson_src_compile +} + +src_install() { + meson_src_install + + dodir /bin + local my_bin + for my_bin in $(usex arping arping '') ping ; do + mv "${ED}"/usr/bin/${my_bin} "${ED}"/bin/ || die + done + dosym ping /bin/ping4 + + if use tracepath ; then + dosym tracepath /usr/bin/tracepath4 + fi + + if use ipv6 ; then + dosym ping /bin/ping6 + + if use tracepath ; then + dosym tracepath /usr/bin/tracepath6 + dosym tracepath.8 /usr/share/man/man8/tracepath6.8 + fi + fi + + if [[ "${PV}" != 99999999 ]] ; then + local -a man_pages + local -a html_man_pages + + while IFS= read -r -u 3 -d $'\0' my_bin + do + my_bin=$(basename "${my_bin}") + [[ -z "${my_bin}" ]] && continue + + if [[ -f "${S}/doc/${my_bin}.8" ]] ; then + man_pages+=( ${my_bin}.8 ) + fi + + if [[ -f "${S}/doc/${my_bin}.html" ]] ; then + html_man_pages+=( ${my_bin}.html ) + fi + done 3< <(find "${ED}"/{bin,usr/bin,usr/sbin} -type f -perm -a+x -print0 2>/dev/null) + + pushd doc &>/dev/null || die + doman "${man_pages[@]}" + if use doc ; then + docinto html + dodoc "${html_man_pages[@]}" + fi + popd &>/dev/null || die + else + if use doc ; then + mv "${ED}"/usr/share/${PN} "${ED}"/usr/share/doc/${PF}/html || die + fi + fi +} + +pkg_postinst() { + fcaps cap_net_raw \ + bin/ping \ + $(usex arping 'bin/arping' '') \ + $(usex clockdiff 'usr/bin/clockdiff' '') +}