summaryrefslogtreecommitdiff
blob: 7daf4bc8df1b76f79aeee3aaab9227000c3c79f9 (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-admin/ulogd/ulogd-1.24-r2.ebuild,v 1.1 2009/08/12 07:06:13 wormo Exp $

EAPI="1"

inherit eutils flag-o-matic autotools

DESCRIPTION="A userspace logging daemon for netfilter/iptables related logging"
HOMEPAGE="http://netfilter.org/projects/ulogd/index.html"
SRC_URI="http://ftp.netfilter.org/pub/ulogd/${P}.tar.bz2
	mirror://gentoo/${PN}-glsa-200805.patch.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ia64 ~ppc -sparc ~x86"
IUSE="mysql postgres sqlite"

DEPEND="net-firewall/iptables
	mysql? ( virtual/mysql )
	postgres? ( virtual/postgresql-base )
	sqlite? ( dev-db/sqlite:3 )"
RDEPEND="${DEPEND}
	net-libs/libpcap"

pkg_setup() {
	enewgroup ulogd
	enewuser ulogd -1 -1 /var/log/ulogd ulogd
}

src_unpack() {
	unpack ${A} || die "unpack failed"
	cd "${S}" || die "dir ${S} not found"

	# enables logfiles over 2G (#74924)
	append-lfs-flags

	epatch "${DISTDIR}/${PN}-glsa-200805.patch.bz2"

	# add syslog example to ulogd.conf,
	# make logrotate config match default paths in ulogd.conf
	epatch "${FILESDIR}/${P}-syslog-and-logrotate.patch"

	# switch plugin makefiles to use $(CC) instead of $(LD) for linking
	# (prevents build from choking on stuff like "LDFLAGS=-Wl,O1")
	for p in pgsql sqlite3 extensions mysql pcap ; do
		f=$p/Makefile.in
		sed -i -e 's/$(LD)/$(CC) -nostartfiles/' $f || die "failed to update $f"
	done

	ewarn "Regenerating build system (this may take a bit)..."
	eautoconf || die "Autoreconf failed"
	econf \
		$(use_with mysql) \
		$(use_with postgres pgsql) \
		$(use_with sqlite sqlite3) \
		|| die "configure failed"

	# Configure uses incorrect syntax for ld
	use mysql && sed -i -e "s:-Wl,::g;s:-rdynamic::g" Rules.make
}

src_compile() {
	# not parallel make safe: bug #128976
	emake -j1 || die "make failed"
}

src_install() {
	# the Makefile seems to be "broken" -
	# it relies on the existance of /usr, /etc ..
	dodir /usr/sbin

	make DESTDIR="${D}" install || die "install failed"

	# make sure ulogd.conf is readable by ulogd user
	fowners root:ulogd /etc/ulogd.conf
	fperms 640 /etc/ulogd.conf

	newinitd "${FILESDIR}"/ulogd-0.98 ulogd
	local UsedServices="use"
	use mysql  && UsedServices+=" mysql"
	use postgres && UsedServices+=" postgresql"
	if  [[ ${UsedServices} = "use" ]]; then
	    UsedServices=""
	fi
	sed -i -e "s:use mysql:${UsedServices}:g" "${D}/etc/init.d/ulogd" || die "sed failed"

	# install logrotate config
	insinto /etc/logrotate.d
	newins ulogd.logrotate ulogd || die "logrotate config failed"

	dodoc README AUTHORS Changes
	cd doc/
	dodoc ulogd.txt ulogd.a4.ps

	use mysql && dodoc mysql.table mysql.table.ipaddr-as-string
	use postgres && dodoc pgsql.table
	use sqlite && dodoc sqlite3.table

	dohtml ulogd.html
}

pkg_postinst() {
	chown root:ulogd /etc/ulogd.conf
	chmod 640        /etc/ulogd.conf
}