Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions sys-apps/iproute2/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST iproute2-6.13.0.tar.xz 927416 BLAKE2B bbebc44d1a7e35c410869a2a5884df09698ea3950acd126e5736a938718d40e57d539ff88ecd7827cbdf2f9481c3d728fff3948a61c2ba3e1483c5b7a7616577 SHA512 2e392a8ddc3d7662c3a72bba1c845587df85b7afc6efabf7df0ec2830bb1d4b16cac5bfb7a43dc3ac73adf0ea3fe3670824674d4f32209c6d1aa638a7cb7cd6c
DIST iproute2-6.15.0.tar.xz 930908 BLAKE2B 50247f293e194601bd138418e55e2dc63421d2a5da863973e9ff78f2c76ba051350523559f2b7b7983af05a827f292135353adbf6c857ea32b7071f69940f73f SHA512 1a438941cd939e1c8e32cfe8c40e6fd826c89185f1bb0c623eaad7380a66afd9fa9e0d7cdc5e5b193d2761b7dbdc78fd0811537eecc500be633730c32ff55ad4
169 changes: 169 additions & 0 deletions sys-apps/iproute2/iproute2-6.15.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit toolchain-funcs flag-o-matic

SRC_URI="https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.15.0.tar.xz -> iproute2-6.15.0.tar.xz"
KEYWORDS="*"

DESCRIPTION="kernel routing and traffic control utilities"
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"

LICENSE="GPL-2"
SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables ipv6 libbsd minimal selinux"

# We could make libmnl optional, but it's tiny, so eh
RDEPEND="
!net-misc/arpd
!minimal? ( net-libs/libmnl:= )
atm? ( net-dialup/linux-atm )
berkdb? ( sys-libs/db:= )
bpf? ( dev-libs/libbpf:= )
caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
selinux? ( sys-libs/libselinux )
"
# We require newer linux-headers for ipset support #549948 and some defines #553876
DEPEND="
${RDEPEND}
>=sys-kernel/linux-headers-3.16
"
BDEPEND="
app-arch/xz-utils
>=sys-devel/bison-2.4
sys-devel/flex
virtual/pkgconfig
"

PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug 643722
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
)

doecho() {
echo "${@}"
"${@}" || die
}

src_prepare() {
if ! use ipv6 ; then
PATCHES+=(
"${FILESDIR}"/${PN}-4.20.0-no-ipv6.patch #326849
)
fi

default

# Fix version if necessary
local versionfile="include/version.h"
if [[ "${PV}" != 9999 ]] && ! grep -Fq "${PV}" ${versionfile} ; then
einfo "Fixing version string"
sed "s@\"[[:digit:]\.]\+\"@\"${PV}\"@" \
-i ${versionfile} || die
fi

# echo -n is not POSIX compliant
sed 's@echo -n@printf@' -i configure || die

sed -i \
-e '/^CC :\?=/d' \
-e "/^LIBDIR/s:=.*:=/$(get_libdir):" \
-e "s|-O2|${CFLAGS} ${CPPFLAGS}|" \
-e "/^HOSTCC/s:=.*:= $(tc-getBUILD_CC):" \
-e "/^DBM_INCLUDE/s:=.*:=${T}:" \
Makefile || die

# build against system headers
rm -r include/netinet || die #include/linux include/ip{,6}tables{,_common}.h include/libiptc
sed -i 's:TCPI_OPT_ECN_SEEN:16:' misc/ss.c || die

if use minimal ; then
sed -i -e '/^SUBDIRS=/s:=.*:=lib tc ip:' Makefile || die
fi
}

src_configure() {
tc-export AR CC PKG_CONFIG

# This sure is ugly. Should probably move into toolchain-funcs at some point.
local setns
pushd "${T}" >/dev/null
printf '#include <sched.h>\nint main(){return setns(0, 0);}\n' > test.c
${CC} ${CFLAGS} ${CPPFLAGS} -D_GNU_SOURCE ${LDFLAGS} test.c >&/dev/null && setns=y || setns=n
echo 'int main(){return 0;}' > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c -lresolv >&/dev/null || sed -i '/^LDLIBS/s:-lresolv::' "${S}"/Makefile
popd >/dev/null

# run "configure" script first which will create "config.mk"...
# Using econf breaks since 5.14.0 (a9c3d70d902a0473ee5c13336317006a52ce8242)
doecho ./configure --libbpf_force $(usex bpf on off)

# ...now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722
cat <<-EOF >> config.mk
TC_CONFIG_ATM := $(usex atm y n)
TC_CONFIG_XT := $(usex iptables y n)
TC_CONFIG_NO_XT := $(usex iptables n y)
# We've locked in recent enough kernel headers #549948
TC_CONFIG_IPSET := y
HAVE_BERKELEY_DB := $(usex berkdb y n)
HAVE_CAP := $(usex caps y n)
HAVE_MNL := $(usex minimal n y)
HAVE_ELF := $(usex elf y n)
HAVE_SELINUX := $(usex selinux y n)
IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, #144265 #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF
}

src_compile() {
emake V=1 NETNS_RUN_DIR=/run/netns
}

src_install() {
if use minimal ; then
into /
dosbin tc/tc
dobin ip/ip
return 0
fi

emake \
DESTDIR="${D}" \
PREFIX="${EPREFIX}/usr" \
LIBDIR="${EPREFIX}"/$(get_libdir) \
SBINDIR="${EPREFIX}"/sbin \
CONFDIR="${EPREFIX}"/etc/iproute2 \
DOCDIR="${EPREFIX}"/usr/share/doc/${PF} \
MANDIR="${EPREFIX}"/usr/share/man \
ARPDDIR="${EPREFIX}"/var/lib/arpd \
install

dodir /bin
mv "${ED}"/{s,}bin/ip || die #330115

dolib.a lib/libnetlink.a
insinto /usr/include
doins include/libnetlink.h
# This local header pulls in a lot of linux headers it
# doesn't directly need. Delete this header that requires
# linux-headers-3.8 until that goes stable. #467716
sed -i '/linux\/netconf.h/d' "${ED}"/usr/include/libnetlink.h || die

if use berkdb ; then
keepdir /var/lib/arpd
# bug 47482, arpd doesn't need to be in /sbin
dodir /usr/bin
mv "${ED}"/sbin/arpd "${ED}"/usr/bin/ || die
elif [[ -d "${ED}"/var/lib/arpd ]]; then
rmdir --ignore-fail-on-non-empty -p "${ED}"/var/lib/arpd || die
fi
}
Loading