]> Pileus Git - ~andy/sunrise/blob - net-im/ekg2/ekg2-9999.ebuild
net-im/ekg2: Simplify DEPEND/RDEPEND.
[~andy/sunrise] / net-im / ekg2 / ekg2-9999.ebuild
1 # Copyright 1999-2009 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 EAPI="2"
6 ESVN_REPO_URI="http://toxygen.net/svn/ekg2/trunk"
7
8 inherit multilib perl-module subversion
9
10 DESCRIPTION="Text-based, multi-protocol instant messenger"
11 HOMEPAGE="http://www.ekg2.org"
12
13 LICENSE="GPL-2"
14 SLOT="0"
15 KEYWORDS=""
16 IUSE="dbus extra gadu gif gnutls gpg gpm gsm gtk icq idn inotify irc
17         jabber jogger jpeg mail minimal ncurses nls nntp oracle oss pcap
18         perl python readline remote rss ruby sim sms spell
19         sqlite sqlite3 srv ssl static unicode web xosd zlib"
20
21 # -- non-obvious plugin mappings --
22 # extra     -> autoresponder, polchat, rivchat, rot13, xmsg
23 # !minimal  -> ioctld, logs, rc
24 # any sound -> pcm
25 # web       -> httprc_xajax
26
27 RDEPEND="
28         dbus? ( sys-apps/dbus )
29         gpg? ( app-crypt/gpgme )
30         gsm? ( media-sound/gsm )
31         gtk? ( x11-libs/gtk+:2 )
32         idn? ( net-dns/libidn )
33         nls? ( virtual/libintl )
34         oracle? ( dev-db/oracle-instantclient-basic )
35         pcap? ( net-libs/libpcap )
36         perl? ( dev-lang/perl )
37         python? ( dev-lang/python )
38         readline? ( sys-libs/readline )
39         rss? ( dev-libs/expat )
40         ruby? ( dev-lang/ruby )
41         sim? ( dev-libs/openssl )
42         xosd? ( x11-libs/xosd )
43         gadu? ( net-libs/libgadu
44                 gif? ( media-libs/giflib )
45                 jpeg? ( media-libs/jpeg ) )
46         jabber? ( dev-libs/expat
47                 gnutls? ( net-libs/gnutls )
48                 !gnutls? ( ssl? ( dev-libs/openssl ) )
49                 zlib? ( sys-libs/zlib ) )
50         !minimal? (
51                 zlib? ( sys-libs/zlib ) )
52         ncurses? ( sys-libs/ncurses[unicode?]
53                 gpm? ( sys-libs/gpm )
54                 spell? ( app-text/aspell ) )
55         sqlite3? ( dev-db/sqlite:3 )
56         !sqlite3? ( sqlite? ( dev-db/sqlite:0 ) )"
57
58 DEPEND="dev-util/scons
59         ${RDEPEND}"
60
61 pkg_setup() {
62         if ! use gtk && ! use ncurses && ! use readline && ! use remote && ! use web; then
63                 ewarn 'ekg2 is being compiled without any frontend, you should consider'
64                 ewarn 'enabling at least one of following USEflags:'
65                 ewarn '  gtk, ncurses, readline, remote, web.'
66         fi
67 }
68
69 use_plug() {
70         use $1 && echo -n ,${2:-$1}
71 }
72
73 # Build comma-separated plugin list based on USE
74 # We can put the same plugin few times if it's referenced by more than one flag
75
76 build_plugin_list() {
77         echo '@none' \
78         $(use_plug dbus) \
79         $(use_plug extra autoresponder,polchat,rivchat,rot13,xmsg) \
80         $(use_plug gadu gg) \
81         $(use_plug gpg) \
82         $(use_plug gsm) \
83         $(use_plug gtk) \
84         $(use_plug icq) \
85         $(use_plug irc) \
86         $(use_plug jabber jabber) \
87         $(use_plug jogger jogger) \
88         $(use_plug mail) \
89         $(use_plug !minimal ioctld,logs,rc) \
90         $(use_plug ncurses) \
91         $(use_plug nntp feed) \
92         $(use_plug oracle logsoracle) \
93         $(use_plug oss oss,pcm) \
94         $(use_plug pcap sniff) \
95         $(use_plug perl) \
96         $(use_plug python) \
97         $(use_plug readline) \
98         $(use_plug remote) \
99         $(use_plug rss feed) \
100         $(use_plug ruby) \
101         $(use_plug sim) \
102         $(use_plug sms) \
103         $(use_plug sqlite logsqlite) \
104         $(use_plug sqlite3 logsqlite) \
105         $(use_plug web httprc_xajax) \
106         $(use_plug xosd) \
107                 | tr -d '[[:space:]]'
108 }
109
110 # create DEPS list for plugin
111 # + means dep forced (fail if unavailable, prioritize over other one-of)
112 # - means dep disabled (don't even check for it)
113 # use:opt maps USEflag to specified opt
114 # usea|useb|usec makes one-of opt
115
116 make_deps() {
117         local spls spll flag fopt out
118
119         echo -n " $1_DEPS="
120         shift
121
122         # loop over different opts
123         while [ -n "$1" ]; do
124                 spls=$1
125                 out=
126                 # loop over one-of opts
127                 while true; do
128                         # get next one-of, make sure spls gets empty if last
129                         spll=${spls%%|*}
130                         spls=${spls:$(( ${#spll} + 1 ))}
131                         # parse use:opt, if no :opt specified fopt=flag
132                         flag=${spll%:*}
133                         fopt=${spll#*:}
134
135                         # if one of one-of opt matches, we output only it
136                         # else we need to output all of them disabled
137                         use ${flag} && out=+ || out=${out}-
138                         out=${out}${fopt}
139
140                         # got more one-of opts? parse them only if this didn't match
141                         if [ -n "${spls}" ] && ! use ${flag}; then
142                                 out=${out},
143                                 continue
144                         fi
145
146                         echo -n ${out}
147                         shift
148                         [ -n "$1" ] && echo -n ,
149                         break
150                 done
151         done
152 }
153
154 # create all DEPS lists
155
156 build_addopts_list() {
157         use extra && make_deps XMSG inotify
158         use gadu && make_deps GG gif jpeg
159         use jabber && make_deps JABBER zlib 'gnutls|ssl:openssl'
160         use mail && make_deps MAIL inotify
161         use !minimal && make_deps LOGS zlib
162         use ncurses && make_deps NCURSES gpm spell:aspell
163         use rss || use nntp && make_deps FEED rss:expat
164         use sqlite3 || use sqlite && make_deps LOGSQLITE 'sqlite3|sqlite'
165 }
166
167 # SCons doesn't build perl modules, perl-module.eclass does it better
168
169 foreach_perl_module() {
170         if use perl; then
171                 cd plugins/perl || die 'cd plugins/perl failed'
172                 for DIR in */; do
173                         cd "${DIR}" || die "cd ${DIR} (perl module) failed"
174                         $1
175                         cd ..
176
177                         # workaround perl-module.eclass
178                         unset SRC_PREP
179                 done
180                 cd ../..
181         fi
182 }
183
184 use_var() {
185         echo -n "${2:-$1}=" | tr 'a-z' 'A-Z'
186         use $1 && echo -n '1' || echo -n '0'
187 }
188
189 src_configure() {
190         # HARDDEPS -> build should fail if some dep is unsatisfied
191         # DISTNOTES -> are displayed with /version, helpful for upstream bug reports
192
193         scons PLUGINS=$(build_plugin_list) $(build_addopts_list) \
194                 HARDDEPS=1 $(use_var unicode) $(use_var nls) \
195                 $(use_var static) $(use_var idn) $(use_var srv RESOLV) \
196                 PREFIX=/usr LIBDIR="\$EPREFIX/$(get_libdir)" \
197                 DOCDIR="\$DATAROOTDIR/doc/${PF}" \
198                 DISTNOTES="emdzientoo ebuild ${PVR}, USE=${USE}" \
199                 ${MAKEOPTS} conf || die "scons conf failed"
200
201         foreach_perl_module perl-module_src_configure
202 }
203
204 src_compile() {
205         # SKIPCONF -> no need to reconfigure
206
207         scons SKIPCONF=1 ${MAKEOPTS} || die "scons failed"
208
209         foreach_perl_module perl-module_src_compile
210 }
211
212 src_test() {
213         foreach_perl_module perl-module_src_test
214 }
215
216 src_install() {
217         scons DESTDIR="${D}" ${MAKEOPTS} install || die "scons install failed"
218
219         foreach_perl_module perl-module_src_install
220
221         use perl && fixlocalpod
222         prepalldocs
223 }
224
225 pkg_postinst() {
226         elog "EKG2 is still considered very experimental. Please do report all issues"
227         elog "to mailing list ekg2-users@lists.ziew.org (you can write in English)."
228         elog "Please do not file bugs to Gentoo Bugzilla."
229         elog
230         elog "Before reporting a bug, please check if it's reproducible and get"
231         elog "complete backtrace of it. Even if you can't reproduce it, you may let us"
232         elog "know that something like that happened."
233         elog
234         elog "How to get backtraces:"
235         elog "  http://www.gentoo.org/proj/en/qa/backtraces.xml"
236         elog
237         elog "Thank you and have fun."
238 }