--- a/MozillaFirefox/MozillaFirefox.spec Sun Mar 17 10:00:10 2019 +0100
+++ b/MozillaFirefox/MozillaFirefox.spec Tue Nov 19 22:54:22 2019 +0100
@@ -2,7 +2,7 @@
# spec file for package MozillaFirefox
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
-# 2006-2019 Wolfgang Rosenauer
+# 2006-2019 Wolfgang Rosenauer <wr@rosenauer.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,14 @@
# changed with every update
-%define major 65
-%define mainver %major.0.1
-%define orig_version 65.0.1
+%define major 70
+%define mainver %major.0
+%define orig_version 70.0
%define orig_suffix %{nil}
%define update_channel beta
%define branding 1
-%define releasedate 20190211233335
-%define source_prefix firefox-%{orig_version}
+%define devpkg 1
+%define releasedate 20191016161957
# always build with GCC as SUSE Security Team requires that
%define clang_build 0
@@ -33,6 +33,8 @@
# PIE, full relro
%define build_hardened 1
+%bcond_with only_print_mozconfig
+
# Firefox only supports i686
%ifarch %ix86
ExclusiveArch: i586 i686
@@ -43,6 +45,7 @@
# general build definitions
%define progname firefox
%define pkgname MozillaFirefox
+%define srcname firefox
%define appname Firefox
%define progdir %{_prefix}/%_lib/%{progname}
%define gnome_dir %{_prefix}
@@ -62,6 +65,7 @@
BuildRequires: alsa-devel
BuildRequires: autoconf213
BuildRequires: dbus-1-glib-devel
+BuildRequires: dejavu-fonts
BuildRequires: fdupes
BuildRequires: memory-constraints
%if 0%{?suse_version} <= 1320
@@ -69,7 +73,7 @@
%else
BuildRequires: gcc-c++
%endif
-BuildRequires: cargo >= 1.30
+BuildRequires: cargo >= 1.36
BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel
BuildRequires: libidl-devel
@@ -77,22 +81,26 @@
BuildRequires: libnotify-devel
BuildRequires: libproxy-devel
BuildRequires: makeinfo
-BuildRequires: mozilla-nspr-devel >= 4.20
-BuildRequires: mozilla-nss-devel >= 3.41
-BuildRequires: nodejs >= 8.11
+BuildRequires: mozilla-nspr-devel >= 4.22
+BuildRequires: mozilla-nss-devel >= 3.46.1
+BuildRequires: nasm >= 2.13
+BuildRequires: nodejs8 >= 8.11
BuildRequires: python-devel
BuildRequires: python2-xml
BuildRequires: python3 >= 3.5
-BuildRequires: rust >= 1.30
-BuildRequires: rust-cbindgen >= 0.6.7
+BuildRequires: rust >= 1.36
+BuildRequires: rust-cbindgen >= 0.9.1
BuildRequires: startup-notification-devel
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: xorg-x11-libXt-devel
+%if 0%{?do_profiling}
+BuildRequires: xvfb-run
+%endif
BuildRequires: yasm
BuildRequires: zip
%if 0%{?suse_version} < 1550
-BuildRequires: pkgconfig(gconf-2.0)
+BuildRequires: pkgconfig(gconf-2.0) >= 1.2.1
%endif
BuildRequires: pkgconfig(gdk-x11-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.22
@@ -131,12 +139,13 @@
License: MPL-2.0
Group: Productivity/Networking/Web/Browsers
Url: http://www.mozilla.org/
-Source: http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz
+%if !%{with only_print_mozconfig}
+Source: http://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/source/%{srcname}-%{orig_version}%{orig_suffix}.source.tar.xz
Source1: MozillaFirefox.desktop
Source2: MozillaFirefox-rpmlintrc
Source3: mozilla.sh.in
+Source4: tar_stamps
Source5: source-stamp.txt
-Source6: kde.js
Source7: l10n-%{orig_version}%{orig_suffix}.tar.xz
Source8: firefox-mimeinfo.xml
Source9: firefox.js
@@ -144,40 +153,56 @@
Source11: firefox.1
Source12: mozilla-get-app-id
Source13: spellcheck.js
-Source14: create-tar.sh
+Source14: https://github.com/openSUSE/firefox-scripts/raw/master/create-tar.sh
Source15: firefox-appdata.xml
-Source16: MozillaFirefox.changes
+Source16: %{name}.changes
# Set up API keys, see http://www.chromium.org/developers/how-tos/api-keys
# Note: these are for the openSUSE Firefox builds ONLY. For your own distribution,
# please get your own set of keys.
Source18: mozilla-api-key
Source19: google-api-key
-Source20: http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz.asc
-Source21: mozilla.keyring
+Source20: https://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/source/%{srcname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
+Source21: https://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/KEY#/mozilla.keyring
# Gecko/Toolkit
Patch1: mozilla-nongnome-proxies.patch
Patch2: mozilla-kde.patch
Patch3: mozilla-ntlm-full-path.patch
Patch4: mozilla-openaes-decl.patch
-Patch7: mozilla-aarch64-startup-crash.patch
-Patch8: mozilla-bmo256180.patch
-Patch9: mozilla-bmo1463035.patch
-Patch10: mozilla-cubeb-noreturn.patch
+Patch5: mozilla-aarch64-startup-crash.patch
+Patch6: mozilla-bmo1463035.patch
+Patch7: mozilla-cubeb-noreturn.patch
+Patch8: mozilla-fix-aarch64-libopus.patch
+Patch9: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
+Patch10: mozilla-s390-context.patch
+Patch11: mozilla-s390-bigendian.patch
+Patch12: mozilla-reduce-rust-debuginfo.patch
+Patch13: mozilla-ppc-altivec_static_inline.patch
+Patch14: mozilla-bmo1005535.patch
+Patch15: mozilla-bmo1568145.patch
+Patch16: mozilla-bmo1504834-part1.patch
+Patch17: mozilla-bmo1504834-part2.patch
+Patch18: mozilla-bmo1504834-part3.patch
+Patch19: mozilla-bmo1511604.patch
+Patch20: mozilla-bmo1554971.patch
+Patch21: mozilla-bmo1512162.patch
+Patch22: mozilla-fix-top-level-asm.patch
# Firefox/browser
Patch101: firefox-kde.patch
Patch102: firefox-branded-icons.patch
+%endif # only_print_mozconfig
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires(post): coreutils shared-mime-info desktop-file-utils
Requires(postun): shared-mime-info desktop-file-utils
-%if %branding
-Requires: %{name}-branding > 44.0
-%endif
+Requires: %{name}-branding >= 68
Requires: mozilla-nspr >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nspr)
Requires: mozilla-nss >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nss)
Recommends: libcanberra0
Recommends: libpulse0
# addon leads to startup crash (bnc#908892)
Obsoletes: tracker-miner-firefox < 0.15
+%if 0%{?devpkg} == 0
+Obsoletes: %{name}-devel < %{version}
+%endif
# libproxy's mozjs pacrunner crashes FF (bnc#759123)
%if 0%{?suse_version} < 1220
Obsoletes: libproxy1-pacrunner-mozjs <= 0.4.7
@@ -189,6 +214,7 @@
compliance and performance. Its functionality can be enhanced via a
plethora of extensions.
+%if 0%{?devpkg}
%package devel
Summary: Devel package for %{appname}
Group: Development/Tools/Other
@@ -199,12 +225,13 @@
%description devel
Development files for %{appname} to make packaging of addons easier.
+%endif
%if %localize
%package translations-common
Summary: Common translations for %{appname}
Group: System/Localization
-Provides: locale(%{name}:ar;ca;cs;da;de;en_GB;el;es_AR;es_CL;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW)
+Provides: locale(%{name}:ar;ca;cs;da;de;el;en_GB;es_AR;es_CL;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW)
Requires: %{name} = %{version}
Obsoletes: %{name}-translations < %{version}-%{release}
@@ -215,7 +242,7 @@
%package translations-other
Summary: Extra translations for %{appname}
Group: System/Localization
-Provides: locale(%{name}:ach;af;an;as;ast;az;bg;bn_BD;bn_IN;br;bs;cak;cy;dsb;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;id;is;ka;kab;kk;km;kn;lij;lt;lv;mai;mk;ml;mr;ms;ne-NP;nn_NO;oc;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;uz;vi;xh)
+Provides: locale(%{name}:ach;af;an;ast;az;be;bg;bn;br;bs;cak;cy;dsb;en_CA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;ia;id;is;ka;kab;kk;km;kn;lij;lt;lv;mk;mr;ms;my;ne_NP;nn_NO;oc;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;ur;uz;vi;xh)
Requires: %{name} = %{version}
Obsoletes: %{name}-translations < %{version}-%{release}
@@ -224,7 +251,6 @@
of %{appname}.
%endif
-%if %branding
%package branding-upstream
Summary: Upstream branding for %{appname}
Group: Productivity/Networking/Web/Browsers
@@ -243,7 +269,6 @@
%description branding-upstream
This package provides upstream look and feel for %{appname}.
-%endif
%if %crashreporter
%package buildsymbols
@@ -255,28 +280,56 @@
symbols meant for upload to Mozilla's crash collector database.
%endif
+%if !%{with only_print_mozconfig}
%prep
%if %localize
-%setup -q -n %{source_prefix} -b 7 -b 10
+
+# If generated incorrectly, the tarball will be ~270B in
+# size, so 1MB seems like good enough limit to check.
+MINSIZE=1048576
+if (( $(stat -Lc%s "%{SOURCE7}") < MINSIZE)); then
+ echo "Translations tarball %{SOURCE7} not generated properly."
+ exit 1
+fi
+
+%setup -q -n %{srcname}-%{orig_version} -b 7 -b 10
%else
-%setup -q -n %{source_prefix}
+%setup -q -n %{srcname}-%{orig_version}
%endif
-cd $RPM_BUILD_DIR/%{source_prefix}
+cd $RPM_BUILD_DIR/%{srcname}-%{orig_version}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
+%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
+%ifarch s390x ppc64
+%patch11 -p1
+%endif
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
# Firefox
%patch101 -p1
%patch102 -p1
+%endif # only_print_mozconfig
%build
+%if !%{with only_print_mozconfig}
# no need to add build time to binaries
-modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/MozillaFirefox.changes")"
+modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
TIME="\"$(date -d "${modified}" "+%%R")\""
find . -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
@@ -287,6 +340,9 @@
exit 1
fi
source %{SOURCE5}
+%endif # only_print_mozconfig
+
+export CARGO_HOME=${RPM_BUILD_DIR}/%{srcname}-%{orig_version}/.cargo
export MOZ_SOURCE_CHANGESET=$REV
export SOURCE_REPO=$REPO
export source_repo=$REPO
@@ -317,8 +373,18 @@
%endif
export CXXFLAGS="$CFLAGS"
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
-%limit_build -m 1500
+%if %{with only_print_mozconfig}
+echo "export CC=$CC"
+echo "export CXX=$CXX"
+echo "export CFLAGS=\"$CFLAGS\""
+echo "export LDFLAGS=\"$LDFLAGS\""
+echo "export RUSTFLAGS=\"$RUSTFLAGS\""
+echo ""
+cat << EOF
+%else
+%limit_build -m 2000
cat << EOF > $MOZCONFIG
+%endif
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
@@ -339,7 +405,7 @@
ac_add_options --enable-debug-symbols
%endif
%if 0%{?suse_version} > 1549
-%ifnarch aarch64 ppc64 ppc64le
+%ifnarch aarch64 ppc64 ppc64le s390x
ac_add_options --disable-elf-hack
%endif
%endif
@@ -359,7 +425,8 @@
#ac_add_options --enable-chrome-format=jar
ac_add_options --enable-update-channel=%{update_channel}
ac_add_options --with-mozilla-api-keyfile=%{SOURCE18}
-ac_add_options --with-google-api-keyfile=%{SOURCE19}
+ac_add_options --with-google-location-service-api-keyfile=%{SOURCE19}
+ac_add_options --with-google-safebrowsing-api-keyfile=%{SOURCE19}
ac_add_options --with-unsigned-addon-scopes=app
%if %branding
ac_add_options --enable-official-branding
@@ -380,14 +447,36 @@
%ifarch aarch64 %arm s390x
ac_add_options --disable-webrtc
%endif
+# mitigation/workaround for bmo#1512162
+%ifarch s390x
+ac_add_options --enable-optimize="-O1"
+%endif
%ifarch x86_64
# LTO needs newer toolchain stack only (at least GCC 8.2.1 (r268506)
%if 0%{?suse_version} > 1500
ac_add_options --enable-lto
+%if 0%{?do_profiling}
+ac_add_options MOZ_PGO=1
+%endif
%endif
%endif
EOF
-./mach build
+%if !%{with only_print_mozconfig}
+%ifarch ppc64 s390x s390
+# NOTE: Currently, system-icu is too old, so we can't build with that,
+# but have to generate the .dat-file freshly. This seems to be a
+# less fragile approach anyways.
+# ac_add_options --with-system-icu
+echo "Generate big endian version of config/external/icu/data/icud58l.dat"
+./mach python intl/icu_sources_data.py .
+ls -l config/external/icu/data
+rm -f config/external/icu/data/icudt*l.dat
+%endif
+%if 0%{?do_profiling}
+xvfb-run --server-args="-screen 0 1920x1080x24" \
+%endif
+./mach build -v
+%endif # only_print_mozconfig
%install
cd $RPM_BUILD_DIR/obj
@@ -403,25 +492,29 @@
grep amazondotcom dist/firefox/browser/omni.ja
# copy tree into RPM_BUILD_ROOT
mkdir -p %{buildroot}%{progdir}
-cp -rf $RPM_BUILD_DIR/obj/dist/firefox/* %{buildroot}%{progdir}
+cp -rf $RPM_BUILD_DIR/obj/dist/%{srcname}/* %{buildroot}%{progdir}
mkdir -p %{buildroot}%{progdir}/distribution/extensions
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
+# renaming executables (for regular vs. ESR)
+%if "%{srcname}" != "%{progname}"
+mv %{buildroot}%{progdir}/%{srcname} %{buildroot}%{progdir}/%{progname}
+mv %{buildroot}%{progdir}/%{srcname}-bin %{buildroot}%{progdir}/%{progname}-bin
+%endif
# install gre prefs
install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/
# install browser prefs
-install -m 644 %{SOURCE6} %{buildroot}%{progdir}/browser/defaults/preferences/kde.js
install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js
-# install additional locales
+# build additional locales
%if %localize
mkdir -p %{buildroot}%{progdir}/browser/extensions
truncate -s 0 %{_tmppath}/translations.{common,other}
-sed -r '/^(ja-JP-mac|en-US|)$/d;s/ .*$//' $RPM_BUILD_DIR/%{source_prefix}/browser/locales/shipped-locales \
- | xargs -P 8 -n 1 -I {} /bin/sh -c '
+sed -r '/^(ja-JP-mac|en-US|)$/d;s/ .*$//' $RPM_BUILD_DIR/%{srcname}-%{orig_version}/browser/locales/shipped-locales \
+ | xargs -n 1 -I {} /bin/sh -c '
locale=$1
pushd $RPM_BUILD_DIR/compare-locales
PYTHONPATH=lib \
scripts/compare-locales -m ../l10n-merged/$locale \
- ../%{source_prefix}/browser/locales/l10n.ini ../l10n $locale
+ ../%{srcname}-%{orig_version}/browser/locales/l10n.ini ../l10n $locale
popd
LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \
make -C browser/locales langpack-$locale
@@ -432,7 +525,7 @@
rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/hyphenation
# check against the fixed common list and sort into the right filelist
_matched=0
- for _match in ar ca cs da de en-GB el es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
+ for _match in ar ca cs da de el en-GB es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
[ "$_match" = "$locale" ] && _matched=1
done
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
@@ -457,7 +550,7 @@
mkdir --parents %{buildroot}/usr/bin
sed "s:%%PREFIX:%{_prefix}:g
s:%%PROGDIR:%{progdir}:g
-s:%%APPNAME:firefox:g
+s:%%APPNAME:%{progname}:g
s:%%PROFILE:.mozilla/firefox:g" \
%{SOURCE3} > %{buildroot}%{progdir}/%{progname}.sh
chmod 755 %{buildroot}%{progdir}/%{progname}.sh
@@ -474,7 +567,8 @@
cp %{SOURCE8} %{buildroot}%{_datadir}/mime/packages/%{progname}.xml
# appdata
mkdir -p %{buildroot}%{_datadir}/appdata
-cp %{SOURCE15} %{buildroot}%{_datadir}/appdata/%{desktop_file_name}.appdata.xml
+sed "s:firefox.desktop:%{desktop_file_name}:g" \
+ %{SOURCE15} > %{buildroot}%{_datadir}/appdata/%{desktop_file_name}.appdata.xml
# install man-page
mkdir -p %{buildroot}%{_mandir}/man1/
cp %{SOURCE11} %{buildroot}%{_mandir}/man1/%{progname}.1
@@ -504,6 +598,7 @@
rm -f %{buildroot}%{progdir}/LICENSE
rm -f %{buildroot}%{progdir}/precomplete
rm -f %{buildroot}%{progdir}/update-settings.ini
+%if 0%{?devpkg}
# devel
mkdir -p %{buildroot}%{_bindir}
install -m 755 %SOURCE12 %{buildroot}%{_bindir}
@@ -525,12 +620,7 @@
%%{__unzip} -q -d "$extdir" "%%1" \
%%{nil}
FIN
-# just dumping an xpi file there doesn't work...
-#%%firefox_ext_install() \
-# extdir="%%{buildroot}%%{firefox_extdir}" \
-# mkdir -p "$extdir" \
-# cp "%%1" "$extdir" \
-# %%{nil}
+%endif
# fdupes
%fdupes %{buildroot}%{progdir}
%fdupes %{buildroot}%{_datadir}
@@ -584,8 +674,8 @@
%{progdir}/gtk2/libmozgtk.so
%{progdir}/gmp-clearkey/
%attr(755,root,root) %{progdir}/%{progname}.sh
-%{progdir}/firefox
-%{progdir}/firefox-bin
+%{progdir}/%{progname}
+%{progdir}/%{progname}-bin
%{progdir}/application.ini
%{progdir}/chrome.manifest
%{progdir}/dependentlibs.list
@@ -616,13 +706,14 @@
%doc %{_mandir}/man1/%{progname}.1.gz
%{_datadir}/appdata/
+%if 0%{?devpkg}
%files devel
%defattr(-,root,root)
%{_bindir}/mozilla-get-app-id
%config %{_sysconfdir}/rpm/macros.%{progname}
+%endif
%if %localize
-
%files translations-common -f %{_tmppath}/translations.common
%defattr(-,root,root)
%dir %{progdir}
@@ -636,11 +727,9 @@
# this package does not need to provide files but is needed to fulfill
# requirements if no other branding package is to be installed
-%if %branding
%files branding-upstream
%defattr(-,root,root)
%dir %{progdir}
-%endif
%if %crashreporter
%files buildsymbols