Просмотр исходного кода

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 <phil@nwl.cc>
Phil Sutter 14 лет назад
Родитель
Сommit
d3c4a628fb

+ 12 - 8
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

+ 0 - 2
package/iproute2/files/Config

@@ -1,2 +0,0 @@
-TC_CONFIG_ATM:=y
-TC_CONFIG_XT:=y

+ 4 - 4
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

+ 50 - 9
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

+ 3 - 3
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