firefox/firefox.spec
2020-07-27 16:48:25 +08:00

345 lines
14 KiB
RPMSpec
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Name: firefox
Summary: Mozilla Firefox Web browser
Version: 62.0.3
Release: 7
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: http://download-origin.cdn.mozilla.net/pub/firefox/releases/62.0.3/source/firefox-62.0.3.source.tar.xz
Source1: firefox-langpacks-%{version}-20181002.tar.xz
Source2: firefox-mozconfig
Source3: firefox.js
Source4: firefox.desktop
Source5: firefox.sh.in
Source7: mozilla-api-key
Source6: firefox.1
Source9: distribution.ini
Source10: google-api-key
Source11: firefox-wayland.sh.in
Source12: firefox-wayland.desktop
Patch0001: build-jit-atomic-always-lucky.patch
Patch0004: mozilla-build-arm.patch
Patch0006: rhbz-1173156.patch
Patch0008: mozilla-1170092.patch
Patch0009: rhbz-1354671.patch
Patch0010: mozilla-1196777.patch
Patch0011: mozilla-256180.patch
Patch0012: mozilla-1353817.patch
Patch0016: mozilla-1467125.patch
Patch0017: mozilla-1467128.patch
Patch0018: mozilla-1415078.patch
Patch0019: openeuler-20200525.patch
Patch6000: CVE-2020-6811.patch
Patch6001: CVE-2020-6814-Add-FlippedOnce-class.patch
Patch6002: CVE-2020-6814-1.patch
Patch6003: CVE-2020-6814-2.patch
Patch6004: rust-cssparser-Fix-a-future-compat-warning.patch
Patch6005: Bug-1519729-Remove-unused-macro.patch
Patch6006: Bug-1519729-Document-public-macros.patch
Patch6007: Bug-1519729-Typo-fix-in-new-doc-comment.patch
Patch6008: Bug-1556597-Fix-warnings-in-webrender_bindings-in-nightly-rust.patch
Patch6009: Bug-1519629-Document-a-few-more-macros.patch
Patch6010: Bug-1533969-Fix-build-error-with-newer-glibc.patch
BuildRequires: pkgconfig(nspr) >= 4.19 pkgconfig(nss) >= 3.37.3 pkgconfig(libpng) pkgconfig(libffi)
BuildRequires: pkgconfig(zlib) pkgconfig(libIDL-2.0) pkgconfig(gtk+-3.0) pkgconfig(gtk+-2.0) pkgconfig(krb5)
BuildRequires: pkgconfig(pango) pkgconfig(freetype2) >= 2.1.9 pkgconfig(xt) pkgconfig(xrender) pkgconfig(dri)
BuildRequires: pkgconfig(libstartup-notification-1.0) pkgconfig(libnotify) >= 0.7.0 pkgconfig(libcurl)
BuildRequires: pkgconfig(libpulse) pkgconfig(icu-i18n) pkgconfig(gconf-2.0) yasm clang clang-libs autoconf213
BuildRequires: libjpeg-devel bzip2-devel dbus-glib-devel llvm-devel libvpx-devel >= 1.4.0 python2-devel llvm zip
BuildRequires: desktop-file-utils rust cargo clang-devel nss-static >= 3.37.3 nss-devel >= 3.37.3
Requires: mozilla-filesystem p11-kit-trust nspr >= 4.19 nss >= 3.37.3 u2f-hidraw-policy
Provides: webclient firefox-wayland = %{version}-%{release}
Obsoletes: mozilla <= 37:1.7.13 firefox-wayland <= %{version}-%{release}
%description
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.
%prep
%autosetup -n firefox-%{version} -p1
rm -f .mozconfig
cp %{SOURCE2} .mozconfig
cp %{SOURCE7} mozilla-api-key
cp %{SOURCE10} google-api-key
echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig
echo "ac_add_options --enable-official-branding" >> .mozconfig
echo "ac_add_options --with-system-nspr" >> .mozconfig
echo "ac_add_options --with-system-nss" >> .mozconfig
echo "ac_add_options --disable-system-sqlite" >> .mozconfig
echo "ac_add_options --disable-system-cairo" >> .mozconfig
echo "ac_add_options --enable-system-ffi" >> .mozconfig
echo "ac_add_options --disable-debug" >> .mozconfig
echo "ac_add_options --disable-crashreporter" >> .mozconfig
echo "ac_add_options --without-system-jpeg" >> .mozconfig
echo "ac_add_options --with-system-libvpx" >> .mozconfig
echo "ac_add_options --without-system-icu" >> .mozconfig
echo "ac_add_options --enable-optimize='-g -O2'" >> .mozconfig
echo "ac_add_options --disable-jemalloc" >> .mozconfig
echo "ac_add_options --disable-webrtc" >> .mozconfig
chmod -x third_party/rust/itertools/src/lib.rs
%build
echo "Generate big endian version of config/external/icu/data/icud58l.dat"
find ./ -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fno-delete-null-pointer-checks"
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
export CFLAGS=$MOZ_OPT_FLAGS
export CXXFLAGS=$MOZ_OPT_FLAGS
export LDFLAGS=$MOZ_LINK_FLAGS
export PREFIX='%{_prefix}'
export LIBDIR='%{_libdir}'
export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"
export MOZ_SERVICES_SYNC="1"
export STRIP=/bin/true
MOZ_SMP_FLAGS=-j1
[ -z "$RPM_BUILD_NCPUS" ] && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
./mach build
%install
cat > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
pref("general.useragent.locale", "chrome://global/locale/intl.properties");
EOF
DESTDIR=$RPM_BUILD_ROOT make -C objdir install
mkdir -p $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications}
desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE4}
desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE12}
rm -rf $RPM_BUILD_ROOT%{_bindir}/firefox
cat %{SOURCE5} > $RPM_BUILD_ROOT%{_bindir}/firefox
cat %{SOURCE11} > $RPM_BUILD_ROOT%{_bindir}/firefox-wayland
chmod 755 $RPM_BUILD_ROOT%{_bindir}/firefox
chmod 755 $RPM_BUILD_ROOT%{_bindir}/firefox-wayland
install -p -D -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_mandir}/man1/firefox.1
rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/firefox-config
rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/update-settings.ini
for s in 16 22 24 32 48 256; do
mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps
cp -p browser/branding/official/default${s}.png \
$RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
done
mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/symbolic/apps
mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata
cat > $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2014 Richard Hughes <richard@hughsie.com> -->
<!--
BugReportURL: https://bugzilla.mozilla.org/show_bug.cgi?id=1071061
SentUpstream: 2014-09-22
-->
<application>
<id type="desktop">firefox.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<description>
<p>
Bringing together all kinds of awesomeness to make browsing better for you.
Get to your favorite sites quickly even if you dont remember the URLs.
Type your term into the location bar (aka the Awesome Bar) and the autocomplete
function will include possible matches from your browsing history, bookmarked
sites and open tabs.
</p>
<!-- FIXME: Needs another couple of paragraphs -->
</description>
<url type="homepage">http://www.mozilla.org/</url>
<screenshots>
<screenshot type="default">https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/a.png</screenshot>
<screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/b.png</screenshot>
<screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/c.png</screenshot>
</screenshots>
<!-- FIXME: change this to an upstream email address for spec updates
<updatecontact>someone_who_cares@upstream_project.org</updatecontact>
-->
</application>
EOF
echo > %{name}.lang
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}/langpacks
tar xf %{SOURCE1}
for langpack in `ls firefox-langpacks/*.xpi`; do
language=`basename $langpack .xpi`
extensionID=langpack-$language@firefox.mozilla.org
mkdir -p $extensionID
unzip -qq $langpack -d $extensionID
find $extensionID -type f | xargs chmod 644
cd $extensionID
zip -qq -r9mX ../${extensionID}.xpi *
cd -
install -m 644 ${extensionID}.xpi $RPM_BUILD_ROOT%{_libdir}/%{name}/langpacks
language=`echo $language | sed -e 's/-/_/g'`
echo "%%lang($language) %{_libdir}/%{name}/langpacks/${extensionID}.xpi" >> %{name}.lang
done
rm -rf firefox-langpacks
function create_default_langpack() {
language_long=$1
language_short=$2
cd $RPM_BUILD_ROOT%{_libdir}/%{name}/langpacks
ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
cd -
echo "%%lang($language_short) %{_libdir}/%{name}/langpacks/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang
}
create_default_langpack "bn-IN" "bn"
create_default_langpack "es-AR" "es"
create_default_langpack "fy-NL" "fy"
create_default_langpack "ga-IE" "ga"
create_default_langpack "gu-IN" "gu"
create_default_langpack "hi-IN" "hi"
create_default_langpack "hy-AM" "hy"
create_default_langpack "nb-NO" "nb"
create_default_langpack "nn-NO" "nn"
create_default_langpack "pa-IN" "pa"
create_default_langpack "pt-PT" "pt"
create_default_langpack "sv-SE" "sv"
create_default_langpack "zh-TW" "zh"
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/defaults/preferences
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/pref
mkdir -p $RPM_BUILD_ROOT%{_datadir}/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
mkdir -p $RPM_BUILD_ROOT%{_libdir}/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
install -p -c -m 644 LICENSE $RPM_BUILD_ROOT/%{_libdir}/%{name}
rm -rf $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries
ln -s %{_datadir}/myspell $RPM_BUILD_ROOT%{_libdir}/%{name}/dictionaries
cp %{SOURCE3} $RPM_BUILD_ROOT%{_libdir}/%{name}/browser/defaults/preferences
cp build/unix/run-mozilla.sh $RPM_BUILD_ROOT%{_libdir}/%{name}
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}/distribution
cp %{SOURCE9} $RPM_BUILD_ROOT%{_libdir}/%{name}/distribution
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{version}/sdk/lib/libmozjs.so
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{version}/sdk/lib/libmozalloc.so
rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{version}/sdk/lib/libxul.so
%preun
if [ $1 -eq 0 ]; then
rm -rf %{_libdir}/%{name}/components
rm -rf %{_libdir}/%{name}/extensions
rm -rf %{_libdir}/%{name}/plugins
rm -rf %{_libdir}/%{name}/langpacks
fi
%post
update-desktop-database &> /dev/null || :
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun
update-desktop-database &> /dev/null || :
if [ $1 -eq 0 ] ; then
touch --no-create %{_datadir}/icons/hicolor &>/dev/null
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
%pretrans -p <lua>
require 'posix'
require 'os'
if (posix.stat("%{_libdir}/%{name}/browser/defaults/preferences", "type") == "link") then
posix.unlink("%{_libdir}/%{name}/browser/defaults/preferences")
posix.mkdir("%{_libdir}/%{name}/browser/defaults/preferences")
if (posix.stat("%{_libdir}/%{name}/defaults/preferences", "type") == "directory") then
for i,filename in pairs(posix.dir("%{_libdir}/%{name}/defaults/preferences")) do
os.rename("%{_libdir}/%{name}/defaults/preferences/"..filename, "%{_libdir}/%{name}/browser/defaults/preferences/"..filename)
end
f = io.open("%{_libdir}/%{name}/defaults/preferences/README","w")
if f then
f:write("Content of this directory has been moved to %{_libdir}/%{name}/browser/defaults/preferences.")
f:close()
end
end
end
%posttrans
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%files -f %{name}.lang
%license %{_libdir}/%{name}/LICENSE
%doc %{_mandir}/man1/*
%{_bindir}/firefox
%{_bindir}/firefox-wayland
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/*
%dir %{_datadir}/mozilla/extensions/*
%dir %{_libdir}/mozilla/extensions/*
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/langpacks
%attr(644, root, root) %{_libdir}/%{name}/browser/blocklist.xml
%{_libdir}/%{name}/*.so
%{_libdir}/%{name}/gtk2/*.so
%{_libdir}/%{name}/firefox
%{_libdir}/%{name}/firefox-bin
%{_libdir}/%{name}/browser/chrome
%{_libdir}/%{name}/browser/chrome.manifest
%{_libdir}/%{name}/browser/omni.ja
%{_libdir}/%{name}/browser/defaults/preferences/firefox.js
%{_libdir}/%{name}/browser/features/*.xpi
%{_libdir}/%{name}/distribution/distribution.ini
%{_libdir}/%{name}/defaults/pref/channel-prefs.js
%{_libdir}/%{name}/dependentlibs.list
%{_libdir}/%{name}/dictionaries
%{_libdir}/%{name}/omni.ja
%{_libdir}/%{name}/platform.ini
%{_libdir}/%{name}/plugin-container
%{_libdir}/%{name}/gmp-clearkey
%{_libdir}/%{name}/fonts/TwemojiMozilla.ttf
%{_libdir}/%{name}/chrome.manifest
%{_libdir}/%{name}/run-mozilla.sh
%{_libdir}/%{name}/application.ini
%{_libdir}/%{name}/pingsender
%ghost %{_libdir}/%{name}/browser/features/aushelper@mozilla.org.xpi
%exclude %{_libdir}/%{name}/removed-files
%{_datadir}/appdata/*.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/16x16/apps/firefox.png
%{_datadir}/icons/hicolor/22x22/apps/firefox.png
%{_datadir}/icons/hicolor/24x24/apps/firefox.png
%{_datadir}/icons/hicolor/256x256/apps/firefox.png
%{_datadir}/icons/hicolor/32x32/apps/firefox.png
%{_datadir}/icons/hicolor/48x48/apps/firefox.png
%{_datadir}/applications/firefox-wayland.desktop
%changelog
* Wed Jul 22 2020 lingsheng <lingsheng@huawei.com> - 62.0.3-7
- Fix firefox build with rust 1.38
* Mon May 25 2020 huanghaitao <huanghaitao8@huawei.com> - 62.0.3-6
- Type:cves
- ID: CVE-2020-6811 CVE-2020-6814
- SUG:restart
- DESC: fix CVE-2020-6811 CVE-2020-6814
* Mon May 25 2020 Captain Wei<captain.a.wei@gmail.com> - 62.0.3-5
- fix unstable_name_collisions problem when compile
* Wen Feb 26 2020 xuxijian<xuxijian@huawei.com> - 62.0.3-4
- Package init