- Mozilla Firefox 68.0

* Dark mode in reader view
  * Improved extension security and discovery
  * Cryptomining and fingerprinting protections are added to strict
    content blocking settings in Privacy & Security preferences
  * Camera and microphone access now require an HTTPS connection
  MFSA 2019-21 (bsc#1140868)
  * CVE-2019-9811 (bmo#1538007, bmo#1539598, bmo#1563327)
    Sandbox escape via installation of malicious languagepack
  * CVE-2019-11711 (bmo#1552541)
    Script injection within domain through inner window reuse
  * CVE-2019-11712 (bmo#1543804)
    Cross-origin POST requests can be made with NPAPI plugins by
    following 308 redirects
  * CVE-2019-11713 (bmo#1528481)
    Use-after-free with HTTP/2 cached stream
  * CVE-2019-11714 (bmo#1542593)
    NeckoChild can trigger crash when accessed off of main thread
  * CVE-2019-11729 (bmo#1515342)
    Empty or malformed p256-ECDH public keys may trigger a segmentation fault
  * CVE-2019-11715 (bmo#1555523)
    HTML parsing error can contribute to content XSS
  * CVE-2019-11716 (bmo#1552632)
    globalThis not enumerable until accessed
  * CVE-2019-11717 (bmo#1548306)
    Caret character improperly escaped in origins
  * CVE-2019-11718 (bmo#1408349)
    Activity Stream writes unsanitized content to innerHTML
  * CVE-2019-11719 (bmo#1540541)
    Out-of-bounds read when importing curve25519 private key

OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=748
This commit is contained in:
Wolfgang Rosenauer 2019-07-09 21:21:11 +00:00 committed by Git OBS Bridge
parent cd62703825
commit 6dafe68fc5
22 changed files with 750 additions and 384 deletions

View File

@ -1,3 +1,78 @@
-------------------------------------------------------------------
Mon Jul 8 13:30:35 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
- Mozilla Firefox 68.0
* Dark mode in reader view
* Improved extension security and discovery
* Cryptomining and fingerprinting protections are added to strict
content blocking settings in Privacy & Security preferences
* Camera and microphone access now require an HTTPS connection
MFSA 2019-21 (bsc#1140868)
* CVE-2019-9811 (bmo#1538007, bmo#1539598, bmo#1563327)
Sandbox escape via installation of malicious languagepack
* CVE-2019-11711 (bmo#1552541)
Script injection within domain through inner window reuse
* CVE-2019-11712 (bmo#1543804)
Cross-origin POST requests can be made with NPAPI plugins by
following 308 redirects
* CVE-2019-11713 (bmo#1528481)
Use-after-free with HTTP/2 cached stream
* CVE-2019-11714 (bmo#1542593)
NeckoChild can trigger crash when accessed off of main thread
* CVE-2019-11729 (bmo#1515342)
Empty or malformed p256-ECDH public keys may trigger a segmentation fault
* CVE-2019-11715 (bmo#1555523)
HTML parsing error can contribute to content XSS
* CVE-2019-11716 (bmo#1552632)
globalThis not enumerable until accessed
* CVE-2019-11717 (bmo#1548306)
Caret character improperly escaped in origins
* CVE-2019-11718 (bmo#1408349)
Activity Stream writes unsanitized content to innerHTML
* CVE-2019-11719 (bmo#1540541)
Out-of-bounds read when importing curve25519 private key
* CVE-2019-11720 (bmo#1556230)
Character encoding XSS vulnerability
* CVE-2019-11721 (bmo#1256009)
Domain spoofing through unicode latin 'kra' character
* CVE-2019-11730 (bmo#1558299)
Same-origin policy treats all files in a directory as having the
same-origin
* CVE-2019-11723 (bmo#1528335)
Cookie leakage during add-on fetching across private browsing boundaries
* CVE-2019-11724 (bmo#1512511)
Retired site input.mozilla.org has remote troubleshooting permissions
* CVE-2019-11725 (bmo#1483510)
Websocket resources bypass safebrowsing protections
* CVE-2019-11727 (bmo#1552208)
PKCS#1 v1.5 signatures can be used for TLS 1.3
* CVE-2019-11728 (bmo#1552993)
Port scanning through Alt-Svc header
* CVE-2019-11710 (bmo#1549768, bmo#1548611, bmo#1533842, bmo#1537692,
bmo#1540590, bmo#1551907, bmo#1510345, bmo#1535482, bmo#1535848,
bmo#1547472, bmo#1547760, bmo#1507696, bmo#1544180)
Memory safety bugs fixed in Firefox 68
* CVE-2019-11709 (bmo#1547266, bmo#1540759, bmo#1548822, bmo#1550498
bmo#1515052, bmo#1539219, bmo#1547757, bmo#1550498, bmo#1533522)
Memory safety bugs fixed in Firefox 68 and Firefox ESR 60.8
- requires
* NSS 3.44.1
* rust/cargo 1.34
* rust-cbindgen 0.8.7
- rebased patches
* mozilla-aarch64-startup-crash.patch
* mozilla-kde.patch
* mozilla-nongnome-proxies.patch
* firefox-kde.patch
- use new create-tar.sh and add tar_stamps for package definitions
- added patches imported from SLE flavour
* mozilla-gcc-internal-compiler-error.patch
* mozilla-bmo1005535.patch
* mozilla-ppc-altivec_static_inline.patch
* mozilla-reduce-rust-debuginfo.patch
* mozilla-s390-bigendian.patch
* mozilla-s390-context.patch
-------------------------------------------------------------------
Mon Jul 2 14:15:17 UTC 2019 - Martin Liška <mliska@suse.cz>

View File

@ -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,13 +18,13 @@
# changed with every update
%define major 67
%define mainver %major.0.4
%define orig_version 67.0.4
%define major 68
%define mainver %major.0
%define orig_version 68.0
%define orig_suffix %{nil}
%define update_channel release
%define branding 1
%define releasedate 20190619235627
%define releasedate 20190705220548
%define source_prefix firefox-%{orig_version}
# always build with GCC as SUSE Security Team requires that
@ -70,7 +70,7 @@ BuildRequires: gcc7-c++
%else
BuildRequires: gcc-c++
%endif
BuildRequires: cargo >= 1.32
BuildRequires: cargo >= 1.34
BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel
BuildRequires: libidl-devel
@ -79,14 +79,14 @@ BuildRequires: libnotify-devel
BuildRequires: libproxy-devel
BuildRequires: makeinfo
BuildRequires: mozilla-nspr-devel >= 4.21
BuildRequires: mozilla-nss-devel >= 3.43
BuildRequires: mozilla-nss-devel >= 3.44.1
BuildRequires: nasm >= 2.13
BuildRequires: nodejs >= 8.11
BuildRequires: python-devel
BuildRequires: python2-xml
BuildRequires: python3 >= 3.5
BuildRequires: rust >= 1.32
BuildRequires: rust-cbindgen >= 0.8.2
BuildRequires: rust >= 1.34
BuildRequires: rust-cbindgen >= 0.8.7
BuildRequires: startup-notification-devel
BuildRequires: unzip
BuildRequires: update-desktop-files
@ -95,7 +95,7 @@ BuildRequires: xvfb-run
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
@ -138,6 +138,7 @@ Source: http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/fi
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
@ -147,7 +148,7 @@ Source10: compare-locales.tar.xz
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
# Set up API keys, see http://www.chromium.org/developers/how-tos/api-keys
@ -155,18 +156,24 @@ Source16: MozillaFirefox.changes
# 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
Source20: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}/source/%{progname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
Source21: 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
Patch9: mozilla-bmo1463035.patch
Patch10: mozilla-cubeb-noreturn.patch
Patch11: mozilla-fix-aarch64-libopus.patch
Patch12: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.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-gcc-internal-compiler-error.patch
Patch11: mozilla-s390-context.patch
Patch12: mozilla-s390-bigendian.patch
Patch13: mozilla-reduce-rust-debuginfo.patch
Patch14: mozilla-ppc-altivec_static_inline.patch
Patch15: mozilla-bmo1005535.patch
# Firefox/browser
Patch101: firefox-kde.patch
Patch102: firefox-branded-icons.patch
@ -209,7 +216,7 @@ Development files for %{appname} to make packaging of addons easier.
%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}
@ -262,6 +269,15 @@ symbols meant for upload to Mozilla's crash collector database.
%prep
%if %localize
# If generated incorrectly, the tarball will be ~270B in
# size, so 1MB seems like good enough limit to check.
MINSIZE=1048576
if (( $(stat -c%s "%{SOURCE7}") < MINSIZE)); then
echo "Translations tarball %{SOURCE7} not generated properly."
exit 1
fi
%setup -q -n %{source_prefix} -b 7 -b 10
%else
%setup -q -n %{source_prefix}
@ -271,11 +287,19 @@ cd $RPM_BUILD_DIR/%{source_prefix}
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%ifarch s390x
%patch12 -p1
%endif
%patch13 -p1
%patch14 -p1
%patch15 -p1
# Firefox
%patch101 -p1
%patch102 -p1
@ -283,7 +307,7 @@ cd $RPM_BUILD_DIR/%{source_prefix}
%build
# 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" {} +
@ -441,7 +465,7 @@ sed -r '/^(ja-JP-mac|en-US|)$/d;s/ .*$//' $RPM_BUILD_DIR/%{source_prefix}/browse
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

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c2d3ff21d8f2f8aa24da600f402d848e377e20c4f409092f9bf15fa41b69c0fc
size 28400
oid sha256:b0c9df05c85ba1e6089280153c4e929063e6ec30db07929de68ddb06d5f8031a
size 28392

View File

@ -1,20 +1,124 @@
#!/bin/bash
# TODO
# http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/linux-x86_64/en-US/firefox-48.0.json
# "moz_source_stamp": "c1de04f39fa956cfce83f6065b0e709369215ed5"
# http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/l10n_changesets.txt
function print_usage_and_exit() {
echo "Usage: create-tar.sh tar_stamp"
echo ""
echo "Where tar_stamp should look like this:"
echo ""
cat << EOF
# Node ID: 64ee63facd4ff96b3e8590cff559d7e97ac6b061
PRODUCT="firefox" # "firefox" or "thunderbird"
CHANNEL="esr60"
VERSION="60.7.0"
VERSION_SUFFIX="esr"
FF_RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded
TB_RELEASE_TAG="" # Only relevant for Thunderbird
PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation)
PREV_VERSION_SUFFIX="esr"
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
EOF
CHANNEL="release"
exit 1
}
if [ $# -ne 1 ]; then
print_usage_and_exit
fi
# Sourcing the given tar_stamp-file to have the variables available
source "$1" || print_usage_and_exit
# Internal variables
BRANCH="releases/mozilla-$CHANNEL"
RELEASE_TAG="ea5154beddff08b919697e3bed6f38cfe3a3d82f"
VERSION="67.0.4"
VERSION_SUFFIX=""
LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
if [ "$PRODUCT" = "firefox" ]; then
LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
else
LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json"
fi
SOURCE_TARBALL="$PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz"
FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source"
# Make first letter of PRODCUT upper case
PRODUCT_CAP="${PRODUCT^}"
LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP"
# Exit script on CTRL+C
trap "exit" INT
function check_tarball_source () {
TARBALL=$1
# Print out what is going to be done:
if [ -e $TARBALL ]; then
echo "Reuse existing file"
elif wget --spider $FTP_URL/$TARBALL 2> /dev/null; then
echo "Download file"
else
echo "Mercurial checkout"
fi
}
function ask_cont_abort_question() {
while true; do
read -p "$1 [(c)ontinue/(a)bort] " ca
case $ca in
[Cc]* ) return 0 ;;
[Aa]* ) return 1 ;;
* ) echo "Please answer c or a.";;
esac
done
}
function check_for_binary() {
if ! test -x $1; then
echo "$1 is missing: execute zypper in $2"
exit 5
fi
}
function locales_get() {
TMP_VERSION="$1"
URL_TO_CHECK="${LOCALES_URL}-${TMP_VERSION}"
LAST_FOUND=""
# Unfortunately, locales-files are not associated to releases, but to builds.
# And since we don't know which build was the final build, we go from 1 to
# the last we find and try to find the latest one that exists.
# Error only if not even the first one exists
for BUILD_ID in $(seq 1 9); do
FINAL_URL="${URL_TO_CHECK}-build${BUILD_ID}.json"
if wget --quiet --spider "$FINAL_URL"; then
LAST_FOUND="$FINAL_URL"
elif [ $BUILD_ID -gt 1 ]; then
echo "$LAST_FOUND"
return 0
else
echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2
return 1
fi
done
}
function locales_parse() {
URL="$1"
curl -s "$URL" | python -c "import json; import sys; \
print('\n'.join(['{} {}'.format(key, value['changeset']) \
for key, value in sorted(json.load(sys.stdin)['locales'].items())]));"
}
function locales_unchanged() {
# If no json-file for one of the versions can be found, we say "they changed"
prev_url=$(locales_get "$PREV_VERSION$PREV_VERSION_SUFFIX") || return 1
curr_url=$(locales_get "$VERSION$VERSION_SUFFIX") || return 1
prev_content=$(locales_parse "$prev_url") || exit 1
curr_content=$(locales_parse "$curr_url") || exit 1
diff -y --suppress-common-lines -d <(echo "$prev_content") <(echo "$curr_content")
}
# check required tools
test -x /usr/bin/hg || ( echo "hg missing: execute zypper in mercurial"; exit 5 )
test -x /usr/bin/jq || ( echo "jq missing: execute zypper in jq"; exit 5 )
check_for_binary /usr/bin/hg "mercurial"
check_for_binary /usr/bin/jq "jq"
which python > /dev/null || exit 1
# use parallel compression, if available
compression='-J'
@ -23,69 +127,139 @@ if (($? != 127)); then
compression='-Ipixz'
fi
if [ -z ${SKIP_LOCALES+x} ]; then
# TODO: Thunderbird has usually "default" as locale entry.
# There we probably need to double-check Firefox-locals
# For now, just download every time for Thunderbird
if [ "$PRODUCT" = "firefox" ] && [ "$PREV_VERSION" != "" ] && locales_unchanged; then
printf "%-40s: Did not change. Skipping.\n" "locales"
LOCALES_CHANGED=0
else
printf "%-40s: Need to download.\n" "locales"
LOCALES_CHANGED=1
fi
else
printf "%-40s: User forced skip (SKIP_LOCALES set)\n" "locales"
fi
# Check what is going to be done and ask for consent
for ff in $SOURCE_TARBALL $SOURCE_TARBALL.asc; do
printf "%-40s: %s\n" $ff "$(check_tarball_source $ff)"
done
$(ask_cont_abort_question "Is this ok?") || exit 0
# Try to download tar-ball from officiall mozilla-mirror
if [ ! -e $SOURCE_TARBALL ]; then
wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source/$SOURCE_TARBALL
fi
# including signature
if [ ! -e $SOURCE_TARBALL.asc ]; then
wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source/$SOURCE_TARBALL.asc
fi
# we might have an upstream archive already and can skip the checkout
if [ -e firefox-$VERSION$VERSION_SUFFIX.source.tar.xz ]; then
echo "skip firefox checkout and use available archive"
# still need to extract the locale information from the archive
echo "extract locale changesets"
tar -xf firefox-$VERSION$VERSION_SUFFIX.source.tar.xz $LOCALE_FILE
if [ -e $SOURCE_TARBALL ]; then
if [ -z ${SKIP_LOCALES+x} ]; then
# still need to extract the locale information from the archive
echo "extract locale changesets"
tar -xf $SOURCE_TARBALL $LOCALE_FILE
fi
else
# We are working on a version that is not yet published on the mozilla mirror
# so we have to actually check out the repo
# mozilla
if [ -d firefox-$VERSION ]; then
pushd firefox-$VERSION
if [ -d $PRODUCT-$VERSION ]; then
pushd $PRODUCT-$VERSION || exit 1
_repourl=$(hg paths)
case "$_repourl" in
*$BRANCH*)
echo "updating previous tree"
hg pull
popd
popd || exit 1
;;
* )
echo "removing obsolete tree"
popd
rm -rf firefox-$VERSION
popd || exit 1
rm -rf $PRODUCT-$VERSION
;;
esac
fi
if [ ! -d firefox-$VERSION ]; then
if [ ! -d $PRODUCT-$VERSION ]; then
echo "cloning new $BRANCH..."
hg clone http://hg.mozilla.org/$BRANCH firefox-$VERSION
hg clone http://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION
if [ "$PRODUCT" = "thunderbird" ]; then
hg clone http://hg.mozilla.org/releases/comm-$CHANNEL thunderbird-$VERSION/comm
fi
fi
pushd firefox-$VERSION
hg update --check
[ "$RELEASE_TAG" == "default" ] || hg update -r $RELEASE_TAG
pushd $PRODUCT-$VERSION || exit 1
hg update --check $FF_RELEASE_TAG
[ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG
# get repo and source stamp
echo -n "REV=" > ../source-stamp.txt
hg -R . parent --template="{node|short}\n" >> ../source-stamp.txt
echo -n "REPO=" >> ../source-stamp.txt
hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" >> ../source-stamp.txt
popd
if [ "$PRODUCT" = "thunderbird" ]; then
pushd comm || exit 1
hg update --check $TB_RELEASE_TAG
popd || exit 1
rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub
fi
popd || exit 1
echo "creating archive..."
tar $compression -cf firefox-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS firefox-$VERSION
tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION
fi
# l10n
echo "fetching locales..."
test ! -d l10n && mkdir l10n
jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
while read locale changeset ; do
case $locale in
ja-JP-mac|en-US)
;;
*)
echo "reading changeset information for $locale"
echo "fetching $locale changeset $changeset ..."
hg clone http://hg.mozilla.org/l10n-central/$locale l10n/$locale
[ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $changeset
;;
esac
done
echo "creating l10n archive..."
tar $compression -cf l10n-$VERSION$VERSION_SUFFIX.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg l10n
if [ ! -z ${SKIP_LOCALES+x} ]; then
echo "Skipping locales-creation."
exit 0
fi
if [ $LOCALES_CHANGED -ne 0 ]; then
# l10n
echo "fetching locales..."
test ! -d l10n && mkdir l10n
jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
while read locale changeset ; do
case $locale in
ja-JP-mac|en-US)
;;
*)
echo "reading changeset information for $locale"
echo "fetching $locale changeset $changeset ..."
if [ -d "l10n/$locale/.hg" ]; then
pushd "l10n/$locale" || exit 1
hg pull
popd || exit 1
else
hg clone "http://hg.mozilla.org/l10n-central/$locale" "l10n/$locale"
fi
[ "$FF_RELEASE_TAG" == "default" ] || hg -R "l10n/$locale" up -C -r "$changeset"
;;
esac
done
echo "creating l10n archive..."
if [ "$PRODUCT" = "thunderbird" ]; then
TB_TAR_FLAGS="--exclude=browser --exclude=suite"
fi
tar $compression -cf l10n-$VERSION$VERSION_SUFFIX.tar.xz \
--exclude=.hgtags --exclude=.hgignore --exclude=.hg \
$TB_TAR_FLAGS \
l10n
fi
# compare-locales
echo "creating compare-locales"
hg clone http://hg.mozilla.org/build/compare-locales
if [ -d compare-locales/.hg ]; then
pushd compare-locales || exit 1
hg pull
popd || exit 1
else
hg clone http://hg.mozilla.org/build/compare-locales
fi
tar $compression -cf compare-locales.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2fb2d3e64a6947ef4f8212b72649acf2aa2cd4c8f70548abb636dd581fd6dc5
size 286036836

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iQIcBAABCAAGBQJdCt3FAAoJEPGmZo+7fVcuIJAP/32pus3uvJ5CJXAZOZI18sqk
hAVRv4QM8p5Z0CaK1Le/I7V2vD2y0JXHvsHKBYehFyl301QodTT0S/7j78eFz4Sd
0GcxUDLQFW8TOplEl1kcKchd95s2FaIHjnqk6Q+cJ046SN78LUojrdwSohC6v4O3
Mn6lGCDYPcSlAOEAyisvaQM2hc894zvsVBw3yla8RhKxSuPTzLuDkQFKYN2rjhhh
FbB/8N7enNchlltcYdrr/ssHtNZLCdgNtGW1b62eWR3JZ9KJp8pLpkbZvFNnLENk
ZpHhu5GPy3m5ZVCUFSBuFaBmffCwsiJjVbAfTqnR4DMuFCbFwIUPDnjD/S/W1cS0
Y2Sc89ts4lJAS1aACK6Ms5peEt9GWV0QUlEx6k+NVf8AybWqufFiyPQqLOQfbKQh
Y3OP8/DzHNLZQTUDXCP3rwT3fZKOLMIok7+wL2yha6Vs/bv+p7NEME/YJNPUX1v3
i/PeEO/XKSkrP2alfmVMbwXf8k87Zqv3A+fI7IdHvRauehyfXdyCDQNvjh+v7im4
iuozg5++frG6sxq5l8oOSUx6ANGWJ7krUG0AdW8rNTPhqnOTCVEd7UkI51Q2FTwg
mlfR0fde7kEBhsuqqaVEHBR+fqYRSutPFkMFsFHkQKvoPWnruFa7LbSPyhFdPhMC
mgCcUAqOk9vexxDjpra7
=WJRz
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f7d61a08820088f1280d27f0808e355152c1dd0c94625fd077ced7319e522565
size 315855672

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl0f/2YACgkQ8aZmj7t9
Vy4Q9Q/7BUeGl3mPqCC+RMSQyp2r1hPouNj1aIzWgjmUCNk+2soKgYXFameB7/UT
nWejptelT261tAUdRUYfttXk+KBsT4wOMEf0UrlC7GTGllfwjoxc/JWUUmXpJTa6
M9xAUIa6NJbXIGCfaRk/PRdz+TAjsLWLQsdavw5zcyMoNiYyTARO0ap1luUo/FAg
9aZ7MtBQ1z4C9B3vYuTH6qgGIA1wazstrNg4C4rgkHAXAzvYW9NMNAO53d0F9w1q
UVDw0VY7G27gOnrysTJH12Lb18AXFWPXWbF5gmxKbkpdjeGlC1q7GvLV+TAI3m7H
UL1fV3c8Y8+9TEJ0c95FvZwTcUmuNDJagt7bu/MNu7i9gyWBqucNnF3NgkmTR+EE
BG21l7lSGBh8s4vl4upoCUoQ/bpriMBw767++TA5uzvj7NZXsOwU4sY97gpiJJIa
0VwVjdHKjQTUITrHuH2hrqD0dNBL8FgFATXxVVEwDGxhiR5ZP9tduL+a/Sn2pcQd
D9v5tJ/3GSlfYJqIAiNMaq139BZBYStcibk99pct5WU5jH6conzx4QEAHM2eaFBX
f87G7PKEfvHiVhuUJF8sblbO1DSj0Qk08/bwcVjW8vTAEKcz7AIQw18FoNxlgcg+
kIW6xfR/P/sLMnwgc9ZEvVd25AYBJ1qwyBDwwAlcEbEmYoftVJo=
=9AVI
-----END PGP SIGNATURE-----

View File

@ -1,11 +1,20 @@
# HG changeset patch
# Parent 18632e53d0b0c4c03f254ca2dbbeac8f48ec6f5c
# User msirringhaus@suse.de
# Date 1559300151 -7200
# Fri May 31 12:55:51 2019 +0200
# Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
# Parent 428161c3b9599083e1b8710eda1760f1f707ab11
How to apply this patch:
1. Import and apply it
2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
3. Find editBookmarkPanelDoneButton
4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
5. hg qrefresh
diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
new file mode 100644
--- /dev/null
+++ b/browser/base/content/browser-kde.xul
@@ -0,0 +1,1404 @@
diff -r 428161c3b959 -r 54d41b0033b8 browser/base/content/browser-kde.xul
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/base/content/browser-kde.xul Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,1375 @@
+#filter substitution
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
@ -37,7 +46,6 @@ new file mode 100644
+<?xml-stylesheet href="chrome://browser/skin/searchbar.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/places/tree-icons.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/compacttheme.css" type="text/css" alternate="yes" title="Light/Dark"?>
+
+# All DTD information is stored in a separate file so that it can be shared by
+# hiddenWindow.xul.
@ -89,10 +97,9 @@ new file mode 100644
+# that they can be shared with macWindow.inc.xul.
+#include global-scripts.inc
+
+<script type="application/javascript">
+<script>
+ Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-compacttheme.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-contentblocking.js", this);
+#ifdef MOZ_DATA_REPORTING
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
@ -133,69 +140,52 @@ new file mode 100644
+ <menupopup id="tabContextMenu"
+ onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);"
+ onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
+ <menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;"
+ <menuitem id="context_reloadTab" data-lazy-l10n-id="reload-tab"
+ oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
+ <menuitem id="context_reloadSelectedTabs" label="&reloadTabs.label;" hidden="true"
+ accesskey="&reloadTabs.accesskey;"
+ <menuitem id="context_reloadSelectedTabs" data-lazy-l10n-id="reload-tabs" hidden="true"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"/>
+ <menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/>
+ <menuitem id="context_toggleMuteSelectedTabs" hidden="true"
+ oncommand="gBrowser.toggleMuteAudioOnMultiSelectedTabs(TabContextMenu.contextTab);"/>
+ <menuitem id="context_pinTab" label="&pinTab.label;"
+ accesskey="&pinTab.accesskey;"
+ <menuitem id="context_pinTab" data-lazy-l10n-id="pin-tab"
+ oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
+ <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
+ accesskey="&unpinTab.accesskey;"
+ <menuitem id="context_unpinTab" data-lazy-l10n-id="unpin-tab" hidden="true"
+ oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
+ <menuitem id="context_pinSelectedTabs" label="&pinSelectedTabs.label;" hidden="true"
+ accesskey="&pinSelectedTabs.accesskey;"
+ <menuitem id="context_pinSelectedTabs" data-lazy-l10n-id="pin-selected-tabs" hidden="true"
+ oncommand="gBrowser.pinMultiSelectedTabs();"/>
+ <menuitem id="context_unpinSelectedTabs" label="&unpinSelectedTabs.label;" hidden="true"
+ accesskey="&unpinSelectedTabs.accesskey;"
+ <menuitem id="context_unpinSelectedTabs" data-lazy-l10n-id="unpin-selected-tabs" hidden="true"
+ oncommand="gBrowser.unpinMultiSelectedTabs();"/>
+ <menuitem id="context_duplicateTab" label="&duplicateTab.label;"
+ accesskey="&duplicateTab.accesskey;"
+ <menuitem id="context_duplicateTab" data-lazy-l10n-id="duplicate-tab"
+ oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
+ <menuitem id="context_duplicateTabs" label="&duplicateTabs.label;"
+ accesskey="&duplicateTabs.accesskey;"
+ <menuitem id="context_duplicateTabs" data-lazy-l10n-id="duplicate-tabs"
+ oncommand="TabContextMenu.duplicateSelectedTabs();"/>
+ <menuseparator/>
+ <menuitem id="context_selectAllTabs" label="&selectAllTabs.label;" accesskey="&selectAllTabs.accesskey;"
+ <menuitem id="context_selectAllTabs" data-lazy-l10n-id="select-all-tabs"
+ oncommand="gBrowser.selectAllTabs();"/>
+ <menuitem id="context_bookmarkSelectedTabs"
+ hidden="true"
+ label="&bookmarkSelectedTabs.label;"
+ accesskey="&bookmarkSelectedTabs.accesskey;"
+ data-lazy-l10n-id="bookmark-selected-tabs"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"/>
+ <menuitem id="context_bookmarkTab"
+ label="&bookmarkTab.label;"
+ accesskey="&bookmarkTab.accesskey;"
+ data-lazy-l10n-id="bookmark-tab"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.getUniquePages([TabContextMenu.contextTab]));"/>
+ <menu id="context_reopenInContainer"
+ label="&reopenInContainer.label;"
+ accesskey="&reopenInContainer.accesskey;"
+ data-lazy-l10n-id="reopen-in-container"
+ hidden="true">
+ <menupopup oncommand="TabContextMenu.reopenInContainer(event);"
+ onpopupshowing="TabContextMenu.createReopenInContainerMenu(event);"/>
+ </menu>
+ <menu id="context_moveTabOptions"
+ multiselectcontextlabel="&moveSelectedTabOptions.label;"
+ multiselectcontextaccesskey="&moveSelectedTabOptions.accesskey;"
+ nonmultiselectcontextlabel="&moveTabOptions.label;"
+ nonmultiselectcontextaccesskey="&moveTabOptions.accesskey;">
+ <menu id="context_moveTabOptions">
+ <menupopup id="moveTabOptionsMenu">
+ <menuitem id="context_moveToStart"
+ label="&moveToStart.label;"
+ accesskey="&moveToStart.accesskey;"
+ data-lazy-l10n-id="move-to-start"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.moveTabsToStart(TabContextMenu.contextTab);"/>
+ <menuitem id="context_moveToEnd"
+ label="&moveToEnd.label;"
+ accesskey="&moveToEnd.accesskey;"
+ data-lazy-l10n-id="move-to-end"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.moveTabsToEnd(TabContextMenu.contextTab);"/>
+ <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
+ accesskey="&moveToNewWindow.accesskey;"
+ <menuitem id="context_openTabInWindow" data-lazy-l10n-id="move-to-new-window"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.replaceTabsWithWindow(TabContextMenu.contextTab);"/>
+ </menupopup>
@ -206,18 +196,17 @@ new file mode 100644
+ onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle, TabContextMenu.contextTab.multiselected);"/>
+ </menu>
+ <menuseparator/>
+ <menuitem id="context_closeTabsToTheEnd" label="&closeTabsToTheEnd.label;" accesskey="&closeTabsToTheEnd.accesskey;"
+ <menuitem id="context_closeTabsToTheEnd" data-lazy-l10n-id="close-tabs-to-the-end"
+ oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab, {animate: true});"/>
+ <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
+ <menuitem id="context_closeOtherTabs" data-lazy-l10n-id="close-other-tabs"
+ oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
+ <menuitem id="context_undoCloseTab"
+ label="&undoCloseTab.label;"
+ accesskey="&undoCloseTab.accesskey;"
+ data-lazy-l10n-id="undo-close-tab"
+ observes="History:UndoCloseTab"/>
+ <menuitem id="context_closeTab" label="&closeTab.label;" accesskey="&closeTab.accesskey;"
+ <menuitem id="context_closeTab" data-lazy-l10n-id="close-tab"
+ oncommand="gBrowser.removeTab(TabContextMenu.contextTab, { animate: true });"/>
+ <menuitem id="context_closeSelectedTabs" label="&closeTabs.label;"
+ hidden="true" accesskey="&closeTabs.accesskey;"
+ <menuitem id="context_closeSelectedTabs" data-lazy-l10n-id="close-tabs"
+ hidden="true"
+ oncommand="gBrowser.removeMultiSelectedTabs();"/>
+ </menupopup>
+
@ -301,11 +290,17 @@ new file mode 100644
+ aria-labelledby="editBookmarkPanelTitle">
+ <box class="panel-header">
+ <label id="editBookmarkPanelTitle"/>
+ <toolbarbutton id="editBookmarkPanelInfoButton" oncommand="StarUI.toggleRecommendation();" >
+ <image/>
+ </toolbarbutton>
+ </box>
+ <html:div id="editBookmarkPanelFaviconContainer">
+ <html:img id="editBookmarkPanelFavicon"/>
+ <html:div id="editBookmarkPanelInfoArea">
+ <html:div id="editBookmarkPanelRecommendation"></html:div>
+ <html:div id="editBookmarkPanelFaviconContainer">
+ <html:img id="editBookmarkPanelFavicon"/>
+ </html:div>
+ <html:div id="editBookmarkPanelImage"></html:div>
+ </html:div>
+ <box id="editBookmarkPanelImage"/>
+#include ../../components/places/content/editBookmarkPanel.inc.xul
+ <vbox id="editBookmarkPanelBottomContent"
+ flex="1">
@ -424,6 +419,11 @@ new file mode 100644
+ label="&customizeMenu.removeExtension.label;"
+ contexttype="toolbaritem"
+ class="customize-context-removeExtension"/>
+ <menuitem oncommand="ToolbarContextMenu.reportExtensionForContextAction(this.parentElement, 'toolbar_context_menu')"
+ accesskey="&customizeMenu.reportExtension.accesskey;"
+ label="&customizeMenu.reportExtension.label;"
+ contexttype="toolbaritem"
+ class="customize-context-reportExtension"/>
+ <menuseparator/>
+ <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
+ accesskey="&customizeMenu.pinToOverflowMenu.accesskey;"
@ -444,32 +444,26 @@ new file mode 100644
+ <menuitem id="toolbar-context-reloadSelectedTab"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
+ label="&toolbarContextMenu.reloadSelectedTab.label;"
+ accesskey="&toolbarContextMenu.reloadSelectedTab.accesskey;"/>
+ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tab"/>
+ <menuitem id="toolbar-context-reloadSelectedTabs"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
+ label="&toolbarContextMenu.reloadSelectedTabs.label;"
+ accesskey="&toolbarContextMenu.reloadSelectedTabs.accesskey;"/>
+ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tabs"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTab"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
+ label="&toolbarContextMenu.bookmarkSelectedTab.label;"
+ accesskey="&toolbarContextMenu.bookmarkSelectedTab.accesskey;"/>
+ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tab"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTabs"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
+ label="&toolbarContextMenu.bookmarkSelectedTabs.label;"
+ accesskey="&toolbarContextMenu.bookmarkSelectedTabs.accesskey;"/>
+ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tabs"/>
+ <menuitem id="toolbar-context-selectAllTabs"
+ contexttype="tabbar"
+ oncommand="gBrowser.selectAllTabs();"
+ label="&toolbarContextMenu.selectAllTabs.label;"
+ accesskey="&toolbarContextMenu.selectAllTabs.accesskey;"/>
+ data-lazy-l10n-id="toolbar-context-menu-select-all-tabs"/>
+ <menuitem id="toolbar-context-undoCloseTab"
+ contexttype="tabbar"
+ label="&toolbarContextMenu.undoCloseTab.label;"
+ accesskey="&toolbarContextMenu.undoCloseTab.accesskey;"
+ data-lazy-l10n-id="toolbar-context-menu-undo-close-tab"
+ observes="History:UndoCloseTab"/>
+ <menuseparator/>
+ <menuseparator id="viewToolbarsMenuSeparator"/>
@ -631,7 +625,8 @@ new file mode 100644
+#include popup-notifications.inc
+
+#include ../../components/customizableui/content/panelUI.inc.xul
+#include ../../components/controlcenter/content/panel.inc.xul
+#include ../../components/controlcenter/content/identityPanel.inc.xul
+#include ../../components/controlcenter/content/protectionsPanel.inc.xul
+#include ../../components/downloads/content/downloadsPanel.inc.xul
+#include browser-allTabsMenu.inc.xul
+
@ -645,31 +640,23 @@ new file mode 100644
+ onpopupshowing="UpdateDynamicShortcutTooltipText(this);"/>
+
+ <menupopup id="SyncedTabsSidebarContext">
+ <menuitem label="&syncedTabs.context.open.label;"
+ accesskey="&syncedTabs.context.open.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-open"
+ id="syncedTabsOpenSelected" where="current"/>
+ <menuitem label="&syncedTabs.context.openInNewTab.label;"
+ accesskey="&syncedTabs.context.openInNewTab.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-tab"
+ id="syncedTabsOpenSelectedInTab" where="tab"/>
+ <menuitem label="&syncedTabs.context.openInNewWindow.label;"
+ accesskey="&syncedTabs.context.openInNewWindow.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-window"
+ id="syncedTabsOpenSelectedInWindow" where="window"/>
+ <menuitem label="&syncedTabs.context.openInNewPrivateWindow.label;"
+ accesskey="&syncedTabs.context.openInNewPrivateWindow.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-private-window"
+ id="syncedTabsOpenSelectedInPrivateWindow" where="window" private="true"/>
+ <menuseparator/>
+ <menuitem label="&syncedTabs.context.bookmarkSingleTab.label;"
+ accesskey="&syncedTabs.context.bookmarkSingleTab.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-bookmark-single-tab"
+ id="syncedTabsBookmarkSelected"/>
+ <menuitem label="&syncedTabs.context.copy.label;"
+ accesskey="&syncedTabs.context.copy.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-copy"
+ id="syncedTabsCopySelected"/>
+ <menuseparator/>
+ <menuitem label="&syncedTabs.context.openAllInTabs.label;"
+ accesskey="&syncedTabs.context.openAllInTabs.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-all-in-tabs"
+ id="syncedTabsOpenAllInTabs"/>
+ <menuitem label="&syncedTabs.context.managedevices.label;"
+ accesskey="&syncedTabs.context.managedevices.accesskey;"
+ <menuitem data-lazy-l10n-id="synced-tabs-context-manage-devices"
+ id="syncedTabsManageDevices"
+ oncommand="gSync.openDevicesManagementPage('syncedtabs-sidebar');"/>
+ <menuitem label="&syncSyncNowItem.label;"
@ -704,7 +691,7 @@ new file mode 100644
+ id="syncedTabsRefreshFilter"/>
+ </menupopup>
+
+ <hbox id="statuspanel" inactive="true" layer="true">
+ <hbox id="statuspanel" inactive="true" renderroot="content">
+ <hbox id="statuspanel-inner">
+ <label id="statuspanel-label"
+ role="status"
@ -876,16 +863,6 @@ new file mode 100644
+ placeholder="&urlbar.placeholder2;"
+ defaultPlaceholder="&urlbar.placeholder2;"
+ focused="true"
+ type="autocomplete"
+ quantumbar="false"
+ autocompletesearch="unifiedcomplete"
+ autocompletesearchparam="enable-actions"
+ autocompletepopup="PopupAutoCompleteRichResult"
+ completeselectedindex="true"
+ tabscrolling="true"
+ newlines="stripsurroundingwhitespace"
+ ontextentered="this.handleCommand(param);"
+ ontextreverted="return this.handleRevert();"
+ pageproxystate="invalid">
+ <!-- Use onclick instead of normal popup= syntax since the popup
+ code fires onmousedown, and hence eats our favicon drag events. -->
@ -928,6 +905,8 @@ new file mode 100644
+ tooltiptext="&urlbar.flashPluginBlocked.tooltip;"/>
+ <image data-permission-id="midi" class="blocked-permission-icon midi-icon" role="button"
+ tooltiptext="&urlbar.midiBlocked.tooltip;"/>
+ <image data-permission-id="install" class="blocked-permission-icon install-icon" role="button"
+ tooltiptext="&urlbar.installBlocked.tooltip;"/>
+ </box>
+ <box id="notification-popup-box"
+ hidden="true"
@ -1339,7 +1318,7 @@ new file mode 100644
+
+ <hbox id="fullscr-toggler" hidden="true"/>
+
+ <deck id="content-deck" flex="1">
+ <deck id="content-deck" flex="1" renderroot="content">
+ <hbox flex="1" id="browser">
+ <vbox id="browser-border-start" hidden="true" layer="true"/>
+ <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome">
@ -1372,10 +1351,12 @@ new file mode 100644
+ </vbox>
+ <vbox id="browser-border-end" hidden="true" layer="true"/>
+ </hbox>
+ <box id="customization-container" flex="1" hidden="true"><![CDATA[
+#include ../../components/customizableui/content/customizeMode.inc.xul
+ ]]></box>
+ </deck>
+
+ <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true">
+ <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
+ <html:div class="pointerlockfswarning-domain-text">
+ &fullscreenWarning.beforeDomain.label;
+ <html:span class="pointerlockfswarning-domain"/>
@ -1394,7 +1375,7 @@ new file mode 100644
+ </html:button>
+ </html:div>
+
+ <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true">
+ <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
+ <html:div class="pointerlockfswarning-domain-text">
+ &pointerlockWarning.beforeDomain.label;
+ <html:span class="pointerlockfswarning-domain"/>
@ -1405,42 +1386,26 @@ new file mode 100644
+ </html:div>
+ </html:div>
+
+ <vbox id="browser-bottombox" layer="true">
+ <vbox id="browser-bottombox" layer="true" renderroot="content">
+ <!-- gNotificationBox will be added here lazily. -->
+ </vbox>
+
+</window>
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -28,16 +28,18 @@ browser.jar:
content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
* content/browser/browser.css (content/browser.css)
content/browser/browser.js (content/browser.js)
#ifdef MOZ_BROWSER_XHTML
* content/browser/browser.xhtml (content/browser.xhtml)
#endif
diff -r 428161c3b959 -r 54d41b0033b8 browser/base/jar.mn
--- a/browser/base/jar.mn Mon Jun 17 09:02:06 2019 +0200
+++ b/browser/base/jar.mn Fri May 31 12:55:51 2019 +0200
@@ -33,6 +33,8 @@
#else
* content/browser/browser.xul (content/browser.xul)
#endif
+* content/browser/browser-kde.xul (content/browser-kde.xul)
+% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
content/browser/browser-addons.js (content/browser-addons.js)
content/browser/browser-allTabsMenu.js (content/browser-allTabsMenu.js)
content/browser/browser-captivePortal.js (content/browser-captivePortal.js)
content/browser/browser-ctrlTab.js (content/browser-ctrlTab.js)
content/browser/browser-customization.js (content/browser-customization.js)
content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
content/browser/browser-compacttheme.js (content/browser-compacttheme.js)
content/browser/browser-contentblocking.js (content/browser-contentblocking.js)
diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -288,16 +288,23 @@ var gMainPane = {
this._backoffIndex++ : backoffTimes.length - 1]);
};
window.setTimeout(() => {
window.requestIdleCallback(pollForDefaultBrowser);
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/preferences/in-content/main.js
--- a/browser/components/preferences/in-content/main.js Mon Jun 17 09:02:06 2019 +0200
+++ b/browser/components/preferences/in-content/main.js Fri May 31 12:55:51 2019 +0200
@@ -294,6 +294,13 @@
}, backoffTimes[this._backoffIndex]);
}
@ -1454,17 +1419,7 @@ diff --git a/browser/components/preferences/in-content/main.js b/browser/compone
this.initBrowserContainers();
this.buildContentProcessCountMenuList();
let performanceSettingsLink = document.getElementById("performanceSettingsLearnMore");
let performanceSettingsUrl = Services.urlFormatter.formatURLPref("app.support.baseURL") + "performance";
performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
this.updateDefaultPerformanceSettingsPref();
@@ -1025,16 +1032,27 @@ var gMainPane = {
// Reset exponential backoff delay time in order to do visual update in pollForDefaultBrowser.
this._backoffIndex = 0;
let shellSvc = getShellService();
if (!shellSvc)
@@ -983,6 +990,17 @@
return;
try {
shellSvc.setDefaultBrowser(true, false);
@ -1482,20 +1437,10 @@ diff --git a/browser/components/preferences/in-content/main.js b/browser/compone
} catch (ex) {
Cu.reportError(ex);
return;
}
let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
}
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
--- a/browser/components/shell/moz.build
+++ b/browser/components/shell/moz.build
@@ -29,16 +29,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
]
elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
XPIDL_SOURCES += [
'nsIGNOMEShellService.idl',
]
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/moz.build
--- a/browser/components/shell/moz.build Mon Jun 17 09:02:06 2019 +0200
+++ b/browser/components/shell/moz.build Fri May 31 12:55:51 2019 +0200
@@ -33,6 +33,8 @@
SOURCES += [
'nsGNOMEShellService.cpp',
@ -1504,15 +1449,9 @@ diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.b
]
elif CONFIG['OS_ARCH'] == 'WINNT':
SOURCES += [
'nsWindowsShellService.cpp',
]
LOCAL_INCLUDES += [
'../../../other-licenses/nsis/Contrib/CityHash/cityhash',
]
diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
new file mode 100644
--- /dev/null
+++ b/browser/components/shell/nsKDEShellService.cpp
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsKDEShellService.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/components/shell/nsKDEShellService.cpp Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,150 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@ -1664,10 +1603,9 @@ new file mode 100644
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+}
+
diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
new file mode 100644
--- /dev/null
+++ b/browser/components/shell/nsKDEShellService.h
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsKDEShellService.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/components/shell/nsKDEShellService.h Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,32 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@ -1701,10 +1639,9 @@ new file mode 100644
+};
+
+#endif // nskdeshellservice_h____
diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
new file mode 100644
--- /dev/null
+++ b/browser/components/shell/nsUnixShellService.cpp
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsUnixShellService.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/components/shell/nsUnixShellService.cpp Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,22 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@ -1728,10 +1665,9 @@ new file mode 100644
+ return nsKDEShellServiceConstructor( aOuter, aIID, aResult );
+ return nsGNOMEShellServiceConstructor( aOuter, aIID, aResult );
+}
diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
new file mode 100644
--- /dev/null
+++ b/browser/components/shell/nsUnixShellService.h
diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsUnixShellService.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browser/components/shell/nsUnixShellService.h Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,15 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@ -1748,15 +1684,10 @@ new file mode 100644
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+
+#endif // nsunixshellservice_h____
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -286,16 +286,18 @@
@RESPATH@/browser/defaults/settings/pinning
@RESPATH@/browser/defaults/settings/main
; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
; Technically this is an app pref file, but we are keeping it in the original
diff -r 428161c3b959 -r 54d41b0033b8 browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in Mon Jun 17 09:02:06 2019 +0200
+++ b/browser/installer/package-manifest.in Fri May 31 12:55:51 2019 +0200
@@ -299,6 +299,8 @@
; gre location for now.
@RESPATH@/defaults/pref/channel-prefs.js
@ -1765,8 +1696,3 @@ diff --git a/browser/installer/package-manifest.in b/browser/installer/package-m
; Services (gre) prefs
@RESPATH@/defaults/pref/services-sync.js
; [Layout Engine Resources]
; Style Sheets, Graphics and other Resources used by the layout engine.
@RESPATH@/res/EditorOverride.css
@RESPATH@/res/contenteditable.css
@RESPATH@/res/designmode.css

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5f7213ba3f4be0ac7651cff00a49119239c5af975f464c1651e156f3b5248e8f
size 50547548

3
l10n-68.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6a93aca6a8e41ac91d301203fb0d59cc6f6ff20d483e0f6c83e34b9e82a8d116
size 49500472

View File

@ -1,23 +1,22 @@
# HG changeset patch
# Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10
# Parent 6dd2311796da4e15115fd04b181313ae62754317
Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage
# User msirringhaus@suse.de
# Date 1558442998 -7200
# Tue May 21 14:49:58 2019 +0200
# Node ID 386083b58d8558141901d796ec6919a4aba7ad3a
# Parent 835641be7eb9408aa1eff0d38b37f6c523d2ef98
bsc#991344 - Rpi3: Firefox crashes after a few seconds of usage
bmo#1302554 - ARM/AARCH64: Firefox crashes on NULL nsIChannel** result pointer in nsIOService::NewChannelFromURIWithProxyFlagsInternal()
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
--- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp
@@ -975,17 +975,23 @@ nsresult nsIOService::NewChannelFromURIW
"doesn't support nsIUploadChannel2. An extension has "
"supplied a non-functional http protocol handler. This will "
"break behavior and in future releases not work at all.");
}
gHasWarnedUploadChannel2 = true;
diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp
--- a/netwerk/base/nsIOService.cpp Fri Feb 26 16:20:09 2016 +0000
+++ b/netwerk/base/nsIOService.cpp Tue May 21 14:49:58 2019 +0200
@@ -1000,7 +1000,13 @@
}
}
+#if defined(__aarch64__)
+ if (result) {
+ channel.forget(result);
+ channel.forget(result);
+ }
+#else
channel.forget(result);
@ -25,8 +24,3 @@ diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
return NS_OK;
}
NS_IMETHODIMP
nsIOService::NewChannelFromURIWithProxyFlags(
nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
nsINode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags,

20
mozilla-bmo1005535.patch Normal file
View File

@ -0,0 +1,20 @@
# HG changeset patch
# User Steve Singer <steve@ssinger.info>
# Date 1558451540 -7200
# Tue May 21 17:12:20 2019 +0200
# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad
# Parent 42c99b59a87b904063bad3193f10c51d068d2eac
Bug 1005535 - Get skia GPU building on big endian.
diff -r 42c99b59a87b -r 433beec63e6b gfx/skia/skia/include/private/GrColor.h
--- a/gfx/skia/skia/include/private/GrColor.h Wed Jun 05 08:48:08 2019 +0200
+++ b/gfx/skia/skia/include/private/GrColor.h Tue May 21 17:12:20 2019 +0200
@@ -63,7 +63,7 @@
* Since premultiplied means that alpha >= color, we construct a color with
* each component==255 and alpha == 0 to be "illegal"
*/
-#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
+#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A)))
/** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */
static inline float GrNormalizeByteToFloat(uint8_t value) {

View File

@ -0,0 +1,29 @@
# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent 88217eaa8804fc699c02411b1b5377ef7eb5d2db
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90756
https://bugzilla.mozilla.org/show_bug.cgi?id=1562886
diff --git a/gfx/skia/skia/third_party/skcms/src/Transform_inl.h b/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
--- a/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
+++ b/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
@@ -554,17 +554,18 @@ SI void sample_clut_16(const skcms_A2B*
*r = cast<F>((rgb >> 0) & 0xffff) * (1/65535.0f);
*g = cast<F>((rgb >> 16) & 0xffff) * (1/65535.0f);
*b = cast<F>((rgb >> 32) & 0xffff) * (1/65535.0f);
#endif
}
// GCC 7.2.0 hits an internal compiler error with -finline-functions (or -O3)
// when targeting MIPS 64, I think attempting to inline clut() into exec_ops().
-#if 1 && defined(__GNUC__) && !defined(__clang__) && defined(__mips64)
+// s390x and i*86 also hit this with GCC 7.4 and -O2
+#if 1 && defined(__GNUC__) && !defined(__clang__) && ( defined(__mips64) || defined(__s390x__) || defined( __i586__ ) || defined( __i486__ ) || defined( __i386__ ))
#define MAYBE_NOINLINE __attribute__((noinline))
#else
#define MAYBE_NOINLINE
#endif
MAYBE_NOINLINE
static void clut(const skcms_A2B* a2b, F* r, F* g, F* b, F a) {
const int dim = (int)a2b->input_channels;

View File

@ -1,5 +1,9 @@
# HG changeset patch
# Parent cafacdb0b7c50666e5dcc927684a23e8733206a5
# User msirringhaus@suse.de
# Date 1559294891 -7200
# Fri May 31 11:28:11 2019 +0200
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
# Parent f11c2d7239c0caa4dc74272716d9e30ced1a1ca3
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@ -27,7 +31,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
#ifdef XP_WIN
# include "windows.h"
#endif
@@ -4493,25 +4494,37 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
@@ -4507,25 +4508,37 @@ static nsresult pref_ReadDefaultPrefs(co
// application pref files for backwards compatibility.
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@ -65,7 +69,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
// Load jar:$app/omni.jar!/defaults/preferences/*.js
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
@@ -4559,17 +4572,17 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
@@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co
}
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@ -183,18 +187,18 @@ diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+* content/global/bindings/dialog-kde.xml (widgets/dialog-kde.xml)
+% override chrome://global/content/bindings/dialog.xml chrome://global/content/bindings/dialog-kde.xml desktop=kde
content/global/bindings/general.xml (widgets/general.xml)
content/global/bindings/menu.xml (widgets/menu.xml)
content/global/bindings/popup.xml (widgets/popup.xml)
content/global/bindings/radio.xml (widgets/radio.xml)
content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
content/global/bindings/scrollbox.xml (widgets/scrollbox.xml)
content/global/bindings/spinner.js (widgets/spinner.js)
content/global/bindings/tabbox.xml (widgets/tabbox.xml)
* content/global/bindings/textbox.xml (widgets/textbox.xml)
content/global/bindings/timekeeper.js (widgets/timekeeper.js)
diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
new file mode 100644
--- /dev/null
+++ b/toolkit/content/widgets/dialog-kde.xml
@@ -0,0 +1,507 @@
@@ -0,0 +1,499 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
@ -495,6 +499,10 @@ new file mode 100644
+ buttons.help = document.getAnonymousElementByAttribute(this, "dlgtype", "help");
+ buttons.disclosure = document.getAnonymousElementByAttribute(this, "dlgtype", "disclosure");
+
+ for (let button in buttons) {
+ customElements.upgrade(buttons[button]);
+ }
+
+ // look for any overriding explicit button elements
+ var exBtns = this.getElementsByAttribute("dlgtype", "*");
+ var dlgtype;
@ -646,19 +654,7 @@ new file mode 100644
+ event.initEvent("dialog" + aDlgType, true, true);
+
+ // handle dom event handlers
+ var noCancel = this.dispatchEvent(event);
+
+ // handle any xml attribute event handlers
+ var handler = this.getAttribute("ondialog" + aDlgType);
+ if (handler != "") {
+ var fn = new Function("event", handler);
+ var returned = fn(event);
+ // eslint-disable-next-line mozilla/no-compare-against-boolean-literals
+ if (returned == false)
+ noCancel = false;
+ }
+
+ return noCancel;
+ return this.dispatchEvent(event);
+ ]]>
+ </body>
+ </method>
@ -705,7 +701,7 @@ new file mode 100644
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
@@ -1030,30 +1030,60 @@ nsUnknownContentTypeDialog.prototype = {
@@ -1042,30 +1042,60 @@ nsUnknownContentTypeDialog.prototype = {
if (params.handlerApp &&
params.handlerApp.executable &&
@ -783,7 +779,7 @@ diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downlo
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -15,16 +15,17 @@
@@ -14,16 +14,17 @@
#include "nsPrintfCString.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
@ -801,10 +797,10 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
NS_DECL_ISUPPORTS
NS_DECL_NSISYSTEMPROXYSETTINGS
@@ -44,16 +45,18 @@ class nsUnixSystemProxySettings final :
nsACString& aResult);
nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
int32_t aPort, nsACString& aResult);
@@ -37,16 +38,18 @@ class nsUnixSystemProxySettings final :
nsCOMPtr<nsIGSettingsCollection> mProxySettings;
nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
mSchemeProxySettings;
nsresult GetProxyFromGSettings(const nsACString& aScheme,
const nsACString& aHost, int32_t aPort,
nsACString& aResult);
@ -820,7 +816,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block
// anyhow
@@ -487,22 +490,51 @@ nsresult nsUnixSystemProxySettings::GetP
@@ -382,21 +385,50 @@ nsresult nsUnixSystemProxySettings::GetP
return NS_OK;
}
@ -836,7 +832,6 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
if (NS_SUCCEEDED(rv)) return rv;
}
if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
}
@ -943,7 +938,7 @@ new file mode 100644
+ Display* dpy = XOpenDisplay( NULL );
+ if( dpy == NULL )
+ return false;
+ Atom kde_full_session = XInternAtom( dpy, "KDE_FULL_SESSION", True );
+ Atom kde_full_session = XInternAtom( dpy, "KDE_FULL_SESSION", true );
+ bool kde = false;
+ if( kde_full_session != None )
+ {
@ -1300,7 +1295,8 @@ new file mode 100644
diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
--- a/uriloader/exthandler/HandlerServiceParent.cpp
+++ b/uriloader/exthandler/HandlerServiceParent.cpp
@@ -1,16 +1,16 @@
@@ -1,17 +1,17 @@
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/Logging.h"
#include "HandlerServiceParent.h"
#include "nsIHandlerService.h"
@ -1318,13 +1314,13 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
using mozilla::dom::RemoteHandlerApp;
namespace {
@@ -246,17 +246,17 @@ mozilla::ipc::IPCResult HandlerServicePa
handlerSvc->Exists(info, exists);
return IPC_OK();
}
mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
@@ -282,17 +282,17 @@ mozilla::ipc::IPCResult HandlerServicePa
mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocolOS(
const nsCString& aProtocolScheme, bool* aHandlerExists) {
if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
*aHandlerExists = false;
return IPC_OK();
}
#ifdef MOZ_WIDGET_GTK
// Check the GNOME registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@ -1335,12 +1331,31 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
return IPC_OK();
}
mozilla::ipc::IPCResult HandlerServiceParent::RecvGetTypeFromExtension(
const nsCString& aFileExtension, nsCString* type) {
/*
* Check if a handler exists for the provided protocol. Check the datastore
@@ -311,17 +311,17 @@ mozilla::ipc::IPCResult HandlerServicePa
nsCOMPtr<nsIExternalProtocolService> protoSvc =
do_GetService(NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
*aHandlerExists = false;
return IPC_OK();
}
rv = protoSvc->ExternalProtocolHandlerExists(aProtocolScheme.get(),
aHandlerExists);
-
+##
if (NS_WARN_IF(NS_FAILED(rv))) {
*aHandlerExists = false;
}
#else
MOZ_RELEASE_ASSERT(false, "No implementation on this platform.");
*aHandlerExists = false;
#endif
return IPC_OK();
diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
--- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build
@@ -80,17 +80,19 @@ else:
@@ -83,17 +83,19 @@ else:
SOURCES += [
osdir + '/nsOSHelperAppService.cpp',
]
@ -1360,7 +1375,7 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
'android/nsExternalURLHandlerService.cpp',
'android/nsMIMEInfoAndroid.cpp',
]
@@ -130,16 +132,17 @@ include('/ipc/chromium/chromium-config.m
@@ -133,16 +135,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
@ -1624,13 +1639,13 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
+#include "nsKDEUtils.h"
+#endif
nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) {
nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI* aURI) {
- return nsGNOMERegistry::LoadURL(aURI);
+ return nsCommonRegistry::LoadURL(aURI);
}
NS_IMETHODIMP
nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) {
nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
// if mDefaultApplication is set, it means the application has been set from
// either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer.
@ -1794,7 +1809,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
@@ -121,16 +121,17 @@ include('/ipc/chromium/chromium-config.m
@@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
@ -1849,14 +1864,14 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
// bug 1184009
#define MAX_PREVIEW_SOURCE_SIZE 4096
nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
mAllowURLs = !!(aFilterMask & filterAllowURLs);
return nsBaseFilePicker::AppendFilters(aFilterMask);
}
NS_IMETHODIMP
nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) {
nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
if (aFilter.EqualsLiteral("..apps")) {
// No platform specific thing we can do here, really....
- return NS_OK;
@ -1871,12 +1886,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t *aRe
@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
return NS_OK;
}
NS_IMETHODIMP
nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) {
nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
// Can't show two dialogs concurrently with the same filepicker
if (mRunning) return NS_ERROR_NOT_AVAILABLE;
@ -1906,12 +1921,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
nsCString title;
title.Adopt(ToNewUTF8String(mTitle));
GtkWindow *parent_widget =
GtkWindow* parent_widget =
GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
@@ -572,16 +599,240 @@ void nsFilePicker::Done(void *file_choos
@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
mCallback->Done(result);
mCallback = nullptr;
} else {
@ -2145,13 +2160,13 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
+ }
+
// All below functions available as of GTK 3.20+
void *nsFilePicker::GtkFileChooserNew(const gchar *title, GtkWindow *parent,
void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserAction action,
const gchar *accept_label) {
const gchar* accept_label) {
static auto sGtkFileChooserNativeNewPtr =
(void *(*)(const gchar *, GtkWindow *, GtkFileChooserAction,
const gchar *,
const gchar *))dlsym(RTLD_DEFAULT,
(void* (*)(const gchar*, GtkWindow*, GtkFileChooserAction, const gchar*,
const gchar*))dlsym(RTLD_DEFAULT,
"gtk_file_chooser_native_new");
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
--- a/widget/gtk/nsFilePicker.h
+++ b/widget/gtk/nsFilePicker.h
@ -2162,7 +2177,7 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
nsTArray<nsCString> mFilterNames;
private:
static nsIFile *mPrevDisplayDirectory;
static nsIFile* mPrevDisplayDirectory;
+ bool kdeRunning();
+ bool getKdeRunning();
@ -2170,12 +2185,12 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
+ NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
+ nsCString kdeMakeFilter( int index );
+
void *GtkFileChooserNew(const gchar *title, GtkWindow *parent,
void* GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserAction action,
const gchar *accept_label);
void GtkFileChooserShow(void *file_chooser);
void GtkFileChooserDestroy(void *file_chooser);
void GtkFileChooserSetModal(void *file_chooser, GtkWindow *parent_widget,
const gchar* accept_label);
void GtkFileChooserShow(void* file_chooser);
void GtkFileChooserDestroy(void* file_chooser);
void GtkFileChooserSetModal(void* file_chooser, GtkWindow* parent_widget,
gboolean modal);
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
@ -2199,7 +2214,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
int argc;
bool ischrome;
@@ -392,16 +393,17 @@ void ParseManifest(NSLocationType aType,
@@ -393,16 +394,17 @@ void ParseManifest(NSLocationType aType,
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application");
@ -2217,7 +2232,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content");
@@ -447,39 +449,44 @@ void ParseManifest(NSLocationType aType,
@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0);
@ -2262,7 +2277,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
process = kMain;
}
@@ -566,25 +573,27 @@ void ParseManifest(NSLocationType aType,
@@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType,
TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified;
TriState stABI = eUnspecified;
@ -2290,7 +2305,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
continue;
}
@@ -621,17 +630,17 @@ void ParseManifest(NSLocationType aType,
@@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType,
}
LogMessageWithContext(
@ -2312,7 +2327,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
--- a/xpcom/components/moz.build
+++ b/xpcom/components/moz.build
@@ -66,14 +66,15 @@ LOCAL_INCLUDES += [
@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
'!..',
'../base',
'../build',
@ -2327,7 +2342,9 @@ diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
CXXFLAGS += CONFIG['TK_CFLAGS']
include('/ipc/chromium/chromium-config.mozbuild')
if CONFIG['MOZ_LAYOUT_DEBUGGER']:
DEFINES['MOZ_LAYOUT_DEBUGGER'] = True
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp

View File

@ -1,20 +1,19 @@
From: Wolfgang Rosenauer
Subject: Do not use gconf for proxy settings if not running within Gnome
# HG changeset patch
# User Wolfgang Rosenauer
# Date 1558442915 -7200
# Tue May 21 14:48:35 2019 +0200
# Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5
# Parent 4c434d19d03d5461e54fa22dfb82eaed4cd6631b
Do not use gconf for proxy settings if not running within Gnome
Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
===================================================================
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -57,24 +57,27 @@ NS_IMETHODIMP
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block
// anyhow
*aMainThreadOnly = true;
return NS_OK;
diff -r 4c434d19d03d -r 6bcf2dfebc1e toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Wed Jun 12 17:43:18 2019 +0000
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Tue May 21 14:48:35 2019 +0200
@@ -55,11 +55,14 @@
}
void nsUnixSystemProxySettings::Init() {
@ -23,25 +22,14 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
- mGSettings->GetCollectionForSchema(
- NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings));
- }
- if (!mProxySettings) {
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ // only use GSettings if that is a GNOME session
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) {
+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ getter_AddRefs(mProxySettings));
+ }
+ if (!mProxySettings) {
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ mGSettings->GetCollectionForSchema(
+ NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ getter_AddRefs(mProxySettings));
+ }
}
}
bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
nsAutoCString mode;
return NS_SUCCEEDED(mGConf->GetString(
NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&
mode.EqualsASCII(aMode);

View File

@ -0,0 +1,20 @@
# HG changeset patch
# User msirringhaus@suse.de
# Date 1558452418 -7200
# Tue May 21 17:26:58 2019 +0200
# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
# Parent 602e92722e765a3c238d3b96b26c0c8063b5eeb4
imported patch mozilla-ppc-altivec_static_inline.patch
diff -r 602e92722e76 -r 6cd963b6c82e gfx/qcms/transform-altivec.c
--- a/gfx/qcms/transform-altivec.c Tue May 21 17:26:48 2019 +0200
+++ b/gfx/qcms/transform-altivec.c Tue May 21 17:26:58 2019 +0200
@@ -30,7 +30,7 @@
static const ALIGN float floatScaleX4 = FLOATSCALE;
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
-inline vector float load_aligned_float(float *dataPtr)
+static inline vector float load_aligned_float(float *dataPtr)
{
vector float data = vec_lde(0, dataPtr);
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);

View File

@ -0,0 +1,34 @@
# HG changeset patch
# User msirringhaus@suse.de
# Date 1560754926 -7200
# Mon Jun 17 09:02:06 2019 +0200
# Node ID 428161c3b9599083e1b8710eda1760f1f707ab11
# Parent 6cd963b6c82ea6629aaf4050851789b78f310338
#Description: reduce the rust debuginfo level on selected architectures where
# compiling with debuginfo=2 causes the OOM killer to interrupt the build on
# launchpad builders. Initially this was only on 32 bit architectures, but with
# firefox 63 it started happening frequently on arm64 and ppc64el too.
diff -r 6cd963b6c82e -r 428161c3b959 build/moz.configure/toolchain.configure
--- a/build/moz.configure/toolchain.configure Tue May 21 17:26:58 2019 +0200
+++ b/build/moz.configure/toolchain.configure Mon Jun 17 09:02:06 2019 +0200
@@ -1865,8 +1865,8 @@
return '1' if moz_optimize.optimize else '0'
-@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols')
-def rust_compile_flags(opt_level, debug_rust, debug_symbols):
+@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', host)
+def rust_compile_flags(opt_level, debug_rust, debug_symbols, host):
# Cargo currently supports only two interesting profiles for building:
# development and release. Those map (roughly) to --enable-debug and
# --disable-debug in Gecko, respectively.
@@ -1889,6 +1889,8 @@
if debug_symbols:
debug_info = '2'
+ if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64':
+ debug_info = '1'
opts = []

View File

@ -0,0 +1,20 @@
# HG changeset patch
# User msirringhaus@suse.de
# Date 1558452126 -7200
# Tue May 21 17:22:06 2019 +0200
# Node ID a3cc550d25e3a04d906f516928cbcbe50efd585e
# Parent 433beec63e6b5f409683af20a0c1ab137cc7bfad
[mq]: mozilla-s390-bigendian.patch
diff -r 433beec63e6b -r a3cc550d25e3 build/autoconf/icu.m4
--- a/build/autoconf/icu.m4 Tue May 21 17:12:20 2019 +0200
+++ b/build/autoconf/icu.m4 Tue May 21 17:22:06 2019 +0200
@@ -78,7 +78,7 @@
# TODO: the l is actually endian-dependent
# We could make this set as 'l' or 'b' for little or big, respectively,
# but we'd need to check in a big-endian version of the file.
- ICU_DATA_FILE="icudt${version}l.dat"
+ ICU_DATA_FILE="icudt${version}b.dat"
fi
AC_SUBST(MOZ_ICU_VERSION)

View File

@ -0,0 +1,36 @@
# HG changeset patch
# User msirringhaus@suse.de
# Date 1558452408 -7200
# Tue May 21 17:26:48 2019 +0200
# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4
# Parent a3cc550d25e3a04d906f516928cbcbe50efd585e
[mq]: mozilla-s390-context.patch
diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp
--- a/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:22:06 2019 +0200
+++ b/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:26:48 2019 +0200
@@ -154,6 +154,10 @@
# define R01_sig(p) ((p)->uc_mcontext.gp_regs[1])
# define R32_sig(p) ((p)->uc_mcontext.gp_regs[32])
# endif
+# if defined(__linux__) && defined(__s390x__)
+# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x])
+# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr)
+# endif
#elif defined(__NetBSD__)
# define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP])
# define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP])
@@ -385,8 +389,13 @@
# define PC_sig(p) R32_sig(p)
# define SP_sig(p) R01_sig(p)
# define FP_sig(p) R01_sig(p)
+#elif defined(__s390x__)
+# define PC_sig(p) PSWa_sig(p)
+# define SP_sig(p) GR_sig(p, 15)
+# define FP_sig(p) GR_sig(p, 11)
#endif
+
static void SetContextPC(CONTEXT* context, uint8_t* pc) {
#ifdef PC_sig
*reinterpret_cast<uint8_t**>(&PC_sig(context)) = pc;

View File

@ -1,2 +1,2 @@
REV=ea5154beddff08b919697e3bed6f38cfe3a3d82f
REV=353628fec415324ca6aa333ab6c47d447ecc128e
REPO=http://hg.mozilla.org/releases/mozilla-release

10
tar_stamps Normal file
View File

@ -0,0 +1,10 @@
PRODUCT="firefox"
CHANNEL="release"
VERSION="68.0"
VERSION_SUFFIX=""
FF_RELEASE_TAG="353628fec415324ca6aa333ab6c47d447ecc128e"
TB_RELEASE_TAG=""
PREV_VERSION=""
PREV_VERSION_SUFFIX=""
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation