summaryrefslogtreecommitdiff
blob: fb544835c4cee4cda3fdbf800965ec12c756339c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-firewall/ipset/ipset-2.3.3a.ebuild,v 1.2 2008/10/14 07:21:01 robbat2 Exp $

inherit eutils versionator toolchain-funcs linux-mod linux-info

DESCRIPTION="IPset tool for iptables, successor to ippool."
HOMEPAGE="http://ipset.netfilter.org/"
SRC_URI="http://ipset.netfilter.org/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86 ~amd64 ~ppc"
IUSE=""
RDEPEND=">=net-firewall/iptables-1.4.1"
DEPEND="${RDEPEND}"

# configurable from outside
[ -z "${IP_NF_SET_MAX}" ] && IP_NF_SET_MAX=256
[ -z "${IP_NF_SET_HASHSIZE}" ] && IP_NF_SET_HASHSIZE=1024
BUILD_PARAMS="IP_NF_SET_MAX=$IP_NF_SET_MAX IP_NF_SET_HASHSIZE=${IP_NF_SET_HASHSIZE}"
# module fun
BUILD_TARGETS="all"
MODULE_NAMES_ARG="kernel/net/ipv4/netfilter:${S}/kernel"
MODULE_NAMES=""
for i in ip_set{,_{{ip,port,macip}map,{ip,net,ipport}hash,iptree{,map}}} \
	ipt_{SET,set}; do
	MODULE_NAMES="${MODULE_NAMES} ${i}(${MODULE_NAMES_ARG})"
done
# sanity
CONFIG_CHECK="NETFILTER"
ERROR_CFG="ipset needs netfilter support in your kernel."

src_unpack() {
	unpack ${A}
	sed -i \
		-e 's/KERNELDIR/(KERNELDIR)/g' \
		-e 's/^(\?KERNEL_\?DIR.*/KERNELDIR ?= /' \
		-e '/^all::/iV ?= 0' \
		-e '/^all::/iKBUILD_OUTPUT ?=' \
		-e 's/$@/ V=$(V) KBUILD_OUTPUT=$(KBUILD_OUTPUT) modules/' \
		"${S}"/kernel/Makefile
	sed -i \
		-e '/asm.semaphore.h/d' \
		"${S}"/kernel/ip_set.c
}

pkg_setup() {
	get_version

	modules=0
	msg=''
	if linux_chkconfig_builtin "MODULES" ; then
		modules=1
		msg="Modular kernel detected, will build kernel modules"
	else
		msg="Nonmodular kernel detected, will not build kernel modules"
	fi
	einfo "${msg}"

	[[ $modules -eq 1 ]] && \
		linux-mod_pkg_setup
	myconf="${myconf} PREFIX="
	myconf="${myconf} LIBDIR=/$(get_libdir)"
	myconf="${myconf} BINDIR=/sbin"
	myconf="${myconf} MANDIR=/usr/share/man"
	myconf="${myconf} INCDIR=/usr/include"
	export myconf
}

src_compile() {
	einfo "Building userspace"
	emake CC="$(tc-getCC)" COPT_FLAGS="${CFLAGS}" ${myconf} binaries || die "failed to build"

	if [[ $modules -eq 1 ]]; then
		einfo "Building kernel modules"
		cd "${S}/kernel"
		export KERNELDIR="${KERNEL_DIR}"
		linux-mod_src_compile || die "failed to build modules"
	fi
}

src_install() {
	einfo "Installing userspace"
	emake DESTDIR="${D}" ${myconf} binaries_install || die "failed to package"

	if [[ $modules -eq 1 ]]; then
		einfo "Installing kernel modules"
		cd "${S}/kernel"
		export KERNELDIR="${KERNEL_DIR}"
		linux-mod_src_install
	fi
}