From d3c4a628fbee8ccda9c3500a01c7d817adbb9e4d Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Wed, 19 Jan 2011 02:06:32 +0100 Subject: [PATCH] iproute2: fix compiling tc helper libs First of all, tc may support iptables if available. Dedicate a sub-package for the libs generated then, so the plain tc package will always contain the same stuff regardless of whether iptables is there or not. Given the right options, iproute2 is indeed able to detect iptables and libatm, so do that instead of using a shipped Config file. Patches updated as a nice side effect. Signed-off-by: Phil Sutter --- package/iproute2/Makefile | 20 +++++---- package/iproute2/files/Config | 2 - package/iproute2/patches/patch-Makefile | 8 ++-- package/iproute2/patches/patch-configure | 59 +++++++++++++++++++++++---- package/iproute2/patches/patch-netem_Makefile | 6 +-- 5 files changed, 69 insertions(+), 26 deletions(-) delete mode 100644 package/iproute2/files/Config diff --git a/package/iproute2/Makefile b/package/iproute2/Makefile index f0c815e59..8ce92d5e2 100644 --- a/package/iproute2/Makefile +++ b/package/iproute2/Makefile @@ -5,20 +5,23 @@ include ${TOPDIR}/rules.mk PKG_NAME:= iproute2 PKG_VERSION:= 2.6.37 -PKG_RELEASE:= 1 +PKG_RELEASE:= 2 PKG_MD5SUM:= 9774ff9d74ebd301bf56bd8d74473786 PKG_DESCR:= iproute2 routing control utility PKG_SECTION:= route PKG_URL:= http://www.linuxfoundation.org/en/Net:Iproute2 PKG_SITES:= http://devresources.linuxfoundation.org/dev/iproute2/download/ -PKG_SUBPKGS:= IP TC TC_ATM IFSTAT LNSTAT ROUTEL RTMON SS +PKG_SUBPKGS:= IP TC TC_ATM TC_IPT IFSTAT LNSTAT ROUTEL RTMON SS PKGSD_TC:= iproute2 traffic control utility PKGSS_TC:= kmod-sched PKGSB_TC:= iptables PKGSD_TC_ATM:= iproute2 traffic control ATM support library PKGSS_TC_ATM:= tc libatm PKGSB_TC_ATM:= linux-atm +PKGSD_TC_IPT:= iproute 2 traffic control IPTables support library +PKGSS_TC_IPT:= tc iptables +PKGSB_TC_IPT:= iptables PKGSD_IFSTAT:= iproute2 interface statistics utility PKGSD_LNSTAT:= iproute2 network statistics utilities PKGSD_ROUTEL:= iproute2 route list and flush utilities @@ -32,6 +35,7 @@ include ${TOPDIR}/mk/package.mk $(eval $(call PKG_template,IP,ip,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) $(eval $(call PKG_template,TC,tc,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC},${PKGSD_TC},${PKG_SECTION})) $(eval $(call PKG_template,TC_ATM,tc-atm,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC_ATM},${PKGSD_TC_ATM},${PKG_SECTION})) +$(eval $(call PKG_template,TC_IPT,tc-iptables,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_TC_IPT},${PKGSD_TC_IPT},${PKG_SECTION})) $(eval $(call PKG_template,IFSTAT,ifstat,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_IFSTAT},${PKG_SECTION})) $(eval $(call PKG_template,LNSTAT,lnstat,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_LNSTAT},${PKG_SECTION})) $(eval $(call PKG_template,ROUTEL,routel,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_ROUTEL},${PKG_SECTION})) @@ -41,10 +45,7 @@ $(eval $(call PKG_template,SS,ss,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_SS},${PK TCFLAGS+= -D_GNU_SOURCE XAKE_FLAGS+= CCOPTS="${TCFLAGS}" MFLAGS="CC=${TARGET_CC}" \ HOSTCFLAGS="-I${LINUX_HEADER_DIR}/include" -CONFIGURE_FLAGS+= KERNEL_INCLUDE="${LINUX_DIR}/include" - -post-configure: - $(CP) ./files/Config $(WRKBUILD)/ +CONFIGURE_ENV+= IPTC="${TARGET_CFLAGS}" IPTL="${TARGET_LDFLAGS}" ip-install: ${INSTALL_DIR} ${IDIR_IP}/{etc/iproute2,usr/sbin} @@ -53,8 +54,6 @@ ip-install: tc-install: ${INSTALL_DIR} ${IDIR_TC}/{lib/tc,usr/sbin,usr/lib/tc} - # use ${CP} here, since m_ipt.so is a symlink to m_xt.so - ${CP} ${WRKINST}/lib/tc/m_*.so ${IDIR_TC}/lib/tc/ ${CP} ${WRKINST}/usr/lib/tc/*.dist ${IDIR_TC}/usr/lib/tc/ ${INSTALL_BIN} ${WRKINST}/sbin/tc ${IDIR_TC}/usr/sbin/ @@ -63,6 +62,11 @@ tc-atm-install: ${INSTALL_DATA} ${WRKINST}/lib/tc/q_atm.so \ ${IDIR_TC_ATM}/lib/tc/ +tc-iptables-install: + ${INSTALL_DIR} ${IDIR_TC_IPT}/lib/tc + # use ${CP} here, since m_ipt.so is a symlink to m_xt.so + ${CP} ${WRKINST}/lib/tc/m_*.so ${IDIR_TC}/lib/tc/ + ifstat-install: ${INSTALL_DIR} ${IDIR_IFSTAT}/usr/sbin ${INSTALL_BIN} ${WRKINST}/sbin/ifstat ${IDIR_IFSTAT}/usr/sbin diff --git a/package/iproute2/files/Config b/package/iproute2/files/Config deleted file mode 100644 index 0ba7d387d..000000000 --- a/package/iproute2/files/Config +++ /dev/null @@ -1,2 +0,0 @@ -TC_CONFIG_ATM:=y -TC_CONFIG_XT:=y diff --git a/package/iproute2/patches/patch-Makefile b/package/iproute2/patches/patch-Makefile index 841c6f32e..d84ffa57b 100644 --- a/package/iproute2/patches/patch-Makefile +++ b/package/iproute2/patches/patch-Makefile @@ -3,9 +3,9 @@ overriding CCOPTS instead wont work, as this variable is being used to compile host-utils in netem/ - define LIBUTIL for misc/ss to compile correctly ---- iproute2-2.6.29-1.orig/Makefile 2009-03-24 23:40:54.000000000 +0100 -+++ iproute2-2.6.29-1/Makefile 2009-11-25 08:59:58.000000000 +0100 -@@ -20,10 +20,10 @@ ADDLIB+=dnet_ntop.o dnet_pton.o +--- iproute2-2.6.37.orig/Makefile 2011-01-07 18:54:30.000000000 +0100 ++++ iproute2-2.6.37/Makefile 2011-01-18 02:19:41.379921947 +0100 +@@ -27,10 +27,10 @@ ADDLIB+=dnet_ntop.o dnet_pton.o #options for ipx ADDLIB+=ipx_ntop.o ipx_pton.o @@ -20,7 +20,7 @@ YACCFLAGS = -d -t -v LDLIBS += -L../lib -lnetlink -lutil -@@ -31,6 +31,7 @@ LDLIBS += -L../lib -lnetlink -lutil +@@ -38,6 +38,7 @@ LDLIBS += -L../lib -lnetlink -lutil SUBDIRS=lib ip tc misc netem genl LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a diff --git a/package/iproute2/patches/patch-configure b/package/iproute2/patches/patch-configure index 38586090d..a5cf58b45 100644 --- a/package/iproute2/patches/patch-configure +++ b/package/iproute2/patches/patch-configure @@ -1,30 +1,71 @@ - use the compiler passed in $CC ---- iproute2-2.6.29-1.orig/configure 2009-03-24 23:40:54.000000000 +0100 -+++ iproute2-2.6.29-1/configure 2009-08-22 02:23:52.642364236 +0200 -@@ -16,7 +16,7 @@ int main(int argc, char **argv) { + - use the compiler passed in $CC + - predefine iptables modules dir, since the check would + always fail (cause of absolute search paths) and OpenADK + (for now) doesn't compile iptables with shared objects + - do not discard compiler output from tests, they're useful + for debugging + - additionally output the full compiler command before running + it +--- iproute2-2.6.37.orig/configure 2011-01-07 18:54:30.000000000 +0100 ++++ iproute2-2.6.37/configure 2011-01-18 02:37:39.800716449 +0100 +@@ -15,7 +15,8 @@ int main(int argc, char **argv) { return 0; } EOF -gcc -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm >/dev/null 2>&1 -+$CC -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm >/dev/null 2>&1 ++echo "$CC -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm" ++$CC -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm if [ $? -eq 0 ] then echo "TC_CONFIG_ATM:=y" >>Config -@@ -49,7 +49,7 @@ int main(int argc, char **argv) { +@@ -49,7 +50,8 @@ int main(int argc, char **argv) + + EOF + +-if gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl -lxtables >/dev/null 2>&1 ++echo "$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl -lxtables" ++if $CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl -lxtables + then + echo "TC_CONFIG_XT:=y" >>Config + echo "using xtables" +@@ -86,7 +88,8 @@ int main(int argc, char **argv) { } EOF -gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1 -+$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1 ++echo "$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl" ++$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl if [ $? -eq 0 ] then -@@ -81,7 +81,7 @@ int main(int argc, char **argv) { +@@ -126,7 +129,8 @@ int main(int argc, char **argv) { } EOF -gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1 -+$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1 ++echo "$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl" ++$CC -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl if [ $? -eq 0 ] then +@@ -149,18 +153,8 @@ check_ipt() + + check_ipt_lib_dir() + { +- IPT_LIB_DIR="" +- for dir in /lib /usr/lib /usr/local/lib +- do +- for file in $dir/$TABLES/lib*t_*so ; do +- if [ -f $file ]; then +- echo $dir/$TABLES +- echo "IPT_LIB_DIR:=$dir/$TABLES" >> Config +- return +- fi +- done +- done +- echo "not found!" ++ echo "/usr/lib/$TABLES" ++ echo "IPT_LIB_DIR:=/usr/lib/$TABLES" >> Config + } + + echo "# Generated config based on" $INCLUDE >Config diff --git a/package/iproute2/patches/patch-netem_Makefile b/package/iproute2/patches/patch-netem_Makefile index 325d01925..b0aa792f7 100644 --- a/package/iproute2/patches/patch-netem_Makefile +++ b/package/iproute2/patches/patch-netem_Makefile @@ -1,5 +1,5 @@ ---- iproute2-2.6.29-1.orig/netem/Makefile 2009-03-24 23:40:54.000000000 +0100 -+++ iproute2-2.6.29-1/netem/Makefile 2009-12-11 16:39:15.000000000 +0100 +--- iproute2-2.6.37.orig/netem/Makefile 2011-01-07 18:54:30.000000000 +0100 ++++ iproute2-2.6.37/netem/Makefile 2011-01-18 02:19:41.386925447 +0100 @@ -2,13 +2,13 @@ DISTGEN = maketable normal pareto pareto DISTDATA = normal.dist pareto.dist paretonormal.dist experimental.dist @@ -24,4 +24,4 @@ + $(HOSTCC) $(HOSTCFLAGS) -I../include -o $@ $@.c -lm install: all - mkdir -p $(DESTDIR)/lib/tc + mkdir -p $(DESTDIR)$(LIBDIR)/tc -- 2.11.4.GIT