# TODO:
# - separate spec for enigmail
# - build with system mozldap
-# - enigmail - new version needed
#
# Conditional builds
%bcond_without enigmail # don't build enigmail - GPG/PGP support
%bcond_without gnome # alias for gnomeui
%bcond_without ldap # disable e-mail address lookups in LDAP directories
%bcond_without lightning # disable Sunbird/Lightning calendar
-%bcond_without xulrunner # build with xulrunner
+%bcond_with xulrunner # system xulrunner
%bcond_with crashreporter # report crashes to crash-stats.mozilla.com
%if %{without gnome}
%undefine crashreporter
%endif
-%define enigmail_ver 1.3.5
-%define nspr_ver 4.8.8
-%define nss_ver 3.12.10
+%define enigmail_ver 1.5.1
+%define nspr_ver 4.9.3
+%define nss_ver 3.14.1
-# convert firefox release number to platform version: 9.0.x -> 9.0.x
-%define xulrunner_main 10.0
-%define xulrunner_ver %(v=%{version}; echo %{xulrunner_main}${v#10.0})
+%define xulrunner_ver 2:17.0
%if %{without xulrunner}
# The actual sqlite version (see RHBZ#480989):
Summary: Icedove - email client
Summary(pl.UTF-8): Icedove - klient poczty
Name: icedove
-Version: 10.0.1
+Version: 17.0.7
Release: 1
License: MPL 1.1 or GPL v2+ or LGPL v2.1+
-Group: X11/Applications/Networking
+Group: X11/Applications/Mail
Source0: http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.bz2
-# Source0-md5: 623c32d9deae370383e1422b1ea48061
+# Source0-md5: 31f07c3911d1d6772831195af64db963
Source1: http://www.mozilla-enigmail.org/download/source/enigmail-%{enigmail_ver}.tar.gz
-# Source1-md5: 1b008b0d106e238c11e4bead08126bc0
+# Source1-md5: 3e71f84ed2c11471282412ebe4f5eb2d
Source2: %{name}-branding.tar.bz2
# Source2-md5: 2da351522bdd7f4a3bd8aaff4c776976
Source3: %{name}-rm_nonfree.sh
Source5: %{name}.sh
Patch0: %{name}-branding.patch
Patch1: %{name}-enigmail-shared.patch
-Patch2: %{name}-gcc.patch
Patch3: %{name}-fonts.patch
Patch4: %{name}-install.patch
Patch5: %{name}-hunspell.patch
Patch6: %{name}-prefs.patch
Patch7: system-mozldap.patch
Patch8: %{name}-makefile.patch
-#Patch9: %{name}-libpng.patch
+Patch9: system-cairo.patch
Patch10: %{name}-extensiondir.patch
Patch11: crashreporter.patch
Patch12: no-subshell.patch
+# Edit patch below and restore --system-site-packages when system virtualenv gets 1.7 upgrade
+Patch13: system-virtualenv.patch
+Patch14: gyp-slashism.patch
URL: http://www.pld-linux.org/Packages/Icedove
BuildRequires: GConf2-devel >= 1.2.1
BuildRequires: alsa-lib-devel
%{?with_gnomeui:BuildRequires: libgnome-keyring-devel}
%{?with_gnomeui:BuildRequires: libgnomeui-devel >= 2.2.0}
BuildRequires: libiw-devel
+# requires libjpeg-turbo implementing at least libjpeg 6b API
BuildRequires: libjpeg-devel >= 6b
+BuildRequires: libjpeg-turbo-devel
BuildRequires: libnotify-devel >= 0.4
BuildRequires: libpng-devel >= 1.4.1
BuildRequires: libstdc++-devel
BuildRequires: nspr-devel >= 1:%{nspr_ver}
BuildRequires: nss-devel >= 1:%{nss_ver}
-BuildRequires: pango-devel >= 1:1.1.0
+BuildRequires: pango-devel >= 1:1.14.0
BuildRequires: perl-base >= 1:5.6
BuildRequires: pkgconfig
BuildRequires: python >= 1:2.5
BuildRequires: yasm
BuildRequires: zip
%if %{with xulrunner}
-BuildRequires: xulrunner-devel >= 2:%{xulrunner_ver}
+BuildRequires: xulrunner-devel >= %{xulrunner_ver}
+BuildRequires: xulrunner-devel < 2:18
%else
Requires: myspell-common
Requires: nspr >= 1:%{nspr_ver}
%if %{with xulrunner}
%requires_eq_to xulrunner xulrunner-devel
%endif
+Requires: libjpeg-turbo
Obsoletes: mozilla-thunderbird
Obsoletes: mozilla-thunderbird-dictionary-en-US
+Conflicts: icedove-lang-resources < %{version}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define filterout_cpp -D_FORTIFY_SOURCE=[0-9]+
# iceweasel/icedove/iceape provide their own versions
-%define _noautoreqdep libgfxpsshar.so libgkgfx.so libgtkxtbin.so libjsj.so libxpcom_compat.so libxpistub.so
%define _noautoprovfiles %{_libdir}/%{name}/components
-# we don't want these to satisfy xulrunner-devel
-%define _noautoprov libgtkembedmoz.so libmozjs.so libxpcom.so libxul.so libxpcom_core.so
+%if %{without xulrunner}
+# we don't want these to satisfy packages depending on xulrunner
+%define _noautoprov libmozalloc.so libxpcom.so libxul.so
# and as we don't provide them, don't require either
-%define _noautoreq libgtkembedmoz.so libmozjs.so libxpcom.so libxul.so libxpcom_core.so
+%define _noautoreq libmozalloc.so libxpcom.so libxul.so
+%endif
%define topdir %{_builddir}/%{name}-%{version}
%define objdir %{topdir}/obj-%{_target_cpu}
%prep
%setup -qc
-mv comm-release mozilla
+mv comm-esr17 mozilla
%setup -q -T -D -a2
cd mozilla
%{?with_enigmail:%{__gzip} -dc %{SOURCE1} | %{__tar} -xf - -C mailnews/extensions}
/bin/sh %{SOURCE3}
%patch0 -p1
%{?with_enigmail:%patch1 -p1}
-%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p2
-#%patch9 -p1
+%patch9 -p1
%patch10 -p2
%patch11 -p2
%patch12 -p1
+%patch13 -p1
+%patch14 -p1
%build
cd mozilla
cp -f %{_datadir}/automake/config.* mozilla/nsprpub/build/autoconf
cp -f %{_datadir}/automake/config.* ldap/sdks/c-sdk/config/autoconf
-install -d libxul-sdk
-ln -snf %{_libdir}/xulrunner-sdk libxul-sdk/sdk
-
cat << EOF > .mozconfig
mk_add_options MOZ_OBJDIR=%{objdir}
-export CFLAGS="%{rpmcflags} -fpermissive -I/usr/include/xulrunner"
-export CXXFLAGS="%{rpmcflags} -fpermissive -I/usr/include/xulrunner"
+export CFLAGS="%{rpmcflags}"
+export CXXFLAGS="%{rpmcflags}"
%if %{with crashreporter}
export MOZ_DEBUG_SYMBOLS=1
ac_add_options --disable-calendar
%endif
ac_add_options --disable-installer
-ac_add_options --disable-jsd
ac_add_options --disable-updater
ac_add_options --disable-xprint
ac_add_options --disable-permissions
ac_add_options --with-distribution-id=org.pld-linux
ac_add_options --with-branding=icedove/branding
%if %{with xulrunner}
-#ac_add_options --with-libxul-sdk=$(pwd)/libxul-sdk/sdk
+ac_add_options --enable-shared-js
+ac_add_options --with-libxul-sdk=$(pkg-config --variable=sdkdir libxul)
ac_add_options --with-system-libxul
-ac_add_options --enable-shared
-ac_add_options --enable-libxul
-%else
-ac_add_options --disable-xul
%endif
ac_add_options --with-pthreads
ac_add_options --with-system-bz2
%{__make} -j1 -f client.mk build \
STRIP="/bin/true" \
MOZ_MAKE_FLAGS="%{?_smp_mflags}" \
+ XLIBS="-lX11 -lXt" \
CC="%{__cc}" \
CXX="%{__cxx}"
STRIP="/bin/true" \
CC="%{__cc}" \
CXX="%{__cxx}"
+
+%{__make} -C %{objdir}/mailnews/extensions/enigmail xpi \
+ STRIP="/bin/true" \
+ CC="%{__cc}" \
+ CXX="%{__cxx}"
%endif
%install
MOZ_PKG_DIR=%{_libdir}/%{name} \
PKG_SKIP_STRIP=1
-# Enable crash reporter for Firefox application
+%if %{with xulrunner}
+# needed to find mozilla runtime
+ln -s ../xulrunner $RPM_BUILD_ROOT%{_libdir}/%{name}/xulrunner
+%endif
+
+# Enable crash reporter for Thunderbird application
%if %{with crashreporter}
%{__sed} -i -e 's/\[Crash Reporter\]/[Crash Reporter]\nEnabled=1/' $RPM_BUILD_ROOT%{_libdir}/%{name}/application.ini
mv $RPM_BUILD_ROOT%{_libdir}/%{name}/defaults $RPM_BUILD_ROOT%{_datadir}/%{name}/defaults
mv $RPM_BUILD_ROOT%{_libdir}/%{name}/isp $RPM_BUILD_ROOT%{_datadir}/%{name}/isp
mv $RPM_BUILD_ROOT%{_libdir}/%{name}/modules $RPM_BUILD_ROOT%{_datadir}/%{name}/modules
-mv $RPM_BUILD_ROOT%{_libdir}/%{name}/res $RPM_BUILD_ROOT%{_datadir}/%{name}/res
+mv $RPM_BUILD_ROOT%{_libdir}/%{name}/searchplugins $RPM_BUILD_ROOT%{_datadir}/%{name}/searchplugins
ln -s ../../share/%{name}/chrome $RPM_BUILD_ROOT%{_libdir}/%{name}/chrome
ln -s ../../share/%{name}/defaults $RPM_BUILD_ROOT%{_libdir}/%{name}/defaults
ln -s ../../share/%{name}/isp $RPM_BUILD_ROOT%{_libdir}/%{name}/isp
ln -s ../../share/%{name}/modules $RPM_BUILD_ROOT%{_libdir}/%{name}/modules
+ln -s ../../share/%{name}/searchplugins $RPM_BUILD_ROOT%{_libdir}/%{name}/searchplugins
+%if %{without xulrunner}
+mv $RPM_BUILD_ROOT%{_libdir}/%{name}/res $RPM_BUILD_ROOT%{_datadir}/%{name}/res
ln -s ../../share/%{name}/res $RPM_BUILD_ROOT%{_libdir}/%{name}/res
+%endif
# dir for arch independant extensions besides arch dependant extensions
# see mozilla/xpcom/build/nsXULAppAPI.h
# XRE_SYS_LOCAL_EXTENSION_PARENT_DIR and XRE_SYS_SHARE_EXTENSION_PARENT_DIR
install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/extensions
+%if %{without xulrunner}
%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries
ln -s %{_datadir}/myspell $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries
-
%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{name}/hyphenation
ln -s %{_datadir}/myspell $RPM_BUILD_ROOT%{_libdir}/%{name}/hyphenation
+%endif
+
+%{__sed} -e "s|%MOZAPPDIR%|%{_libdir}/%{name}|" \
+ -e "s|%MOZ_APP_DISPLAYNAME%|Icedove|" \
+ %{topdir}/mozilla/mozilla/build/unix/mozilla.in > $RPM_BUILD_ROOT%{_libdir}/%{name}/icedove
%{__sed} -e 's,@LIBDIR@,%{_libdir},' %{SOURCE5} > $RPM_BUILD_ROOT%{_bindir}/icedove
ln -s %{name} $RPM_BUILD_ROOT%{_bindir}/thunderbird
%if %{with enigmail}
ext_dir=$RPM_BUILD_ROOT%{_libdir}/%{name}/extensions/\{847b3a00-7ab1-11d4-8f02-006008948af5\}
-install -d $ext_dir/{chrome,components,defaults/preferences}
+install -d $ext_dir/{chrome,components,defaults/preferences,modules}
cd mozilla/dist/bin
-#cp -rfLp chrome/enigmail.jar $ext_dir/chrome
-#cp -rfLp chrome/enigmime.jar $ext_dir/chrome
+cp -rfLp chrome/enigmail.jar $ext_dir/chrome
cp -rfLp components/enig* $ext_dir/components
cp -rfLp components/libenigmime.so $ext_dir/components
-cp -rfLp components/libipc.so $ext_dir/components
-cp -rfLp components/ipc.xpt $ext_dir/components
cp -rfLp defaults/preferences/enigmail.js $ext_dir/defaults/preferences
+cp -rfLp modules/{commonFuncs,enigmailCommon,keyManagement,pipeConsole,subprocess}.jsm $ext_dir/modules
+cp -rfLp modules/{subprocess_worker_unix,subprocess_worker_win}.js $ext_dir/modules
cd -
cp -p %{topdir}/mozilla/mailnews/extensions/enigmail/package/install.rdf $ext_dir
cp -p %{topdir}/mozilla/mailnews/extensions/enigmail/package/chrome.manifest $ext_dir/chrome.manifest
%endif
-# remove unecessary stuff
-#%%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/README.txt
-#%%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/components/components.list
-#%%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/components/components.list
-
# never package these. always remove
# nss
%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lib{freebl3,nss3,nssckbi,nssdbm3,nssutil3,smime3,softokn3,ssl3}.*
%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lib{nspr4,plc4,plds4}.so
# mozldap
%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/%{name}/lib{ldap,ldif,prldap,ssldap}60.so
+# testpilot quiz
+%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/%{name}/distribution/extensions/tbtestpilot@labs.mozilla.com.xpi
%clean
rm -rf $RPM_BUILD_ROOT
if [ -d %{_libdir}/%{name}/dictionaries ] && [ ! -L %{_libdir}/%{name}/dictionaries ]; then
mv -v %{_libdir}/%{name}/dictionaries{,.rpmsave}
fi
-for d in chrome defaults icons isp modules res; do
+for d in chrome defaults icons isp modules res searchplugins; do
if [ -d %{_libdir}/%{name}/$d ] && [ ! -L %{_libdir}/%{name}/$d ]; then
install -d %{_datadir}/%{name}
mv %{_libdir}/%{name}/$d %{_datadir}/%{name}/$d
%attr(755,root,root) %{_bindir}/thunderbird
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/application.ini
-%{_libdir}/%{name}/platform.ini
%{_libdir}/%{name}/blocklist.xml
%{_libdir}/%{name}/chrome.manifest
-%{_libdir}/%{name}/greprefs.js
%dir %{_libdir}/%{name}/components
-%attr(755,root,root) %{_libdir}/%{name}/components/*.so
%{_libdir}/%{name}/components/*.js
%{_libdir}/%{name}/components/*.xpt
%{_libdir}/%{name}/components/components.manifest
%{_libdir}/%{name}/components/interfaces.manifest
+%attr(755,root,root) %{_libdir}/%{name}/*.sh
+%attr(755,root,root) %{_libdir}/%{name}/*-bin
+%attr(755,root,root) %{_libdir}/%{name}/icedove
+%attr(755,root,root) %{_libdir}/%{name}/register
+%if %{without xulrunner}
+%{_libdir}/%{name}/dependentlibs.list
+%{_libdir}/%{name}/platform.ini
+%{_libdir}/%{name}/greprefs.js
+%attr(755,root,root) %{_libdir}/%{name}/components/*.so
%attr(755,root,root) %{_libdir}/%{name}/libmozalloc.so
%attr(755,root,root) %{_libdir}/%{name}/libxpcom.so
%attr(755,root,root) %{_libdir}/%{name}/libxul.so
-%attr(755,root,root) %{_libdir}/%{name}/*.sh
-%attr(755,root,root) %{_libdir}/%{name}/*-bin
%attr(755,root,root) %{_libdir}/%{name}/mozilla-xremote-client
-%attr(755,root,root) %{_libdir}/%{name}/icedove
%attr(755,root,root) %{_libdir}/%{name}/plugin-container
-%attr(755,root,root) %{_libdir}/%{name}/register
+%endif
# symlinks
%{_libdir}/%{name}/chrome
%{_libdir}/%{name}/defaults
-%{_libdir}/%{name}/dictionaries
-%{_libdir}/%{name}/hyphenation
%{_libdir}/%{name}/isp
%{_libdir}/%{name}/modules
+%{_libdir}/%{name}/searchplugins
+%if %{with xulrunner}
+%{_libdir}/%{name}/xulrunner
+%else
+%{_libdir}/%{name}/dictionaries
+%{_libdir}/%{name}/hyphenation
%{_libdir}/%{name}/res
+%endif
-%{_pixmapsdir}/*.png
-%{_desktopdir}/*.desktop
+%{_pixmapsdir}/icedove.png
+%{_desktopdir}/icedove.desktop
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/chrome
%{_datadir}/%{name}/defaults
-#%%{_datadir}/%{name}/greprefs
+%{_datadir}/%{name}/extensions
%{_datadir}/%{name}/isp
%{_datadir}/%{name}/modules
+%if %{with enigmail}
+%exclude %{_datadir}/%{name}/modules/commonFuncs.jsm
+%exclude %{_datadir}/%{name}/modules/enigmailCommon.jsm
+%exclude %{_datadir}/%{name}/modules/keyManagement.jsm
+%exclude %{_datadir}/%{name}/modules/pipeConsole.jsm
+%exclude %{_datadir}/%{name}/modules/subprocess.jsm
+%exclude %{_datadir}/%{name}/modules/subprocess_worker_unix.js
+%exclude %{_datadir}/%{name}/modules/subprocess_worker_win.js
+%endif
+%{_datadir}/%{name}/searchplugins
+%if %{without xulrunner}
%{_datadir}/%{name}/res
-%{_datadir}/%{name}/extensions
+%endif
%if %{with crashreporter}
%attr(755,root,root) %{_libdir}/%{name}/crashreporter
%attr(755,root,root) %{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/components/*.so
%{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/components/*.xpt
%{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/components/*.js
+%dir %{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/modules
+%{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/modules/*.jsm
+%{_libdir}/%{name}/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}/modules/*.js
%endif