# TODO:
# - consider --enable-libproxy
-# - enable rust support
#
# Conditional build:
%bcond_with tests # enable tests (whatever they check)
%bcond_without gtk3 # GTK+ 3.x instead of 2.x
%bcond_without kerberos # disable krb5 support
%bcond_without official # official Firefox branding
-%bcond_without pgo # PGO-enabled build (requires working $DISPLAY == :100)
+%bcond_with pgo # PGO-enabled build (requires working $DISPLAY == :100)
# - disabled shared_js - https://bugzilla.mozilla.org/show_bug.cgi?id=1039964
%bcond_with shared_js # shared libmozjs library [broken]
-%bcond_with system_icu # build with system ICU (disabled due to crashes with system icu 58.2)
+%bcond_without system_icu # build without system ICU
+%bcond_with clang # build using Clang/LLVM
# On updating version, grab CVE links from:
# https://www.mozilla.org/security/known-vulnerabilities/firefox.html
# The actual sqlite version (see RHBZ#480989):
%define sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo ERROR)
-%define nspr_ver 4.13.1
-%define nss_ver 3.28.1
+%define nspr_ver 4.14
+%define nss_ver 3.30.2
Summary: Firefox web browser
Summary(hu.UTF-8): Firefox web böngésző
Summary(pl.UTF-8): Firefox - przeglądarka WWW
Name: firefox
-Version: 53.0
+Version: 55.0.2
Release: 1
License: MPL v2.0
Group: X11/Applications/Networking
Source0: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/%{version}/source/firefox-%{version}.source.tar.xz
-# Source0-md5: 73175f850d4ff6068c6af674df20477c
+# Source0-md5: d1e65708db51034d2ad090b4bfba7f1c
Source3: %{name}.desktop
Source4: %{name}.sh
Source5: vendor.js
Source6: vendor-ac.js
Patch0: idl-parser.patch
-Patch1: xulrunner-new-libxul.patch
Patch2: xulrunner-paths.patch
Patch4: %{name}-prefs.patch
Patch5: %{name}-pld-bookmarks.patch
BuildRequires: autoconf2_13
BuildRequires: bzip2-devel
BuildRequires: cairo-devel >= 1.10.2-5
+BuildRequires: cargo
BuildRequires: dbus-glib-devel >= 0.60
BuildRequires: fontconfig-devel >= 1:2.7.0
BuildRequires: freetype-devel >= 1:2.1.8
BuildRequires: libjpeg-devel >= 6b
BuildRequires: libjpeg-turbo-devel
BuildRequires: libpng(APNG)-devel >= 0.10
-BuildRequires: libpng-devel >= 2:1.6.25
+BuildRequires: libpng-devel >= 2:1.6.28
BuildRequires: libstdc++-devel >= 6:4.4
BuildRequires: libvpx-devel >= 1.5.0
BuildRequires: nspr-devel >= 1:%{nspr_ver}
BuildRequires: readline-devel
BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpmbuild(macros) >= 1.601
+BuildRequires: rust
BuildRequires: sed >= 4.0
BuildRequires: sqlite3-devel >= 3.17.0
BuildRequires: startup-notification-devel >= 0.8
%{?with_gtk3:Requires: gtk+3 >= 3.4.0}
Requires: hicolor-icon-theme
Requires: libjpeg-turbo
-Requires: libpng >= 2:1.6.25
+Requires: libpng >= 2:1.6.28
Requires: libpng(APNG) >= 0.10
Requires: libvpx >= 1.5.0
Requires: myspell-common
Provides: xulrunner-libs = 2:%{version}-%{release}
Provides: wwwbrowser
Obsoletes: firefox-devel
-Obsoletes: firefox-lib
+Obsoletes: firefox-libs
Obsoletes: iceweasel
Obsoletes: iceweasel-libs
Obsoletes: mozilla-firebird
%define filterout_cpp -D_FORTIFY_SOURCE=[0-9]+
+%if %{with clang}
+%define filterout -fvar-tracking-assignments
+%endif
+
# don't satisfy other packages
%define _noautoprovfiles %{_libdir}/%{name}
# and as we don't provide them, don't require either
-%define _noautoreq libmozjs.so libxul.so
+%define _noautoreq liblgpllibs.so libmozavcodec.so libmozavutil.so libmozgtk.so libmozjs.so libmozsandbox.so libxul.so
%description
Firefox is an open-source web browser, designed for standards
ruchu otwartego oprogramowania oraz tworzoną z myślą o zgodności ze
standardami, wydajnością i przenośnością.
+%package -n gmp-api
+Summary: GeckoMediaPlugins API header files
+Summary(pl.UTF-8): Pliki nagłówkowe API GeckoMediaPlugins
+Group: Development/Libraries
+URL: https://wiki.mozilla.org/GeckoMediaPlugins
+# actually C++ compiler; STL is not even used
+Requires: libstdc++-devel
+
+%description -n gmp-api
+GeckoMediaPlugins API header files.
+
+%description -n gmp-api -l pl.UTF-8
+Pliki nagłówkowe API GeckoMediaPlugins.
+
%prep
%setup -q
echo 'LOCAL_INCLUDES += $(MOZ_HUNSPELL_CFLAGS)' >> extensions/spellcheck/src/Makefile.in
%patch0 -p2
-%patch1 -p1
%patch2 -p2
%patch4 -p1
%patch5 -p1
cat << 'EOF' > .mozconfig
. $topsrcdir/browser/config/mozconfig
+%if %{with clang}
+export CC="clang"
+export CXX="clang++"
+%else
+export CC="%{__cc}"
+export CXX="%{__cxx}"
+%endif
+export CFLAGS="%{rpmcflags} -D_FILE_OFFSET_BITS=64"
+export CXXFLAGS="%{rpmcxxflags} -D_FILE_OFFSET_BITS=64"
+
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-%{_target_cpu}
# Options for 'configure' (same as command-line options).
ac_add_options --enable-crash-on-assert
%else
ac_add_options --disable-debug
-ac_add_options --enable-optimize="%{rpmcflags} -Os"
+ac_add_options --enable-optimize="%{rpmcflags}%{?with_pgo: -Os}"
%endif
ac_add_options --disable-strip
ac_add_options --disable-install-strip
%endif
ac_add_options --disable-crashreporter
ac_add_options --disable-gconf
-ac_add_options --disable-gnomeui
ac_add_options --disable-necko-wifi
ac_add_options --disable-updater
-ac_add_options --disable-rust
ac_add_options --enable-alsa
ac_add_options --enable-chrome-format=omni
ac_add_options --enable-default-toolkit=%{?with_gtk3:cairo-gtk3}%{!?with_gtk3:cairo-gtk2}
ac_add_options --enable-extensions=default
-ac_add_options --enable-gio
ac_add_options --enable-readline
ac_add_options --enable-safe-browsing
%{?with_shared_js:ac_add_options --enable-shared-js}
%browser_plugins_add_browser %{name} -p %{_libdir}/%{name}/browser/plugins
-cd obj-%{_target_cpu}
-%{__make} -C browser/installer stage-package \
+OBJDIR=obj-%{_target_cpu}
+%{__make} -C ${OBJDIR}/browser/installer stage-package \
DESTDIR=$RPM_BUILD_ROOT \
installdir=%{_libdir}/%{name} \
PKG_SKIP_STRIP=1
-cp -aL dist/firefox/* $RPM_BUILD_ROOT%{_libdir}/%{name}/
+cp -aL ${OBJDIR}/dist/firefox/* $RPM_BUILD_ROOT%{_libdir}/%{name}/
# move arch independant ones to datadir
-mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/chrome $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/chrome
-mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/extensions $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/extensions
-mv $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/icons $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/icons
-mv $RPM_BUILD_ROOT%{_libdir}/%{name}/defaults $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults
-mv $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults/{pref,preferences}
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/chrome $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/chrome
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/extensions $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/extensions
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/icons $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/icons
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/%{name}/defaults $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults
+%{__mv} $RPM_BUILD_ROOT%{_datadir}/%{name}/browser/defaults/{pref,preferences}
ln -s ../../../share/%{name}/browser/chrome $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/chrome
ln -s ../../../share/%{name}/browser/defaults $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/defaults
# install icons and desktop file
for i in 16 32 48 %{?with_official:22 24 256}; do
install -d $RPM_BUILD_ROOT%{_iconsdir}/hicolor/${i}x${i}/apps
- cp -a ../browser/branding/%{!?with_official:un}official/default${i}.png \
+ cp -a browser/branding/%{!?with_official:un}official/default${i}.png \
$RPM_BUILD_ROOT%{_iconsdir}/hicolor/${i}x${i}/apps/firefox.png
done
EOF
chmod 755 $RPM_BUILD_ROOT%{_sbindir}/%{name}-chrome+xpcom-generate
+# GeckoMediaPlugin API headers
+install -d $RPM_BUILD_ROOT%{_includedir}
+cp -pr dom/media/gmp/gmp-api $RPM_BUILD_ROOT%{_includedir}
+
%clean
rm -rf $RPM_BUILD_ROOT
%attr(755,root,root) %{_libdir}/%{name}/firefox
%attr(755,root,root) %{_libdir}/%{name}/firefox-bin
+%attr(755,root,root) %{_libdir}/%{name}/pingsender
%attr(755,root,root) %{_libdir}/%{name}/run-mozilla.sh
%{_libdir}/%{name}/application.ini
%{_libdir}/%{name}/chrome.manifest
%{_libdir}/%{name}/browser/omni.ja
%{_libdir}/%{name}/browser/features/aushelper@mozilla.org.xpi
+%{_libdir}/%{name}/browser/features/clicktoplay-rollout@mozilla.org.xpi
%{_libdir}/%{name}/browser/features/e10srollout@mozilla.org.xpi
%{_libdir}/%{name}/browser/features/firefox@getpocket.com.xpi
+%{_libdir}/%{name}/browser/features/followonsearch@mozilla.com.xpi
+%{_libdir}/%{name}/browser/features/screenshots@mozilla.org.xpi
+%{_libdir}/%{name}/browser/features/shield-recipe-client@mozilla.org.xpi
%{_libdir}/%{name}/browser/features/webcompat@mozilla.org.xpi
%attr(755,root,root) %{_libdir}/%{name}/plugin-container
%attr(755,root,root) %{_libdir}/%{name}/gtk2/libmozgtk.so
%attr(755,root,root) %{_libdir}/%{name}/libmozgtk.so
%endif
+
+%files -n gmp-api
+%defattr(644,root,root,755)
+%{_includedir}/gmp-api