firefox-esr68/firefox.spec
2015-04-21 16:22:24 +04:00

418 lines
15 KiB
RPMSpec

#
# WARNING, READ FIRST:
#
# This is a special package that needs special treatment. Due to the amount of
# security updates it needs, it's common to ship new upstream versions instead of patching.
# That means this package MUST be BUILDABLE for stable official releases.
# This also means only STABLE upstream releases, NO betas.
# This is a discussed topic. Please, do not flame it again.
%define major 37.0.2
%define ff_epoch 0
# (tpg) set version HERE !!!
%define realver %{major}
%define firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
# (tpg) MOZILLA_FIVE_HOME
%define mozillalibdir %{_libdir}/%{name}-%{major}
%define pluginsdir %{_libdir}/mozilla/plugins
# this seems fragile, so require the exact version or later (#58754)
%define sqlite3_version %(pkg-config --modversion sqlite3 &>/dev/null && pkg-config --modversion sqlite3 2>/dev/null || echo 0)
%define nss_version %(pkg-config --modversion nss &>/dev/null && pkg-config --modversion nss 2>/dev/null || echo 0)
%define nspr_version %(pkg-config --modversion nspr &>/dev/null && pkg-config --modversion nspr 2>/dev/null |sed -e 's!\.0!!' || echo 0)
%define _use_syshunspell 0
%define update_channel release
Summary: Next generation web browser
Name: firefox
Version: %{major}
Epoch: %{ff_epoch}
Release: 1
License: MPLv1+
Group: Networking/WWW
Url: http://www.mozilla.com/firefox/
%if 0%{?prel}
Source0: ftp://ftp.mozilla.org/pub/mozilla.org/%{name}/releases/%{realver}/source/%{name}-%{realver}%prel.source.tar.bz2
%else
Source0: ftp://ftp.mozilla.org/pub/mozilla.org/%{name}/releases/%{realver}/source/%{name}-%{realver}.source.tar.bz2
%endif
Source4: %{name}.desktop
Source5: firefox-searchengines-jamendo.xml
Source6: firefox-searchengines-exalead.xml
Source8: firefox-searchengines-askcom.xml
Source9: kde.js
Source10: firefox-searchengines-yandex.xml
Source11: firefox-searchengines-google.xml
Source12: firefox-searchengines-bing.xml
Patch1: firefox-6.0-lang.patch
Patch2: firefox-vendor.patch
Patch8: firefox-25.0-disable-check-default-browser.patch
Patch10: firefox-3.5.3-default-mail-handler.patch
# Patches for kde integration of FF
Patch11: firefox-37-kde.patch
Patch12: mozilla-37-kde.patch
#Patch13: mozilla-kde-background.patch
Patch34: xulrunner_nojit.patch
Patch35: firefox-37-build-with-time-independent-uuids.patch
# Fedora specific patches
# Unable to install addons from https pages
Patch204: rhbz-966424.patch
Patch215: firefox-enable-addons.patch
Patch217: firefox-baseline-disable.patch
BuildRequires: gtk+2-devel
BuildRequires: unzip
BuildRequires: zip
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xscrnsaver)
BuildRequires: jpeg-devel
BuildRequires: zlib-devel
BuildRequires: glib2-devel
BuildRequires: pkgconfig(libIDL-2.0)
BuildRequires: makedepend
BuildRequires: nss-devel >= 2:3.17.4
BuildRequires: nss-static-devel
BuildRequires: nspr-devel >= 2:4.10.6
BuildRequires: startup-notification-devel
BuildRequires: dbus-glib-devel
BuildRequires: python
BuildRequires: pkgconfig(sqlite3) >= 3.8.4.1
%ifnarch %arm %mips
BuildRequires: valgrind
BuildRequires: java-rpmbuild
BuildRequires: java-1.7.0-openjdk-devel
BuildRequires: yasm >= 1.0.1
%endif
%ifarch %arm
BuildRequires: libffi-devel
%endif
BuildRequires: rootcerts >= 1:20110830.00
BuildRequires: pkgconfig(xt)
%if %_use_syshunspell
BuildRequires: hunspell-devel
%endif
BuildRequires: doxygen
# BuildRequires: xulrunner-devel >= %xulrunner_version%{?prel:-0.%prel}
BuildRequires: pkgconfig(libproxy-1.0)
BuildRequires: pkgconfig(alsa)
BuildRequires: wget
BuildRequires: pkgconfig(libnotify)
BuildRequires: cairo-devel >= 1.10
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(vpx)
BuildRequires: autoconf2.1
BuildRequires: libiw-devel
BuildRequires: python-virtualenv
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(libpulse)
BuildRequires: bzip2-devel
BuildRequires: pkgconfig(theoradec)
BuildRequires: pkgconfig(vorbis)
%if 0%{?prel}
Provides: %{name} = %{epoch}:%{realver}-0.%{prel}
%else
Provides: %{name} = %{epoch}:%{realver}
%endif
Provides: mozilla-firefox = %{epoch}:%{version}-%{release}
Provides: webclient
Requires: %{mklibname sqlite3_ 0} >= %{sqlite3_version}
Requires: %{mklibname nss 3} >= 2:%{nss_version}
Requires: %{mklibname nspr 4} >= 2:%{nspr_version}
Requires: indexhtml
Requires: xdg-utils
# fixes bug #42096
Requires: mailcap
%if %_use_syshunspell
Suggests: hunspell-en
%endif
Suggests: %{_lib}canberra0
Suggests: %{_lib}cups2
Obsoletes: firefox-ext-weave-sync
Obsoletes: firefox-beta < 11
%description
The award-winning Web browser is now faster, more secure, and fully
customizable to your online life. With Firefox(R), we've added powerful new
features that make your online experience even better. It is an 'open source'
product which is freely available, and is acquiring a growing proportion of
international web browser usage.
Firefox claims to offer a more secure web browsing experience than other
products, with better protection against spyware and other Internet-based
security threats. It includes all the standard features of a modern web
browser, like Internet searching, tracking recently visited sites, setting up
shortcuts to favourite sites, customising the software behaviour and so on.
Firefox also includes features like 'tabbed browsing' (opening several web
sites as sections within the same window) and methods for controlling pop-up
windows, cookies and downloaded files.
%package devel
Summary: Development files for %{name}
Group: Development/Other
Obsoletes: firefox-beta-devel < 11
%description devel
Files and macros mainly for building Firefox extensions.
%prep
%setup -qn mozilla-%update_channel
%patch1 -p1 -b .lang
#patch2 -p1 -b .vendor
%patch8 -p1 -b .disable-check
%patch10 -p1 -b .default-mail-handler
## KDE INTEGRATION
# Disable kde integration , need refactoring
%patch11 -p1 -b .kdepatch
%patch12 -p1 -b .kdemoz
#patch13 -p1 -b .kdebackground
%ifarch %arm
%if "%{_target_cpu}" != "armv7l"
%patch34 -p1
%endif
%endif
%patch35 -p1
# Fedora patches
%patch204 -p2 -b .966424
%patch215 -p1 -b .addons
# disable baseline JIT on i686 (rhbz#1047079)
%ifarch %{ix86}
%patch217 -p2 -b .baseline
%endif
pushd js/src
autoconf-2.13
popd
autoconf-2.13
# needed to regenerate certdata.c
pushd security/nss/lib/ckfw/builtins
perl ./certdata.perl < /etc/pki/tls/mozilla/certdata.txt
popd
%build
export MOZCONFIG=`pwd`/mozconfig
cat << EOF > $MOZCONFIG
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZ_MAKE_FLAGS="%{_smp_mflags}"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
ac_add_options --host=%{_host}
ac_add_options --target=%{_target_platform}
ac_add_options --enable-optimize
ac_add_options --prefix="%{_prefix}"
ac_add_options --libdir="%{_libdir}"
ac_add_options --sysconfdir="%{_sysconfdir}"
ac_add_options --mandir="%{_mandir}"
ac_add_options --includedir="%{_includedir}"
ac_add_options --datadir="%{_datadir}"
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-zlib
ac_add_options --with-system-libvpx
ac_add_options --with-system-bz2
ac_add_options --enable-libnotify
ac_add_options --enable-svg
ac_add_options --enable-canvas
ac_add_options --enable-webm
ac_add_options --enable-gio
ac_add_options --disable-gnomevfs
ac_add_options --disable-updater
ac_add_options --disable-tests
ac_add_options --disable-debug
#ac_add_options --enable-chrome-format=jar
#ac_add_options --enable-update-channel=beta
ac_add_options --enable-official-branding
ac_add_options --enable-libproxy
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo
ac_add_options --enable-system-sqlite
ac_add_options --enable-startup-notification
ac_add_options --enable-xinerama
ac_add_options --with-distribution-id=org.rosa
ac_add_options --disable-crashreporter
ac_add_options --enable-update-channel=%{update_channel}
ac_add_options --enable-gstreamer=1.0
%ifarch %arm
%if "%{_target_cpu}" != "armv7l"
ac_add_options --disable-methodjit
ac_add_options --disable-tracejit
%endif
ac_add_options --enable-system-ffi
%endif
%ifnarch %arm %mips
ac_add_options --with-valgrind
ac_add_options --with-java-include-path=%{java_home}/include
ac_add_options --with-java-bin-path=%{java_home}/bin
ac_add_options --enable-opus
%endif
EOF
%__perl -p -i -e 's|\-0|\-9|g' config/make-jars.pl
export LDFLAGS="%ldflags"
make -f client.mk build
%install
rm -rf %{buildroot}
# Make sure locale works for langpacks
%{__cat} > %{_builddir}/obj/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
EOF
make -C %{_builddir}/obj/browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
# Copy files to buildroot
%{__mkdir_p} %{buildroot}%{mozillalibdir}
cp -rf %{_builddir}/obj/dist/firefox/* %{buildroot}%{mozillalibdir}
%{__mkdir_p} %{buildroot}%{_bindir}
ln -sf %{mozillalibdir}/firefox %{buildroot}%{_bindir}/firefox
pushd %{buildroot}%{_bindir}
ln -sf firefox mozilla-firefox
popd
mkdir -p %{buildroot}%{mozillalibdir}/defaults/preferences/
install -m 644 %{SOURCE9} %{buildroot}%{mozillalibdir}/defaults/preferences/kde.js
# Create and own %_libdir/mozilla/plugins & firefox extensions directories
%{__mkdir_p} %{buildroot}%{pluginsdir}
%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_appid}
%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_appid}
# (tpg) desktop entry
%{__mkdir_p} %{buildroot}%{_datadir}/applications
install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/applications/%{name}.desktop
# (tpg) icons
%{__cp} %{buildroot}%{mozillalibdir}/browser/chrome/icons/default/default16.png %{buildroot}/%{mozillalibdir}/browser/icons/
for i in 16 22 24 32 48 256; do
# (cg) Not all icon sizes are installed with make install, so just redo it here.
%{__install} -m 644 browser/branding/official/default$i.png %{buildroot}%{mozillalibdir}/browser/chrome/icons/default/default$i.png
%{__mkdir_p} %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps
ln -sf %{mozillalibdir}/browser/chrome/icons/default/default$i.png %{buildroot}%{_iconsdir}/hicolor/"$i"x"$i"/apps/%{name}.png ;
done
%{__mkdir_p} %{buildroot}{%{_liconsdir},%{_iconsdir},%{_miconsdir}}
ln -sf %{mozillalibdir}/browser/chrome/icons/default/default48.png %{buildroot}%{_liconsdir}/%{name}.png
ln -sf %{mozillalibdir}/browser/chrome/icons/default/default32.png %{buildroot}%{_iconsdir}/%{name}.png
ln -sf %{mozillalibdir}/browser/chrome/icons/default/default16.png %{buildroot}%{_miconsdir}/%{name}.png
# exclusions
rm -f %{buildroot}%{mozillalibdir}/README.txt
rm -f %{buildroot}%{mozillalibdir}/removed-files
rm -f %{buildroot}%{mozillalibdir}/precomplete
cat << EOF >> %{buildroot}%{mozillalibdir}/firefox.cfg
#code
pref("browser.rights.3.shown", false);
defaultPref("browser.startup.homepage", "data:text/html,browser.startup.homepage=file:///usr/share/doc/HTML/index.html");
pref("browser.shell.checkDefaultBrowser", false);
pref("browser.startup.homepage_override.mstone", "ignore");
pref("browser.ctrlTab.previews", true);
pref("browser.tabs.insertRelatedAfterCurrent", false);
pref("browser.backspace_action", 2);
pref("browser.display.use_system_colors", true);
pref("browser.download.folderList", 1);
pref("browser.link.open_external", 3);
pref("app.update.auto", false);
pref("app.update.enabled", false);
pref("app.update.autoInstallEnabled", false);
pref("security.ssl.require_safe_negotiation", false);
pref("dom.ipc.plugins.enabled.nswrapper*", false);
pref("extensions.autoDisableScopes", 0);
pref("extensions.shownSelectionUI", true);
pref("network.manage-offline-status", true);
EOF
cat << EOF >> %{buildroot}%{mozillalibdir}/defaults/pref/config-prefs.js
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0); // use this to disable the byte-shift
EOF
# display icon for Firefox button
%{__mkdir_p} %{buildroot}%{mozillalibdir}/defaults/profile/chrome
cat << EOF > %{buildroot}%{mozillalibdir}/defaults/profile/chrome/userChrome.css
#appmenu-toolbar-button {
list-style-image: url("chrome://branding/content/icon16.png");
}
EOF
# use the system myspell dictionaries
rm -fr %{buildroot}%{mozillalibdir}/dictionaries
#ln -s %{_datadir}/hunspell %{buildroot}%{mozillalibdir}/dictionaries
ln -s %{_datadir}/dict/mozilla/ %{buildroot}%{mozillalibdir}/dictionaries
# (lm) touch and %ghost bookmarks.html to a proper uninstall
touch %{buildroot}%{mozillalibdir}/defaults/profile/bookmarks.html
# search engines
rm -f %{buildroot}%{mozillalibdir}/browser/searchplugins/*
cp -f %{SOURCE5} %{buildroot}%{mozillalibdir}/browser/searchplugins/jamendo.xml
cp -f %{SOURCE6} %{buildroot}%{mozillalibdir}/browser/searchplugins/exalead.xml
cp -f %{SOURCE8} %{buildroot}%{mozillalibdir}/browser/searchplugins/askcom.xml
cp -f %{SOURCE10} %{buildroot}%{mozillalibdir}/browser/searchplugins/yandex.xml
cp -f %{SOURCE11} %{buildroot}%{mozillalibdir}/browser/searchplugins/google.xml
cp -f %{SOURCE12} %{buildroot}%{mozillalibdir}/browser/searchplugins/bing.xml
# Correct distro values on search engines
sed -i 's/@DISTRO_VALUE@/ffx/' %{buildroot}%{mozillalibdir}/browser/searchplugins/askcom.xml
sed -i 's/@DISTRO_VALUE@//' %{buildroot}%{mozillalibdir}/browser/searchplugins/exalead.xml
mkdir -p %{buildroot}%{_sys_macros_dir}
cat <<FIN >%{buildroot}%{_sys_macros_dir}/%{name}.macros
# Macros from %{name} package
%%firefox_major %{major}
%%firefox_epoch %{ff_epoch}
%%firefox_version %{major}%{?prel:-0.%prel}
%%firefox_mozillapath %{mozillalibdir}
%%firefox_pluginsdir %{pluginsdir}
%%firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
%%firefox_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{firefox_appid}; else echo %%{_libdir}/mozilla/extensions/%%{firefox_appid}; fi)
FIN
# Fix libxpcom.so rights
#chmod 755 $RPM_BUILD_ROOT/%{mozillalibdir}/libxpcom.so
%pre
if [ -d %{mozillalibdir}/browser/dictionaries ]; then
rm -fr %{mozillalibdir}/browser/dictionaries
fi
%post
if [ ! -r /etc/sysconfig/oem ]; then
case `grep META_CLASS /etc/sysconfig/system` in
*powerpack) bookmark="mozilla-powerpack.html" ;;
*desktop) bookmark="mozilla-one.html";;
*) bookmark="mozilla-download.html";;
esac
ln -s -f ../../../../share/mdk/bookmarks/mozilla/$bookmark %{mozillalibdir}/defaults/profile/bookmarks.html
fi
%files
%{_bindir}/%{name}
%{_bindir}/mozilla-firefox
%{_iconsdir}/hicolor/*/apps/*.png
%{_miconsdir}/%{name}.png
%{_iconsdir}/%{name}.png
%{_liconsdir}/%{name}.png
%{_datadir}/applications/*.desktop
%{_libdir}/%{name}-%{major}*
#% ghost %{mozillalibdir}/defaults/profile/bookmarks.html
%dir %{_libdir}/mozilla
%dir %{_libdir}/mozilla/extensions
%dir %{pluginsdir}
%dir %{_libdir}/mozilla/extensions/%{firefox_appid}
%dir %{_datadir}/mozilla/extensions/%{firefox_appid}
%files devel
%{_sys_macros_dir}/%{name}.macros