1 |
# Copyright 1999-2010 Gentoo Foundation |
2 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
# $Header: /var/cvsroot/gentoo-x86/www-client/seamonkey/seamonkey-2.0.9.ebuild,v 1.6 2010/10/25 00:33:01 fauli Exp $ |
4 |
|
5 |
EAPI="2" |
6 |
WANT_AUTOCONF="2.1" |
7 |
|
8 |
inherit flag-o-matic toolchain-funcs eutils mozconfig-3 makeedit multilib fdo-mime autotools mozextension java-pkg-opt-2 |
9 |
|
10 |
PATCH="${PN}-2.0.7-patches-01" |
11 |
EMVER="1.0.1" |
12 |
|
13 |
LANGS="be ca cs de en-GB en-US es-AR es-ES fr gl hu it ja ka lt nb-NO nl pl pt-PT ru sk sv-SE tr zh-CN" |
14 |
NOSHORTLANGS="en-GB es-AR es-ES nb-NO pt-PT sv-SE zh-CN" |
15 |
|
16 |
MY_PV="${PV/_pre*}" |
17 |
MY_PV="${MY_PV/_alpha/a}" |
18 |
MY_PV="${MY_PV/_beta/b}" |
19 |
MY_PV="${MY_PV/_rc/rc}" |
20 |
MY_P="${PN}-${MY_PV}" |
21 |
|
22 |
# release versions usually have language packs. So be careful with changing this. |
23 |
HAS_LANGS="true" |
24 |
if [[ ${PV} == *_pre* ]] ; then |
25 |
# pre-releases. No need for arch teams to change KEYWORDS here. |
26 |
|
27 |
REL_URI="ftp://ftp.mozilla.org/pub/mozilla.org/${PN}/nightly/${MY_PV}-candidates/build${PV##*_pre}" |
28 |
#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" |
29 |
KEYWORDS="" |
30 |
#HAS_LANGS="false" |
31 |
else |
32 |
# This is where arch teams should change the KEYWORDS. |
33 |
|
34 |
REL_URI="http://releases.mozilla.org/pub/mozilla.org/${PN}/releases/${MY_PV}" |
35 |
KEYWORDS="~alpha amd64 ~arm hppa ~ia64 ~ppc ~ppc64 ~sparc x86" |
36 |
[[ ${PV} == *alpha* ]] && HAS_LANGS="false" |
37 |
fi |
38 |
|
39 |
DESCRIPTION="Seamonkey Web Browser" |
40 |
HOMEPAGE="http://www.seamonkey-project.org" |
41 |
|
42 |
SLOT="0" |
43 |
LICENSE="|| ( MPL-1.1 GPL-2 LGPL-2.1 )" |
44 |
IUSE="+alsa +chatzilla +composer +crypt java ldap +mailclient +roaming system-sqlite" |
45 |
|
46 |
SRC_URI="${REL_URI}/source/${MY_P}.source.tar.bz2 |
47 |
http://dev.gentoo.org/~polynomial-c/mozilla/patchsets/${PATCH}.tar.bz2 |
48 |
crypt? ( mailclient? ( http://www.mozilla-enigmail.org/download/source/enigmail-${EMVER}.tar.gz ) )" |
49 |
|
50 |
if ${HAS_LANGS} ; then |
51 |
for X in ${LANGS} ; do |
52 |
if [ "${X}" != "en" ] && [ "${X}" != "en-US" ]; then |
53 |
SRC_URI="${SRC_URI} |
54 |
linguas_${X/-/_}? ( ${REL_URI}/langpack/${MY_P}.${X}.langpack.xpi -> ${MY_P}-${X}.xpi )" |
55 |
fi |
56 |
IUSE="${IUSE} linguas_${X/-/_}" |
57 |
# english is handled internally |
58 |
if [ "${#X}" == 5 ] && ! has ${X} ${NOSHORTLANGS}; then |
59 |
if [ "${X}" != "en-US" ]; then |
60 |
SRC_URI="${SRC_URI} |
61 |
linguas_${X%%-*}? ( ${REL_URI}/langpack/${MY_P}.${X}.langpack.xpi -> ${MY_P}-${X}.xpi )" |
62 |
fi |
63 |
IUSE="${IUSE} linguas_${X%%-*}" |
64 |
fi |
65 |
done |
66 |
fi |
67 |
|
68 |
RDEPEND="java? ( virtual/jre ) |
69 |
>=sys-devel/binutils-2.16.1 |
70 |
>=dev-libs/nss-3.12.8 |
71 |
>=dev-libs/nspr-4.8.6 |
72 |
alsa? ( media-libs/alsa-lib ) |
73 |
system-sqlite? ( >=dev-db/sqlite-3.6.22-r2[fts3,secure-delete] ) |
74 |
>=app-text/hunspell-1.2 |
75 |
>=x11-libs/gtk+-2.10.0 |
76 |
>=x11-libs/pango-1.14.0[X] |
77 |
crypt? ( mailclient? ( >=app-crypt/gnupg-1.4 ) )" |
78 |
|
79 |
DEPEND="${RDEPEND} |
80 |
dev-util/pkgconfig |
81 |
java? ( >=virtual/jdk-1.4 )" |
82 |
|
83 |
S="${WORKDIR}/comm-1.9.1" |
84 |
|
85 |
linguas() { |
86 |
local LANG SLANG |
87 |
for LANG in ${LINGUAS}; do |
88 |
if has ${LANG} en en_US; then |
89 |
has en ${linguas} || linguas="${linguas:+"${linguas} "}en" |
90 |
continue |
91 |
elif has ${LANG} ${LANGS//-/_}; then |
92 |
has ${LANG//_/-} ${linguas} || linguas="${linguas:+"${linguas} "}${LANG//_/-}" |
93 |
continue |
94 |
elif [[ " ${LANGS} " == *" ${LANG}-"* ]]; then |
95 |
for X in ${LANGS}; do |
96 |
if [[ "${X}" == "${LANG}-"* ]] && \ |
97 |
[[ " ${NOSHORTLANGS} " != *" ${X} "* ]]; then |
98 |
has ${X} ${linguas} || linguas="${linguas:+"${linguas} "}${X}" |
99 |
continue 2 |
100 |
fi |
101 |
done |
102 |
fi |
103 |
ewarn "Sorry, but ${PN} does not support the ${LANG} LINGUA" |
104 |
done |
105 |
} |
106 |
|
107 |
src_unpack() { |
108 |
unpack ${A} |
109 |
|
110 |
if ${HAS_LANGS} ; then |
111 |
linguas |
112 |
for X in ${linguas}; do |
113 |
# FIXME: Add support for unpacking xpis to portage |
114 |
[[ ${X} != "en" ]] && xpi_unpack "${MY_P}-${X}.xpi" |
115 |
done |
116 |
if [[ ${linguas} != "" && ${linguas} != "en" ]]; then |
117 |
einfo "Selected language packs (first will be default): ${linguas}" |
118 |
fi |
119 |
fi |
120 |
} |
121 |
|
122 |
pkg_setup() { |
123 |
if [[ ${PV} == *_pre* ]] ; then |
124 |
ewarn "You're using an unofficial release of ${PN}. Don't file any bug in" |
125 |
ewarn "Gentoo's Bugtracker against this package in case it breaks for you." |
126 |
ewarn "Those belong to upstream: https://bugzilla.mozilla.org" |
127 |
fi |
128 |
|
129 |
# Ensure we always build with C locale. |
130 |
export LANG="C" |
131 |
export LC_ALL="C" |
132 |
export LC_MESSAGES="C" |
133 |
export LC_CTYPE="C" |
134 |
|
135 |
export BUILD_OFFICIAL=1 |
136 |
export MOZILLA_OFFICIAL=1 |
137 |
|
138 |
java-pkg-opt-2_pkg_setup |
139 |
} |
140 |
|
141 |
src_prepare() { |
142 |
java-pkg-opt-2_src_prepare |
143 |
|
144 |
# Apply our patches |
145 |
EPATCH_SUFFIX="patch" \ |
146 |
EPATCH_FORCE="yes" \ |
147 |
epatch "${WORKDIR}/patch" |
148 |
|
149 |
epatch "${FILESDIR}"/bug-606109.patch |
150 |
|
151 |
if use crypt && use mailclient ; then |
152 |
mv "${WORKDIR}"/enigmail "${S}"/mailnews/extensions/enigmail |
153 |
cd "${S}"/mailnews/extensions/enigmail || die |
154 |
epatch "${FILESDIR}"/enigmail/70_enigmail-fix.patch |
155 |
makemake2 |
156 |
cd "${S}" |
157 |
fi |
158 |
|
159 |
eautoreconf |
160 |
} |
161 |
|
162 |
src_configure() { |
163 |
declare MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" |
164 |
MEXTENSIONS="" |
165 |
|
166 |
#################################### |
167 |
# |
168 |
# mozconfig, CFLAGS and CXXFLAGS setup |
169 |
# |
170 |
#################################### |
171 |
|
172 |
mozconfig_init |
173 |
mozconfig_config |
174 |
|
175 |
# seamonkey has issues with >=x11-libs/cairo-1.10.0 (bug #337813). |
176 |
# If you don't like this blame upstream as they don't care about |
177 |
# anything than their damned bundled shit!!! |
178 |
sed '/--enable-system-cairo/s:enable:disable:' -i "${S}"/.mozconfig \ |
179 |
|| die |
180 |
|
181 |
# It doesn't compile on alpha without this LDFLAGS |
182 |
use alpha && append-ldflags "-Wl,--no-relax" |
183 |
|
184 |
if ! use chatzilla ; then |
185 |
MEXTENSIONS="${MEXTENSIONS},-irc" |
186 |
fi |
187 |
if ! use roaming ; then |
188 |
MEXTENSIONS="${MEXTENSIONS},-sroaming" |
189 |
fi |
190 |
|
191 |
if ! use gnome ; then |
192 |
MEXTENSIONS="${MEXTENSIONS},-gnomevfs" |
193 |
fi |
194 |
|
195 |
if ! use composer ; then |
196 |
if ! use chatzilla && ! use mailclient ; then |
197 |
mozconfig_annotate '-composer' --disable-composer |
198 |
fi |
199 |
fi |
200 |
|
201 |
mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}" |
202 |
mozconfig_annotate '' --enable-application=suite |
203 |
mozconfig_annotate 'broken' --disable-mochitest |
204 |
mozconfig_annotate 'broken' --disable-crashreporter |
205 |
mozconfig_annotate '' --enable-system-hunspell |
206 |
mozconfig_annotate '' --enable-jsd |
207 |
mozconfig_annotate '' --enable-image-encoder=all |
208 |
mozconfig_annotate '' --enable-canvas |
209 |
mozconfig_annotate '' --with-system-nspr |
210 |
mozconfig_annotate '' --with-system-nss |
211 |
mozconfig_annotate '' --with-system-bz2 |
212 |
mozconfig_annotate '' --enable-oji --enable-mathml |
213 |
mozconfig_annotate 'places' --enable-storage --enable-places --enable-places_bookmarks |
214 |
mozconfig_annotate '' --disable-installer |
215 |
mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME} |
216 |
mozconfig_annotate '' --enable-printing |
217 |
|
218 |
# Enable/Disable based on USE flags |
219 |
mozconfig_use_enable alsa ogg |
220 |
mozconfig_use_enable alsa wave |
221 |
mozconfig_use_enable java javaxpcom |
222 |
mozconfig_use_enable ldap |
223 |
mozconfig_use_enable ldap ldap-experimental |
224 |
mozconfig_use_enable mailclient mailnews |
225 |
mozconfig_use_enable system-sqlite |
226 |
|
227 |
# Finalize and report settings |
228 |
mozconfig_final |
229 |
|
230 |
if [[ $(gcc-major-version) -lt 4 ]]; then |
231 |
append-cxxflags -fno-stack-protector |
232 |
fi |
233 |
|
234 |
#################################### |
235 |
# |
236 |
# Configure and build |
237 |
# |
238 |
#################################### |
239 |
|
240 |
# Work around breakage in makeopts with --no-print-directory |
241 |
MAKEOPTS="${MAKEOPTS/--no-print-directory/}" |
242 |
|
243 |
CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" econf |
244 |
} |
245 |
|
246 |
src_compile() { |
247 |
# Should the build use multiprocessing? Not enabled by default, as it tends to break. |
248 |
[ "${WANT_MP}" = "true" ] && jobs=${MAKEOPTS} || jobs="-j1" |
249 |
emake ${jobs} || die |
250 |
|
251 |
# Only build enigmail extension if conditions are met. |
252 |
if use crypt && use mailclient ; then |
253 |
emake -C "${S}"/mailnews/extensions/enigmail || die "make enigmail failed" |
254 |
emake -j1 -C "${S}"/mailnews/extensions/enigmail xpi || die "make enigmail xpi failed" |
255 |
fi |
256 |
} |
257 |
|
258 |
src_install() { |
259 |
declare MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" |
260 |
declare emid |
261 |
|
262 |
emake DESTDIR="${D}" install || die "emake install failed" |
263 |
|
264 |
if use crypt && use mailclient ; then |
265 |
cd "${T}" || die |
266 |
unzip "${S}"/mozilla/dist/bin/enigmail*.xpi install.rdf || die |
267 |
emid=$(sed -n '/<em:id>/!d; s/.*\({.*}\).*/\1/; p; q' install.rdf) |
268 |
|
269 |
dodir ${MOZILLA_FIVE_HOME}/extensions/${emid} || die |
270 |
cd "${D}"${MOZILLA_FIVE_HOME}/extensions/${emid} || die |
271 |
unzip "${S}"/mozilla/dist/bin/enigmail*.xpi || die |
272 |
fi |
273 |
|
274 |
if ${HAS_LANGS} ; then |
275 |
linguas |
276 |
for X in ${linguas}; do |
277 |
[[ ${X} != "en" ]] && xpi_install "${WORKDIR}"/"${MY_P}-${X}" |
278 |
done |
279 |
fi |
280 |
|
281 |
# Install icon and .desktop for menu entry |
282 |
newicon "${S}"/suite/branding/content/icon64.png seamonkey.png || die |
283 |
domenu "${FILESDIR}"/icon/seamonkey.desktop || die |
284 |
|
285 |
# Add StartupNotify=true bug 290401 |
286 |
if use startup-notification ; then |
287 |
echo "StartupNotify=true" >> "${D}"/usr/share/applications/seamonkey.desktop |
288 |
fi |
289 |
|
290 |
# Add our default prefs |
291 |
sed "s|SEAMONKEY_PVR|${PVR}|" "${FILESDIR}"/all-gentoo.js \ |
292 |
> "${D}"${MOZILLA_FIVE_HOME}/defaults/pref/all-gentoo.js |
293 |
|
294 |
# Plugins dir |
295 |
rm -rf "${D}"${MOZILLA_FIVE_HOME}/plugins || die "failed to remove existing plugins dir" |
296 |
dosym ../nsbrowser/plugins "${MOZILLA_FIVE_HOME}"/plugins || die |
297 |
|
298 |
# shiny new man page |
299 |
doman "${S}"/suite/app/${PN}.1 || die |
300 |
} |
301 |
|
302 |
pkg_preinst() { |
303 |
declare MOZILLA_FIVE_HOME="${ROOT}/usr/$(get_libdir)/${PN}" |
304 |
|
305 |
if [ -d ${MOZILLA_FIVE_HOME}/plugins ] ; then |
306 |
rm ${MOZILLA_FIVE_HOME}/plugins -rf |
307 |
fi |
308 |
} |
309 |
|
310 |
pkg_postinst() { |
311 |
declare MOZILLA_FIVE_HOME="/usr/$(get_libdir)/${PN}" |
312 |
|
313 |
# Update mimedb for the new .desktop file |
314 |
fdo-mime_desktop_database_update |
315 |
|
316 |
if use chatzilla ; then |
317 |
elog "chatzilla is now an extension which can be en-/disabled and configured via" |
318 |
elog "the Add-on manager." |
319 |
fi |
320 |
} |