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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-analyzer/smokeping/smokeping-2.4.2-r4.ebuild,v 1.5 2012/06/12 03:14:47 zmedico Exp $
EAPI="2"
inherit perl-module user
DESCRIPTION="A powerful latency measurement tool."
HOMEPAGE="http://oss.oetiker.ch/smokeping/"
SRC_URI="http://oss.oetiker.ch/smokeping/pub/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~hppa ~x86"
IUSE="apache2 speedy"
# dev-perl/JSON-1.x is bundled and is incompatible with version 2.x wich is in
# the tree. See http://bugs.gentoo.org/show_bug.cgi?id=260170#c2
DEPEND="dev-lang/perl
virtual/perl-libnet
>=net-analyzer/rrdtool-1.2[perl]
>=net-analyzer/fping-2.4_beta2-r2
dev-perl/Config-Grammar
dev-perl/Digest-HMAC
dev-perl/libwww-perl
dev-perl/CGI-Session
>=dev-perl/SNMP_Session-1.13
>=dev-perl/Socket6-0.20
dev-perl/Net-DNS
speedy? ( dev-perl/SpeedyCGI )
!apache2? ( virtual/httpd-cgi )
apache2? ( >=www-apache/mod_perl-2.0.1 )"
RDEPEND="${DEPEND}"
pkg_setup() {
enewgroup smokeping
enewuser smokeping -1 -1 /var/lib/smokeping smokeping
}
src_prepare() {
rm -rf lib/Digest # provided by dev-perl/Digest-HMAC
rm -rf lib/CGI # provided by dev-perl/CGI-Session
rm -rf lib/Config # provided by dev-perl/Config-Grammar
rm -r lib/{BER.pm,SNMP_Session.pm,SNMP_util.pm} # dev-perl/SNMP_Session
rm qooxdoo/qooxdoolink
PERL5SMOKEPING="/usr/share/${PN}/perl5"
sed -i "/^use strict;/a\use lib '${PERL5SMOKEPING}';" \
"${S}"/lib/Qooxdoo/JSONRPC.pm || die
}
src_compile() {
# There is a makefile we don't want to run so leave this here
einfo "Skip compile."
}
src_install() {
# Install JSON-1 outside of perl's @INC path
insinto ${PERL5SMOKEPING}
doins lib/JSON.pm
insinto ${PERL5SMOKEPING}/JSON
doins -r lib/JSON/*
rm -r lib/JSON lib/JSON.pm
# Install the remaining perl modules into the vendor lib area of Perl
perlinfo
insinto ${VENDOR_LIB}/
doins -r lib/*
# Install the CGI webserver scripts
sed 's:^use lib:#use lib:g' -i htdocs/*.cgi.dist
if use speedy; then
sed '1{s:/usr/[^ ]*:/usr/bin/speedy:}' -i htdocs/*.cgi.dist
else
sed '1{s:/usr/[^ ]*:/usr/bin/perl:}' -i htdocs/*.cgi.dist
fi
sed 's:/home/oetiker.*/config.dist:/etc/smokeping/config:' \
-i htdocs/*.cgi.dist
exeinto /var/www/localhost/perl/
newexe htdocs/smokeping.cgi.dist smokeping.pl || die
exeinto /var/www/localhost/smokeping
newexe htdocs/tr.cgi.dist tr.cgi || die
rm htdocs/{tr,smokeping}.cgi.dist
# Install AJAX scripts
insinto /var/www/localhost/smokeping
doins -r htdocs/* || die
# Create the smokeping binaries
for bin in ${PN} tSmoke; do
newbin bin/${bin}.dist ${bin}
dosed 's:^use lib:#use lib:g' /usr/bin/${bin}
dosed 's:etc/config.dist:/etc/smokeping/config:' /usr/bin/${bin}
done
# Create the config files
insinto /etc/${PN}
for file in etc/*; do
config=${file/.dist}
newins ${file} ${config#*/}
done
sed -e '/^imgcache/{s:\(^imgcache[ \t]*=\).*:\1 /var/lib/smokeping/.simg:}' \
-e '/^imgurl/{s:\(^imgurl[ \t]*=\).*:\1 ../.simg:}' \
-e '/^datadir/{s:\(^datadir[ \t]*=\).*:\1 /var/lib/smokeping:}' \
-e '/^piddir/{s:\(^piddir[ \t]*=\).*:\1 /var/run/smokeping:}' \
-e '/^cgiurl/{s#\(^cgiurl[ \t]*=\).*#\1 http://some.place.xyz/perl/smokeping.pl#}' \
-e '/^smokemail/{s:\(^smokemail[ \t]*=\).*:\1 /etc/smokeping/smokemail:}' \
-e '/^tmail/{s:\(^tmail[ \t]*=\).*:\1 /etc/smokeping/tmail:}' \
-e '/^secrets/{s:\(^secrets[ \t]*=\).*:\1 /etc/smokeping/smokeping_secrets:}' \
-e '/^template/{s:\(^template[ \t]*=\).*:\1 /etc/smokeping/basepage.html:}' \
-i "${D}/etc/${PN}/config" || die
sed -e '/^<script/{s:cropper/:/cropper/:}' -i "${D}/etc/${PN}/basepage.html"
fperms 700 /etc/${PN}/smokeping_secrets
newinitd "${FILESDIR}/${PN}.init.2" ${PN} || die
if use apache2 ; then
insinto /etc/apache2/modules.d
doins "${FILESDIR}/79_${PN}.conf" || die
fi
# Create the files in /var for rrd file storage
keepdir /var/lib/${PN}/.simg
fowners smokeping:smokeping /var/lib/${PN}
if use apache2 ; then
fowners apache:apache /var/lib/${PN}/.simg
else
fowners smokeping:smokeping /var/lib/${PN}/.simg
fi
fperms 775 /var/lib/${PN} /var/lib/${PN}/.simg
# Install documentation.
insinto "/usr/share/doc/${PF}"
doins -r doc/examples
dodoc CHANGES CONTRIBUTORS README TODO || die
doman doc/{smokeping{.1,.cgi.1,_config.5},Smokeping.3,smokeping_examples.7} \
doc/{smokeping_{extend,install,master_slave,upgrade}.7,smoketrace.7} \
doc/{tSmoke.1,Smokeping/Smokeping::{Examples,RRDtools}.3} || die
}
pkg_postinst() {
chown smokeping:smokeping "${ROOT}/var/lib/${PN}"
chmod 755 "${ROOT}/var/lib/${PN}"
elog
elog "Additional steps are needed to get ${PN} up & running:"
elog
elog "First you need to edit /etc/${PN}/config. After that"
elog "you can start ${PN} with '/etc/init.d/${PN} start'."
elog
if use apache2 ; then
elog "For web interface make sure to add -D PERL to APACHE2_OPTS in"
elog "/etc/conf.d/apache2 and to restart apache2. To access site from"
elog "other places check permissions at /etc/apache2/modules.d/79_${PN}.conf"
elog
else
elog "For web interface configure your web server to serve perl cgi"
elog "script at /var/www/localhost/perl/"
fi
elog "To make cropper working you just need to copy /var/www/localhost/smokeping/cropper"
elog "into you htdocs (or create symlink and allow webserver to follow symlinks)."
elog
elog "We install all files required for smoketrace, but you have to"
elog "configure it manually. Just read 'man smoketrace'. Also you need to"
elog "'emerge traceroute'."
elog
}
|