public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-misc/iputils/, net-misc/iputils/files/
Date: Thu, 14 Oct 2021 03:16:43 +0000 (UTC)	[thread overview]
Message-ID: <1634181347.c8e7cf5b4f813a24758f4d81e722df07bba85017.sam@gentoo> (raw)

commit:     c8e7cf5b4f813a24758f4d81e722df07bba85017
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 14 03:15:47 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Oct 14 03:15:47 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c8e7cf5b

net-misc/iputils: backport no-IPv6 ping patch

Bug: https://bugs.gentoo.org/818022
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/iputils-20210722-fix-no-ipv6-ping.patch  |  47 +++++
 net-misc/iputils/iputils-20210722-r1.ebuild        | 192 +++++++++++++++++++++
 2 files changed, 239 insertions(+)

diff --git a/net-misc/iputils/files/iputils-20210722-fix-no-ipv6-ping.patch b/net-misc/iputils/files/iputils-20210722-fix-no-ipv6-ping.patch
new file mode 100644
index 00000000000..61f9f5c03fd
--- /dev/null
+++ b/net-misc/iputils/files/iputils-20210722-fix-no-ipv6-ping.patch
@@ -0,0 +1,47 @@
+https://github.com/iputils/iputils/commit/79d713eab6181e219bf932b404706f6f59ff2539.patch
+https://bugs.gentoo.org/818022
+
+From: Byron Stanoszek <gandalf@winds.org>
+Date: Thu, 16 Sep 2021 23:38:54 +0200
+Subject: [PATCH] ping: Remove 'unsupported IPv6' warning on disabled IPv6
+
+Regression was introduced in d141cb6 as introduced condition
+
+if ((errno == EAFNOSUPPORT && socktype == AF_INET6) || options & F_VERBOSE || requisite)
+
+was wrong, it should have been:
+
+if ((errno == EAFNOSUPPORT && family == AF_INET6 && requisite) || options & F_VERBOSE)
+
+but bug was hidden as `family == AF_INET6' was always false until
+otherwise correct fix 904cdb6 ("ping: AF_INET6 is address family not
+socket type [lgtm scan]") propagated the error.
+
+Tested on kernel booted with ipv6.disable=1 (disabling via sysctl, i.e.
+sysctl -w net.ipv6.conf.all.disable_ipv6=1; sysctl -w net.ipv6.conf.default.disable_ipv6=1
+does not trigger the issue as it exit with "socket: Address family not
+supported by protocol" - errno EADDRNOTAVAIL).
+
+Fixes: d141cb6 ("ping: work with older kernels that don't support ping sockets")
+Closes: https://github.com/iputils/iputils/issues/293
+Closes: https://github.com/iputils/iputils/pull/370
+
+Reported-by: lekto <lekto@o2.pl>
+Reviewed-by: Andrew Clayton <andrew@digital-domain.net>
+Reviewed-by: Petr Vorel <pvorel@suse.cz>
+Signed-off-by: Byron Stanoszek <gandalf@winds.org>
+[ pvorel: create commit from Byron's patch on the issue, do analysis and wrote commit message ]
+Signed-off-by: Petr Vorel <pvorel@suse.cz>
+--- a/ping/ping.c
++++ b/ping/ping.c
+@@ -150,8 +150,8 @@ static void create_socket(struct ping_rts *rts, socket_st *sock, int family,
+ 		/* Report error related to disabled IPv6 only when IPv6 also failed or in
+ 		 * verbose mode. Report other errors always.
+ 		 */
+-		if ((errno == EAFNOSUPPORT && family == AF_INET6) ||
+-		    rts->opt_verbose || requisite)
++		if ((errno == EAFNOSUPPORT && family == AF_INET6 && requisite) ||
++		    rts->opt_verbose)
+ 			error(0, errno, "socket");
+ 		if (requisite)
+ 			exit(2);

diff --git a/net-misc/iputils/iputils-20210722-r1.ebuild b/net-misc/iputils/iputils-20210722-r1.ebuild
new file mode 100644
index 00000000000..7d70dc9970a
--- /dev/null
+++ b/net-misc/iputils/iputils-20210722-r1.ebuild
@@ -0,0 +1,192 @@
+# Copyright 1999-2021 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 dependencies.
+# To regenerate man/html pages emerge iputils-99999999[doc] with
+# EGIT_COMMIT set to release tag, all USE flags enabled and
+# tar ${S}/doc folder.
+
+EAPI="7"
+
+PLOCALES="de fr ja pt_BR tr uk zh_CN"
+
+inherit fcaps flag-o-matic meson plocale 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/${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 ~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 nettle nls rarpd rdisc ssl static test tftpd tracepath traceroute6"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	virtual/pkgconfig
+	test? ( sys-apps/iproute2 )
+	nls? ( sys-devel/gettext )
+"
+
+LIB_DEPEND="
+	caps? ( sys-libs/libcap[static-libs(+)] )
+	idn? ( net-dns/libidn2:=[static-libs(+)] )
+	nls? ( virtual/libintl[static-libs(+)] )
+"
+
+RDEPEND="
+	traceroute6? ( !net-analyzer/traceroute )
+	!static? ( ${LIB_DEPEND//\[static-libs(+)]} )
+"
+
+DEPEND="
+	${RDEPEND}
+	virtual/os-headers
+	static? ( ${LIB_DEPEND} )
+"
+
+if [[ ${PV} == "99999999" ]] ; then
+	BDEPEND+="
+		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
+
+PATCHES=(
+	# Upstream; drop on bump
+	"${FILESDIR}"/${P}-optional-tests.patch
+	# Upstream; drop on bump
+	"${FILESDIR}"/${P}-fix-no-ipv6-ping.patch
+)
+
+src_prepare() {
+	default
+
+	plocale_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)"
+		$(meson_use !test SKIP_TESTS)
+	)
+
+	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_test() {
+	if [[ ${EUID} != 0 ]]; then
+		einfo "Tests require root privileges; Skipping ..."
+		return
+	fi
+
+	meson_src_test
+}
+
+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' '')
+}


             reply	other threads:[~2021-10-14  3:16 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-14  3:16 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-09-10 17:17 [gentoo-commits] repo/gentoo:master commit in: net-misc/iputils/, net-misc/iputils/files/ Sam James
2021-01-25  3:29 Mike Gilbert
2020-04-07 18:09 Thomas Deutschmann
2020-04-07 18:09 Thomas Deutschmann
2018-07-10 23:39 Thomas Deutschmann
2018-05-16 19:26 Lars Wendler
2017-10-28 14:47 Thomas Deutschmann
2016-03-07 15:50 Lars Wendler
2015-08-20 12:21 Lars Wendler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1634181347.c8e7cf5b4f813a24758f4d81e722df07bba85017.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox