diff --git a/MozillaThunderbird.changes b/MozillaThunderbird.changes index 318bdd0..3fff2b2 100644 --- a/MozillaThunderbird.changes +++ b/MozillaThunderbird.changes @@ -1,26 +1,69 @@ ------------------------------------------------------------------- -Fri Sep 6 12:09:27 UTC 2019 - Wolfgang Rosenauer +Tue Sep 10 07:33:52 UTC 2019 - Wolfgang Rosenauer -- Mozilla Thunderbird 60.9.0 +- Mozilla Thunderbird 68.1.0 * Offer to configure Exchange accounts for Office365. A third-party - add-on is required for this account type. IMAP still exists as alternative. - MFSA 2019-27 - * Use-after-free while manipulating video - CVE-2019-11746 (bmo#1564449) - * XSS by breaking out of title and textarea elements using innerHTML - CVE-2019-11744 (bmo#1562033) - * Same-origin policy violation with SVG filters and canvas to steal + add-on is required for this account type. IMAP still exists as + alternative. + * several bugfixes + MFSA 2019-30 + * CVE-2019-11739 (bmo#1571481) + Covert Content Attack on S/MIME encryption using a crafted + multipart/alternative message + * CVE-2019-11746 (bmo#1564449) + Use-after-free while manipulating video + * CVE-2019-11744 (bmo#1562033) + XSS by breaking out of title and textarea elements using innerHTML + * CVE-2019-11742 (bmo#1559715) + Same-origin policy violation with SVG filters and canvas to steal cross-origin images - CVE-2019-11742 (bmo#1559715) - * Use-after-free while extracting a key value in IndexedDB - CVE-2019-11752 (bmo#1501152) - * Sandbox escape through Firefox Sync - CVE-2019-9812 (bmo#1538008, bmo#1538015) - * Cross-origin access to unload event attributes - CVE-2019-11743 (bmo#1560495) - Navigation-Timing Level 2 specification - * Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox ESR 60.9 - CVE-2019-11740 (bmo#1563133, bmo#1573160) + * CVE-2019-11752 (bmo#1501152) + Use-after-free while extracting a key value in IndexedDB + * CVE-2019-11743 (bmo#1560495) + Cross-origin access to unload event attributes + * CVE-2019-11740 (bmo#1563133,bmo#1573160) + Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox + ESR 60.9, Thunderbird 68.1, and Thunderbird 60.9 +- removed upstreamed fix-build-after-y2038-changes-in-glibc.patch +- added thunderbird-locale-build.patch to fix locale build + +------------------------------------------------------------------- +Fri Aug 30 07:25:15 UTC 2019 - Manfred Hollstein + +- Add -L flag to the stat call for checking file size of %{SOURCE4}. +- Add fix-missing-return-warning.patch to silence a compiler warning. + +------------------------------------------------------------------- +Wed Aug 28 12:27:34 UTC 2019 - Wolfgang Rosenauer + +- Mozilla Thunderbird 68.0 + * based on Firefox ESR 68 + * File link attachments can now be linked to again instead of + uploading them again + * Mark all folders of an account as read + * Run filters periodically. Improved filter logging + * OAuth2 authentication for Yandex + * Language packs can now be selected in the Advanced Options. + Preference intl.multilingual.enabled needs to be set (and possily + also extensions.langpacks.signatures.required needs to be set to false) + * Added a policy engine that allows customized Thunderbird deployments + in enterprise environments, using Windows Group Policy or a + cross-platform JSON file + * TCP keepalive for IMAP protocol + * Full Unicode support for MAPI interfaces: New support for MAPISendMailW + * Calendar: Time zone data can now include past and future changes. + All known time zone changes from 2018 to 2022 are included. + * Chat: In each conversation an individual spellcheck language can + be selected now +- removed obsolete patches + * mozilla-bmo1463035.patch + * mozilla-i586-domPrefs.patch + * mozilla-bmo1464766.patch + * mozilla-bmo1519629.patch + * mozilla-i586-DecoderDoctorLogger.patch + * mozilla-bmo1375074.patch +- added fix-build-after-y2038-changes-in-glibc.patch to fix build + in Tumbleweed (patch already upstream for next release) ------------------------------------------------------------------- Thu Aug 1 11:12:05 UTC 2019 - Tristan Miller diff --git a/MozillaThunderbird.spec b/MozillaThunderbird.spec index b60ee87..2c8147f 100644 --- a/MozillaThunderbird.spec +++ b/MozillaThunderbird.spec @@ -17,15 +17,44 @@ # -%define mainversion 60.9.0 +# changed with every update +%define major 68 +%define mainver %major.1.0 +%define version_postfix %{nil} %define update_channel release -%define releasedate 20190902145622 +%define releasedate 20190909201201 +%define source_prefix thunderbird-%{mainver} + +# always build with GCC as SUSE Security Team requires that +# TODO: Deactivate this as the next step +%define clang_build 1 + +# PIE, full relro +%define build_hardened 1 %bcond_without mozilla_tb_kde4 %bcond_with mozilla_tb_valgrind %bcond_without mozilla_tb_optimize_for_size -Name: MozillaThunderbird +# general build definitions +%define progname thunderbird +%define pkgname MozillaThunderbird +%define appname Thunderbird +%define progdir %{_prefix}/%_lib/%{progname} +%define gnome_dir %{_prefix} +%define desktop_file_name %{progname} +%define __provides_exclude ^lib.*\\.so.*$ +%define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libldap.*|libldif.*|libprldap.*)$ +%define localize 1 +%ifarch %ix86 x86_64 +%define crashreporter 1 +%else +%define crashreporter 0 +%endif + +%define has_system_cairo 0 + +Name: %{pkgname} BuildRequires: Mesa-devel BuildRequires: alsa-devel BuildRequires: autoconf213 @@ -36,21 +65,22 @@ BuildRequires: gcc7-c++ %else BuildRequires: gcc-c++ %endif -BuildRequires: cargo +BuildRequires: cargo >= 1.34 #BuildRequires: hunspell-devel BuildRequires: libXcomposite-devel BuildRequires: libcurl-devel BuildRequires: libidl-devel BuildRequires: libnotify-devel BuildRequires: memory-constraints -BuildRequires: mozilla-nspr-devel >= 4.19 -BuildRequires: mozilla-nss-devel >= 3.36.8 -BuildRequires: python +BuildRequires: mozilla-nspr-devel >= 4.21 +BuildRequires: mozilla-nss-devel >= 3.44.1 +BuildRequires: nasm >= 2.13 +BuildRequires: nodejs >= 8.11 +BuildRequires: python-devel BuildRequires: python2-xml -BuildRequires: rust >= 1.24 -%if 0%{?suse_version} <= 1500 -BuildRequires: rust-std -%endif +BuildRequires: python3 >= 3.5 +BuildRequires: rust >= 1.34 +BuildRequires: rust-cbindgen >= 0.8.7 BuildRequires: startup-notification-devel BuildRequires: unzip BuildRequires: update-desktop-files @@ -84,7 +114,7 @@ BuildRequires: clang4-devel # therefore the Packman version is required # minimum version of libavcodec is 53 Recommends: libavcodec-full >= 0.10.16 -Version: %{mainversion} +Version: %{mainver} Release: 0 Provides: MozillaThunderbird-devel = %version Obsoletes: MozillaThunderbird-devel < %version @@ -101,7 +131,7 @@ Summary: An integrated email, news feeds, chat, and newsgroups client License: MPL-2.0 Group: Productivity/Networking/Email/Clients Url: https://www.thunderbird.net/ -Source: http://ftp.mozilla.org/pub/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.xz +Source: http://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{version_postfix}/source/%{progname}-%{version}%{version_postfix}.source.tar.xz Source1: thunderbird.desktop Source3: mozilla.sh.in Source4: l10n-%{version}.tar.xz @@ -114,15 +144,11 @@ Source12: kde.js Source13: https://ftp.mozilla.org/pub/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.xz.asc Source14: http://ftp.mozilla.org/pub/thunderbird/releases/%{version}/KEY#/%{name}.keyring # Gecko/Toolkit -Patch2: mozilla-nongnome-proxies.patch -Patch3: mozilla-kde.patch -Patch6: mozilla-aarch64-startup-crash.patch -Patch7: mozilla-bmo1375074.patch -Patch8: mozilla-bmo1464766.patch -Patch9: mozilla-i586-DecoderDoctorLogger.patch -Patch10: mozilla-i586-domPrefs.patch -Patch11: mozilla-bmo1463035.patch -Patch12: mozilla-bmo1519629.patch +Patch1: mozilla-nongnome-proxies.patch +Patch2: mozilla-kde.patch +Patch3: mozilla-aarch64-startup-crash.patch +Patch4: fix-missing-return-warning.patch +Patch5: thunderbird-locale-build.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: coreutils fileutils textutils /bin/sh Recommends: libcanberra0 @@ -137,17 +163,13 @@ ExcludeArch: ppc ppc64 s390 s390x %define crashreporter 1 %endif %define has_system_cairo 0 -%define localize 1 ### build options end %define __provides_exclude ^lib.*\\.so.*$ %define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libldap.*|libldif.*|libprldap.*)$ Requires: mozilla-nspr >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nspr) Requires: mozilla-nss >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nss) Conflicts: thunderbird-esr -%define progname thunderbird -%define progdir %{_prefix}/%_lib/thunderbird %define libgssapi libgssapi_krb5.so.2 -%define desktop_file_name thunderbird %description Thunderbird is a free, open-source, cross-platform application for @@ -158,32 +180,31 @@ yet easy to use. %if %localize %package translations-common -Summary: Common translations for MozillaThunderbird +Summary: Common translations for %{appname} Group: System/Localization -Provides: locale(%{name}:ar;ca;cs;da;de;el;en_GB;es_AR;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW) -PreReq: %{name} = %{mainversion} +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} %description translations-common -This package contains several optional languages for the user interface -of MozillaThunderbird. - +This package contains several common languages for the user interface +of %{appname}. %package translations-other -Summary: Extra translations for MozillaThunderbird +Summary: Extra translations for %{appname} Group: System/Localization Provides: locale(%{name}:ast;be;bg;bn_BD;br;et;eu;fy_NL;ga_IE;gd;gl;he;hr;hy_AM;id;is;lt;nn_NO;pa_IN;rm;ro;si;sk;sl;sq;sr;ta_LK;tr;uk;vi) -PreReq: %{name} = %{mainversion} +Requires: %{name} = %{version} Obsoletes: %{name}-translations < %{version}-%{release} %description translations-other -This package contains several optional languages for the user interface -of MozillaThunderbird. +This package contains rarely used languages for the user interface +of %{appname}. %endif %if %crashreporter %package buildsymbols -Summary: Breakpad buildsymbols for %{name} +Summary: Breakpad buildsymbols for %{appname} Group: Development/Debug %description buildsymbols @@ -192,23 +213,30 @@ symbols meant for upload to Mozilla's crash collector database. %endif %prep -%setup -n thunderbird-%{version} -q -b 4 -b 11 -# xulrunner patches -%patch2 -p1 +%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 -Lc%s "%{SOURCE4}") < MINSIZE)); then + echo "Translations tarball %{SOURCE7} not generated properly." + exit 1 +fi +%setup -q -n %{source_prefix} -b 4 -b 11 +%else +%setup -q -n %{source_prefix} +%endif +%patch1 -p1 %if %{with mozilla_tb_kde4} +%patch2 -p1 +%endif %patch3 -p1 -%endif -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%ifarch %ix86 -%patch9 -p1 -%patch10 -p1 -%endif -%patch11 -p1 -%patch12 -p1 +%patch4 -p1 +%patch5 -p1 %build +# +# Limit RAM usage to avoid OOM + %define _lto_cflags %{nil} # no need to add build time to binaries modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")" @@ -223,6 +251,7 @@ if test "$kdehelperversion" != %{kde_helper_version}; then exit 1 fi %endif + export SUSE_ASNEEDED=0 export MOZ_BUILD_DATE=%{releasedate} export MOZILLA_OFFICIAL=1 @@ -232,33 +261,34 @@ export MOZ_ESR=1 %endif %if 0%{?suse_version} <= 1320 export CC=gcc-7 +%else +%if 0%{?clang_build} == 0 +export CC=gcc +export CXX=g++ %endif -export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" -%if 0%{?suse_version} > 1320 -export CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" %endif -%ifarch ppc64 ppc64le -export CFLAGS="$CFLAGS -mminimal-toc" -%endif -%ifarch %arm -export CFLAGS="${CFLAGS/-g / }" -%endif -%ifarch %ix86 %arm +%ifarch %arm %ix86 # Limit RAM usage during link export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif +%if 0%{?build_hardened} +export LDFLAGS="${LDFLAGS} -fPIC -Wl,-z,relro,-z,now" +%endif +%ifarch ppc64 ppc64le +%if 0%{?clang_build} == 0 +export CFLAGS="$CFLAGS -mminimal-toc" +%endif +%endif export CXXFLAGS="$CFLAGS" -%ifarch %{arm} +%ifarch %{arm} aarch64 export RUSTFLAGS="-Cdebuginfo=0" %endif export MOZCONFIG=$RPM_BUILD_DIR/mozconfig +%limit_build -m 2000 # -g might be part of RPM_OPT_FLAGS, depending on the debuginfo setting in prj config # gcc lacks a an explicit -noop, so use something similar to make sure -g # is not forced into CFLAGS export MOZ_DEBUG_FLAGS="-pipe" -# -# Limit RAM usage to avoid OOM -%limit_build -m 1500 cat << EOF > $MOZCONFIG mk_add_options MOZILLA_OFFICIAL=1 mk_add_options BUILD_OFFICIAL=1 @@ -279,30 +309,23 @@ ac_add_options --includedir=%{_includedir} ac_add_options --disable-tests ac_add_options --disable-debug ac_add_options --enable-alsa -# gcc7 (boo#104105) -%if 0%{?suse_version} > 1320 -ac_add_options --enable-optimize="-g -O2" -%endif -%ifarch %ix86 %arm -%if 0%{?suse_version} > 1230 -#ac_add_options --disable-optimize -%endif -%endif -%ifarch %arm -ac_add_options --disable-elf-hack -%endif -%ifarch x86_64 -%if 0%{?suse_version} >= 1550 -ac_add_options --disable-elf-hack -%endif -%endif ac_add_options --enable-default-toolkit=cairo-gtk3 %if 0%{?suse_version} >= 1550 ac_add_options --disable-gconf %endif +# bmo#1441155 - Disable the generation of Rust debug symbols on Linux32 +%ifarch %ix86 %arm +ac_add_options --disable-debug-symbols +%else +ac_add_options --enable-debug-symbols +%endif +%if 0%{?suse_version} > 1549 +%ifnarch aarch64 ppc64 ppc64le s390x +ac_add_options --disable-elf-hack +%endif +%endif ac_add_options --with-system-nspr ac_add_options --with-system-nss -ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n ac_add_options --disable-updater @@ -330,8 +353,8 @@ cd $RPM_BUILD_DIR/obj make -C comm/mail/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0 # copy tree into RPM_BUILD_ROOT mkdir -p %{buildroot}%{progdir} -cp -rf $RPM_BUILD_DIR/obj/dist/thunderbird/* \ - %{buildroot}%{progdir} +cp -rf $RPM_BUILD_DIR/obj/dist/thunderbird/* %{buildroot}%{progdir} +install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/ %if %{with mozilla_tb_kde4} # install kde.js install -m 644 %{SOURCE12} %{buildroot}%{progdir}/defaults/pref/kde.js @@ -341,25 +364,26 @@ echo 'pref("browser.preferences.instantApply", true);' > %{buildroot}%{progdir}/ %endif # build additional locales %if %localize +mkdir -p %{buildroot}%{progdir}/extensions/ truncate -s 0 %{_tmppath}/translations.{common,other} -sed -r '/^(ja-JP-mac|en-US|$)/d;s/ .*$//' $RPM_BUILD_DIR/thunderbird-%{version}/comm/mail/locales/shipped-locales \ +sed -r '/^(ja-JP-mac|en-US|$)/d;s/ .*$//' $RPM_BUILD_DIR/%{source_prefix}/comm/mail/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 \ - ../thunderbird-%{version}/comm/mail/locales/l10n.ini ../l10n $locale - popd - LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \ + locale=$1 + pushd $RPM_BUILD_DIR/compare-locales + PYTHONPATH=lib \ + scripts/compare-locales -m ../l10n-merged/$locale \ + ../%{source_prefix}/comm/mail/locales/l10n.ini ../l10n $locale + popd + LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \ make -C comm/mail/locales langpack-$locale cp -rL dist/xpi-stage/locale-$locale \ %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org - # remove prefs and profile defaults from langpack - rm -rf %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org/defaults + # remove prefs and profile defaults from langpack + rm -rf %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org/defaults # check against the fixed common list and sort into the right filelist _matched=0 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 + [ "$_match" = "$locale" ] && _matched=1 done [ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other echo %{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org \ @@ -375,7 +399,7 @@ s:%%PROFILE:.thunderbird:g" \ %{SOURCE3} > %{buildroot}%{progdir}/%{progname}.sh chmod 755 %{buildroot}%{progdir}/%{progname}.sh ln -sf ../..%{progdir}/%{progname}.sh %{buildroot}%{_bindir}/%{progname} -# freedesktop definition +# desktop file mkdir -p %{buildroot}%{_datadir}/applications install -m 644 %{SOURCE1} \ %{buildroot}%{_datadir}/applications/%{desktop_file_name}.desktop @@ -425,7 +449,7 @@ rm -f %{buildroot}%{progdir}/nspr-config %fdupes %{buildroot}%{_libdir}/mozilla %fdupes %{buildroot}%{_datadir} %if %crashreporter -SYMBOLS_NAME="thunderbird-%{mainversion}-%{release}.%{_arch}-%{suse_version}-symbols" +SYMBOLS_NAME="thunderbird-%{version}-%{release}.%{_arch}-%{suse_version}-symbols" make buildsymbols \ SYMBOL_INDEX_NAME="$SYMBOLS_NAME.txt" \ SYMBOL_ARCHIVE_BASENAME="$SYMBOLS_NAME" @@ -477,11 +501,8 @@ exit 0 %endif %dir %{progdir}/chrome/ %{progdir}/chrome/icons/ -%dir %{progdir}/dictionaries/ %{progdir}/distribution/ %{progdir}/defaults/ -%dir %{progdir}/extensions/ -%{progdir}/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi %{progdir}/features/ %{progdir}/isp/ %{_datadir}/appdata/ @@ -492,9 +513,11 @@ exit 0 %if %localize %files translations-common -f %{_tmppath}/translations.common %defattr(-,root,root) +%dir %{progdir}/extensions/ %files translations-other -f %{_tmppath}/translations.other %defattr(-,root,root) +%dir %{progdir}/extensions/ %endif %if %crashreporter diff --git a/_constraints b/_constraints index 43acc56..1b2d7b1 100644 --- a/_constraints +++ b/_constraints @@ -5,20 +5,41 @@ 24 - 8 + 9 armv6l armv7l + + + + 12 + + + 5 + + + + + aarch64 - 9 + 12 + + + + + + x86_64 + + + + 16 - diff --git a/compare-locales.tar.xz b/compare-locales.tar.xz index ade39da..f6dade8 100644 --- a/compare-locales.tar.xz +++ b/compare-locales.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54f7cb6e3d25e9133320a7b031b2821e4dc514fa3d6c32b76f79cca0ca1e82f5 -size 28512 +oid sha256:74bff7abaceafcb71628e1be0dede58249467fe36a71bde992ab6e5a350db739 +size 28500 diff --git a/create-tar.sh b/create-tar.sh index 6d588da..5a3cf37 100644 --- a/create-tar.sh +++ b/create-tar.sh @@ -1,16 +1,127 @@ #!/bin/bash +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" -BRANCH="releases/comm-$CHANNEL" -RELEASE_TAG="7df22fd675a09804bc39fe54614ca7a68ffdcd68" -MOZ_RELEASE_TAG="887a438d43fa73e603704d02ea6756ea4e69eb1d" -VERSION="60.9.0" -VERSION_SUFFIX="" -LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json" +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 + +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" +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 9 downwards + # try to find the latest one that exists (assuming there are no more than 9 builds). + # Error only if not even the first one exists + for BUILD_ID in $(seq 9 -1 0); do + FINAL_URL="${URL_TO_CHECK}-build${BUILD_ID}.json" + if wget --quiet --spider "$FINAL_URL"; then + LAST_FOUND="$FINAL_URL" + break + fi + done + + if [ "$LAST_FOUND" != "" ]; then + echo "$LAST_FOUND" + return 0 + else + echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2 + return 1 + fi +} + +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' @@ -19,86 +130,142 @@ 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 thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz ]; then - echo "skip thunderbird checkout and use available archive" - # still need to extract the locale information from the archive - echo "extract locale list" - tar -xf thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz $LOCALE_FILE - # remove non-free untar licenced code from distributed tarball - #xz -d -v thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz && \ - #tar -v --wildcards --delete -f thunderbird-$VERSION$VERSION_SUFFIX.source.tar \ - # "thunderbird-${VERSION}/comm/other-licenses/7zstub" \ - # "thunderbird-${VERSION}/other-licenses/7zstub" \ - #&& \ - #xz -9 -v thunderbird-$VERSION$VERSION_SUFFIX.source.tar +if [ -e $SOURCE_TARBALL ]; then + if [ -z ${SKIP_LOCALES+x} ] && [ $LOCALES_CHANGED -ne 0 ]; then + # still need to extract the locale information from the archive + echo "extract locale changesets" + tar -xf $SOURCE_TARBALL $LOCALE_FILE + fi else - if [ -d thunderbird-$VERSION ]; then - pushd thunderbird-$VERSION + # 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 $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 thunderbird-$VERSION + popd || exit 1 + rm -rf $PRODUCT-$VERSION ;; esac fi - if [ ! -d thunderbird-$VERSION ]; then + if [ ! -d $PRODUCT-$VERSION ]; then echo "cloning new $BRANCH..." - hg clone http://hg.mozilla.org/releases/mozilla-$CHANNEL thunderbird-$VERSION - hg clone http://hg.mozilla.org/releases/comm-$CHANNEL thunderbird-$VERSION/comm + 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 thunderbird-$VERSION - hg update --check $MOZ_RELEASE_TAG - pushd comm - hg update --check $RELEASE_TAG - popd - popd + 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 + + 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..." - rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub - tar $compression -cf thunderbird-$VERSION.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS thunderbird-${VERSION} + tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION fi -# l10n -# http://l10n.mozilla.org/dashboard/?tree=tb30x -> shipped-locales -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 - (cd l10n/$locale; hg pull) - else - hg clone http://hg.mozilla.org/l10n-central/$locale l10n/$locale - fi - [ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $changeset - #) & - ;; - esac -done -wait -echo "creating l10n archive..." -tar $compression -cf l10n-$VERSION.tar.xz \ - --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=browser \ - --exclude=suite \ +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 +elif [ -f "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" ]; then + # Locales did not change, but the old tar-ball is in this directory + # Simply rename it: + echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz" + mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz" +fi # compare-locales echo "creating compare-locales" if [ -d compare-locales/.hg ]; then - (cd compare-locales; hg pull) + pushd compare-locales || exit 1 + hg pull + popd || exit 1 else hg clone http://hg.mozilla.org/build/compare-locales fi diff --git a/fix-missing-return-warning.patch b/fix-missing-return-warning.patch new file mode 100644 index 0000000..c7df984 --- /dev/null +++ b/fix-missing-return-warning.patch @@ -0,0 +1,10 @@ +diff -rup thunderbird-68.0.orig/media/libcubeb/src/cubeb_utils.cpp thunderbird-68.0/media/libcubeb/src/cubeb_utils.cpp +--- thunderbird-68.0.orig/media/libcubeb/src/cubeb_utils.cpp 2019-08-26 23:32:14.000000000 +0200 ++++ thunderbird-68.0/media/libcubeb/src/cubeb_utils.cpp 2019-08-30 09:22:26.213301561 +0200 +@@ -20,4 +20,6 @@ size_t cubeb_sample_size(cubeb_sample_fo + // should never happen as all cases are handled above. + assert(false); + } ++ // silence the compiler here: ++ return 0; + } diff --git a/l10n-60.9.0.tar.xz b/l10n-60.9.0.tar.xz deleted file mode 100644 index 9e2b813..0000000 --- a/l10n-60.9.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddc34550e843aab7beb40c8461451d4fbfe3bcedb832892ff11081f71abe4f2d -size 27532252 diff --git a/l10n-68.1.0.tar.xz b/l10n-68.1.0.tar.xz new file mode 100644 index 0000000..9bba565 --- /dev/null +++ b/l10n-68.1.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c541911ac4b533acbdde32928dd825716bec8c64d74a66f0537fd1ad2d95af68 +size 28439160 diff --git a/mozilla-aarch64-startup-crash.patch b/mozilla-aarch64-startup-crash.patch index 883e94f..9d15cc1 100644 --- a/mozilla-aarch64-startup-crash.patch +++ b/mozilla-aarch64-startup-crash.patch @@ -1,24 +1,22 @@ # HG changeset patch -# Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10 -# Parent 85c2e07d2a9ec3e45f55d0e482c7b663626bfc8a -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 -@@ -874,18 +874,23 @@ nsresult nsIOService::NewChannelFromURIW - u"Http channel implementation " - "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); @@ -26,8 +24,3 @@ diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp return NS_OK; } - NS_IMETHODIMP - nsIOService::NewChannelFromURIWithProxyFlags2( - nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags, - nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, - nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags, diff --git a/mozilla-bmo1375074.patch b/mozilla-bmo1375074.patch deleted file mode 100644 index 2ff69d8..0000000 --- a/mozilla-bmo1375074.patch +++ /dev/null @@ -1,95 +0,0 @@ - -# HG changeset patch -# User Lars T Hansen -# Date 1519822672 -3600 -# Node ID 800abe66894d6b07b24bccecbf6a65e2261076f6 -# Parent 6fbe9ec020d822b1deef5b0afe76b905b82308a1 -Bug 1375074 - Save and restore non-volatile x28 on ARM64 for generated unboxed object constructor. r=sstangl - -diff --git a/js/src/jit-test/tests/bug1375074.js b/js/src/jit-test/tests/bug1375074.js -new file mode 100644 ---- /dev/null -+++ b/js/src/jit-test/tests/bug1375074.js -@@ -0,0 +1,18 @@ -+// This forces the VM to start creating unboxed objects and thus stresses a -+// particular path into generated code for a specialized unboxed object -+// constructor. -+ -+var K = 2000; // 2000 should be plenty -+var s = "["; -+var i; -+for ( i=0; i < K-1; i++ ) -+ s = s + `{"i":${i}},`; -+s += `{"i":${i}}]`; -+var v = JSON.parse(s); -+ -+assertEq(v.length == K, true); -+ -+for ( i=0; i < K; i++) { -+ assertEq(v[i] instanceof Object, true); -+ assertEq(v[i].i, i); -+} -diff --git a/js/src/vm/UnboxedObject.cpp b/js/src/vm/UnboxedObject.cpp ---- a/js/src/vm/UnboxedObject.cpp -+++ b/js/src/vm/UnboxedObject.cpp -@@ -81,18 +81,25 @@ static const uintptr_t CLEAR_CONSTRUCTOR - masm.loadPtr(Address(masm.getStackPointer(), sizeof(void*)), propertiesReg); - masm.loadPtr(Address(masm.getStackPointer(), 2 * sizeof(void*)), newKindReg); - #else - propertiesReg = IntArgReg0; - newKindReg = IntArgReg1; - #endif - - #ifdef JS_CODEGEN_ARM64 -- // ARM64 communicates stack address via sp, but uses a pseudo-sp for -- // addressing. -+ // ARM64 communicates stack address via sp, but uses a pseudo-sp (PSP) for -+ // addressing. The register we use for PSP may however also be used by -+ // calling code, and it is nonvolatile, so save it. Do this as a special -+ // case first because the generic save/restore code needs the PSP to be -+ // initialized already. -+ MOZ_ASSERT(PseudoStackPointer64.Is(masm.GetStackPointer64())); -+ masm.Str(PseudoStackPointer64, vixl::MemOperand(sp, -16, vixl::PreIndex)); -+ -+ // Initialize the PSP from the SP. - masm.initStackPtr(); - #endif - - MOZ_ASSERT(propertiesReg.volatile_()); - MOZ_ASSERT(newKindReg.volatile_()); - - AllocatableGeneralRegisterSet regs(GeneralRegisterSet::All()); - regs.take(propertiesReg); -@@ -234,17 +241,32 @@ static const uintptr_t CLEAR_CONSTRUCTOR - masm.bind(&done); - - if (object != ReturnReg) masm.movePtr(object, ReturnReg); - - // Restore non-volatile registers which were saved on entry. - if (ScratchDoubleReg.volatile_()) masm.pop(ScratchDoubleReg); - masm.PopRegsInMask(savedNonVolatileRegisters); - -+#ifdef JS_CODEGEN_ARM64 -+ // Now restore the value that was in the PSP register on entry, and return. -+ -+ // Obtain the correct SP from the PSP. -+ masm.Mov(sp, PseudoStackPointer64); -+ -+ // Restore the saved value of the PSP register, this value is whatever the -+ // caller had saved in it, not any actual SP value, and it must not be -+ // overwritten subsequently. -+ masm.Ldr(PseudoStackPointer64, vixl::MemOperand(sp, 16, vixl::PostIndex)); -+ -+ // Perform a plain Ret(), as abiret() will move SP <- PSP and that is wrong. -+ masm.Ret(vixl::lr); -+#else - masm.abiret(); -+#endif - - masm.bind(&failureStoreOther); - - // There was a failure while storing a value which cannot be stored at all - // in the unboxed object. Initialize the object so it is safe for GC and - // return null. - masm.initUnboxedObjectContents(object, templateObject); - diff --git a/mozilla-bmo1463035.patch b/mozilla-bmo1463035.patch deleted file mode 100644 index da1feb6..0000000 --- a/mozilla-bmo1463035.patch +++ /dev/null @@ -1,121 +0,0 @@ - -# HG changeset patch -# User Mike Hommey -# Date 1526871862 -32400 -# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43 -# Parent 3075b562ca9b07ae037c427db6fdbc0ed1ad29a4 -Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons - -For some reason, GNU as is not happy with the assembly generated after -bug 1238661 anymore on Debian armel. - -OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this -workaround anymore, so let's just kill it. - -diff --git a/mfbt/LinuxSignal.h b/mfbt/LinuxSignal.h -deleted file mode 100644 ---- a/mfbt/LinuxSignal.h -+++ /dev/null -@@ -1,38 +0,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 -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#ifndef mozilla_LinuxSignal_h --#define mozilla_LinuxSignal_h -- --namespace mozilla { -- --#if defined(__arm__) -- --// Some (old) Linux kernels on ARM have a bug where a signal handler --// can be called without clearing the IT bits in CPSR first. The result --// is that the first few instructions of the handler could be skipped, --// ultimately resulting in crashes. To workaround this bug, the handler --// on ARM is a trampoline that starts with enough NOP instructions, so --// that even if the IT bits are not cleared, only the NOP instructions --// will be skipped over. -- --template --__attribute__((naked)) void SignalTrampoline(int aSignal, siginfo_t* aInfo, -- void* aContext) { -- asm volatile("nop; nop; nop; nop" : : : "memory"); -- -- asm volatile("b %0" : : "X"(H) : "memory"); --} -- --#define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline) -- --#else // __arm__ -- --#define MOZ_SIGNAL_TRAMPOLINE(h) (h) -- --#endif // __arm__ -- --} // namespace mozilla -- --#endif // mozilla_LinuxSignal_h -diff --git a/mfbt/moz.build b/mfbt/moz.build ---- a/mfbt/moz.build -+++ b/mfbt/moz.build -@@ -115,20 +115,16 @@ EXPORTS["double-conversion"] = [ - LOCAL_INCLUDES += [ - '/mfbt/double-conversion', - ] - - if CONFIG['OS_ARCH'] == 'WINNT': - EXPORTS.mozilla += [ - 'WindowsVersion.h', - ] --elif CONFIG['OS_ARCH'] == 'Linux': -- EXPORTS.mozilla += [ -- 'LinuxSignal.h', -- ] - - UNIFIED_SOURCES += [ - 'Assertions.cpp', - 'ChaosMode.cpp', - 'double-conversion/double-conversion/bignum-dtoa.cc', - 'double-conversion/double-conversion/bignum.cc', - 'double-conversion/double-conversion/cached-powers.cc', - 'double-conversion/double-conversion/diy-fp.cc', -diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp ---- a/tools/profiler/core/platform-linux-android.cpp -+++ b/tools/profiler/core/platform-linux-android.cpp -@@ -55,17 +55,16 @@ - #ifdef __GLIBC__ - #include // backtrace, backtrace_symbols - #endif // def __GLIBC__ - #include // index - #include - #include - - #include "prenv.h" --#include "mozilla/LinuxSignal.h" - #include "mozilla/PodOperations.h" - #include "mozilla/DebugOnly.h" - - #include - #include - - using namespace mozilla; - -@@ -248,17 +247,17 @@ Sampler::Sampler(PSLockRef aLock) - - // NOTE: We don't initialize LUL here, instead initializing it in - // SamplerThread's constructor. This is because with the - // profiler_suspend_and_sample_thread entry point, we want to be able to - // sample without waiting for LUL to be initialized. - - // Request profiling signals. - struct sigaction sa; -- sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler); -+ sa.sa_sigaction = SigprofHandler; - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART | SA_SIGINFO; - if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) { - MOZ_CRASH("Error installing SIGPROF handler in the profiler"); - } - } - - void Sampler::Disable(PSLockRef aLock) { diff --git a/mozilla-bmo1464766.patch b/mozilla-bmo1464766.patch deleted file mode 100644 index 2ee9b76..0000000 --- a/mozilla-bmo1464766.patch +++ /dev/null @@ -1,140 +0,0 @@ - -# HG changeset patch -# User Mike Hommey -# Date 1527491713 -32400 -# Node ID c28becad0c10b906454d7e424f9a9402799ea8dd -# Parent 906f5be6219677928f03318adb1d5e4eed96333c -Bug 1464766 - Allow to relax the addon signature requirements. r?rhelmer - -diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js ---- a/modules/libpref/init/all.js -+++ b/modules/libpref/init/all.js -@@ -1254,16 +1254,19 @@ pref("print.print_via_parent", true); - pref("print.print_via_parent", false); - #endif - - // Pref used by the spellchecker extension to control the - // maximum number of misspelled words that will be underlined - // in a document. - pref("extensions.spellcheck.inline.max-misspellings", 500); - -+// Add-on manager scoped allowing unsigned addons. None by default. -+pref("extensions.unsignedScopes", 12, locked); -+ - // Prefs used by libeditor. Prefs specific to seamonkey composer - // belong in comm-central/editor/ui/composer.js - - pref("editor.use_custom_colors", false); - pref("editor.singleLine.pasteNewlines", 2); - pref("editor.use_css", false); - pref("editor.css.default_length_unit", "px"); - pref("editor.resizing.preserve_ratio", true); -diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js ---- a/toolkit/mozapps/extensions/content/extensions.js -+++ b/toolkit/mozapps/extensions/content/extensions.js -@@ -47,16 +47,17 @@ XPCOMUtils.defineLazyPreferenceGetter(th - const PREF_DISCOVERURL = "extensions.webservice.discoverURL"; - const PREF_DISCOVER_ENABLED = "extensions.getAddons.showPane"; - const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled"; - const PREF_GETADDONS_CACHE_ID_ENABLED = "extensions.%ID%.getAddons.cache.enabled"; - const PREF_UI_TYPE_HIDDEN = "extensions.ui.%TYPE%.hidden"; - const PREF_UI_LASTCATEGORY = "extensions.ui.lastCategory"; - const PREF_LEGACY_EXCEPTIONS = "extensions.legacy.exceptions"; - const PREF_LEGACY_ENABLED = "extensions.legacy.enabled"; -+const PREF_UNSIGNED_SCOPES = "extensions.unsignedScopes"; - - const LOADING_MSG_DELAY = 100; - - const UPDATES_RECENT_TIMESPAN = 2 * 24 * 3600000; // 2 days (in milliseconds) - const UPDATES_RELEASENOTES_TRANSFORMFILE = "chrome://mozapps/content/extensions/updateinfo.xsl"; - - const XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - -@@ -229,19 +230,21 @@ function loadView(aViewId) { - - function isCorrectlySigned(aAddon) { - // Add-ons without an "isCorrectlySigned" property are correctly signed as - // they aren't the correct type for signing. - return aAddon.isCorrectlySigned !== false; - } - - function isDisabledUnsigned(addon) { -- let signingRequired = (addon.type == "locale") ? -- AddonSettings.LANGPACKS_REQUIRE_SIGNING : -- AddonSettings.REQUIRE_SIGNING; -+ let unsignedScopes = Services.prefs.getIntPref(PREF_UNSIGNED_SCOPES, 0); -+ let signingRequired = !(addon.scope & unsignedScopes) && -+ ((addon.type == "locale") ? -+ AddonSettings.LANGPACKS_REQUIRE_SIGNING : -+ AddonSettings.REQUIRE_SIGNING); - return signingRequired && !isCorrectlySigned(addon); - } - - function isLegacyExtension(addon) { - let legacy = false; - if (addon.type == "extension" && !addon.isWebExtension) { - legacy = true; - } -diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm ---- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm -+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm -@@ -67,16 +67,17 @@ const PREF_XPI_STATE = - const PREF_BLOCKLIST_ITEM_URL = "extensions.blocklist.itemURL"; - const PREF_BOOTSTRAP_ADDONS = "extensions.bootstrappedAddons"; - const PREF_PENDING_OPERATIONS = "extensions.pendingOperations"; - const PREF_SKIN_SWITCHPENDING = "extensions.dss.switchPending"; - const PREF_SKIN_TO_SELECT = "extensions.lastSelectedSkin"; - const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; - const PREF_EM_EXTENSION_FORMAT = "extensions."; - const PREF_EM_ENABLED_SCOPES = "extensions.enabledScopes"; -+const PREF_EM_UNSIGNED_SCOPES = "extensions.unsignedScopes"; - const PREF_EM_STARTUP_SCAN_SCOPES = "extensions.startupScanScopes"; - const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI"; - const PREF_XPI_ENABLED = "xpinstall.enabled"; - const PREF_XPI_WHITELIST_REQUIRED = "xpinstall.whitelist.required"; - const PREF_XPI_DIRECT_WHITELISTED = "xpinstall.whitelist.directRequest"; - const PREF_XPI_FILE_WHITELISTED = "xpinstall.whitelist.fileRequest"; - // xpinstall.signatures.required only supported in dev builds - const PREF_XPI_SIGNATURES_REQUIRED = "xpinstall.signatures.required"; -@@ -803,17 +804,19 @@ function isDisabledLegacy(addon) { - * The add-on to check - * @return true if the add-on should not be appDisabled - */ - function isUsableAddon(aAddon) { - // Hack to ensure the default theme is always usable - if (aAddon.type == "theme" && aAddon.internalName == XPIProvider.defaultSkin) - return true; - -- if (mustSign(aAddon.type) && !aAddon.isCorrectlySigned) { -+ let unsignedScopes = Services.prefs.getIntPref(PREF_EM_UNSIGNED_SCOPES, 0); -+ if (!(aAddon._installLocation.scope & unsignedScopes) && -+ mustSign(aAddon.type) && !aAddon.isCorrectlySigned) { - logger.warn(`Add-on ${aAddon.id} is not correctly signed.`); - if (Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)) { - logger.warn(`Preference ${PREF_XPI_SIGNATURES_DEV_ROOT} is set.`); - } - return false; - } - - if (aAddon.blocklistState == nsIBlocklistService.STATE_BLOCKED) { -diff --git a/toolkit/mozapps/extensions/internal/XPIProviderUtils.js b/toolkit/mozapps/extensions/internal/XPIProviderUtils.js ---- a/toolkit/mozapps/extensions/internal/XPIProviderUtils.js -+++ b/toolkit/mozapps/extensions/internal/XPIProviderUtils.js -@@ -39,16 +39,17 @@ var logger = Log.repository.getLogger(LO - const KEY_PROFILEDIR = "ProfD"; - const FILE_JSON_DB = "extensions.json"; - - // The last version of DB_SCHEMA implemented in SQLITE - const LAST_SQLITE_DB_SCHEMA = 14; - const PREF_DB_SCHEMA = "extensions.databaseSchema"; - const PREF_PENDING_OPERATIONS = "extensions.pendingOperations"; - const PREF_EM_AUTO_DISABLED_SCOPES = "extensions.autoDisableScopes"; -+const PREF_EM_UNSIGNED_SCOPES = "extensions.unsignedScopes"; - - const KEY_APP_SYSTEM_ADDONS = "app-system-addons"; - const KEY_APP_SYSTEM_DEFAULTS = "app-system-defaults"; - const KEY_APP_GLOBAL = "app-global"; - const KEY_APP_TEMPORARY = "app-temporary"; - - // Properties to save in JSON file - const PROP_JSON_FIELDS = ["id", "syncGUID", "location", "version", "type", diff --git a/mozilla-bmo1519629.patch b/mozilla-bmo1519629.patch deleted file mode 100644 index 26e58d9..0000000 --- a/mozilla-bmo1519629.patch +++ /dev/null @@ -1,66 +0,0 @@ -# HG changeset patch -# Parent ba0e794338a92e82d4b19e9fb012c848302b7dbd - -diff --git a/servo/components/style/lib.rs b/servo/components/style/lib.rs ---- a/servo/components/style/lib.rs -+++ b/servo/components/style/lib.rs -@@ -18,17 +18,17 @@ - //! [recalc_style_at]: traversal/fn.recalc_style_at.html - //! - //! Major dependencies are the [cssparser][cssparser] and [selectors][selectors] - //! crates. - //! - //! [cssparser]: ../cssparser/index.html - //! [selectors]: ../selectors/index.html - --#![deny(missing_docs)] -+//#![deny(missing_docs)] - - extern crate app_units; - extern crate arrayvec; - extern crate atomic_refcell; - #[macro_use] - extern crate bitflags; - #[allow(unused_extern_crates)] extern crate byteorder; - #[cfg(feature = "gecko")] #[macro_use] #[no_link] extern crate cfg_if; -@@ -143,17 +143,17 @@ pub mod values; - #[cfg(feature = "servo")] pub use html5ever::Prefix; - #[cfg(feature = "servo")] pub use html5ever::LocalName; - #[cfg(feature = "servo")] pub use html5ever::Namespace; - - /// The CSS properties supported by the style system. - /// Generated from the properties.mako.rs template by build.rs - #[macro_use] - #[allow(unsafe_code)] --#[deny(missing_docs)] -+//#[deny(missing_docs)] - pub mod properties { - include!(concat!(env!("OUT_DIR"), "/properties.rs")); - } - - // uses a macro from properties - #[cfg(feature = "servo")] #[allow(unsafe_code)] pub mod servo; - - #[cfg(feature = "gecko")] -diff --git a/servo/components/style_traits/lib.rs b/servo/components/style_traits/lib.rs ---- a/servo/components/style_traits/lib.rs -+++ b/servo/components/style_traits/lib.rs -@@ -4,17 +4,17 @@ - - //! This module contains shared types and messages for use by devtools/script. - //! The traits are here instead of in script so that the devtools crate can be - //! modified independently of the rest of Servo. - - #![crate_name = "style_traits"] - #![crate_type = "rlib"] - --#![deny(unsafe_code, missing_docs)] -+#![deny(unsafe_code)] - - extern crate app_units; - #[macro_use] extern crate bitflags; - #[macro_use] extern crate cssparser; - extern crate euclid; - extern crate malloc_size_of; - #[macro_use] extern crate malloc_size_of_derive; - extern crate selectors; diff --git a/mozilla-i586-DecoderDoctorLogger.patch b/mozilla-i586-DecoderDoctorLogger.patch deleted file mode 100644 index 13f9bda..0000000 --- a/mozilla-i586-DecoderDoctorLogger.patch +++ /dev/null @@ -1,26 +0,0 @@ -# HG changeset patch -# Parent f3fe334a20e8a63266eb06c5d298ad793cefc015 -Mozilla Bug#1447070 - DecoderDoctorLogger.h must be included in MediaKeySession.h - to fix non-unified build error for i586 target. - -diff --git a/dom/media/eme/MediaKeySession.h b/dom/media/eme/MediaKeySession.h ---- a/dom/media/eme/MediaKeySession.h -+++ b/dom/media/eme/MediaKeySession.h -@@ -2,16 +2,17 @@ - /* vim: set ts=8 sts=2 et sw=2 tw=80: */ - /* 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 file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #ifndef mozilla_dom_MediaKeySession_h - #define mozilla_dom_MediaKeySession_h - -+#include "DecoderDoctorLogger.h" - #include "mozilla/Attributes.h" - #include "mozilla/ErrorResult.h" - #include "nsCycleCollectionParticipant.h" - #include "mozilla/DOMEventTargetHelper.h" - #include "nsCOMPtr.h" - #include "mozilla/dom/TypedArray.h" - #include "mozilla/Mutex.h" - #include "mozilla/dom/Date.h" diff --git a/mozilla-i586-domPrefs.patch b/mozilla-i586-domPrefs.patch deleted file mode 100644 index c70aa6c..0000000 --- a/mozilla-i586-domPrefs.patch +++ /dev/null @@ -1,27 +0,0 @@ -# HG changeset patch -# User Andrea Marchesini -# Parent fab938f4757d8487a87fbf911200ff0317612746 -Mozilla Bug#1447409 - DOMPrefs.h must be included in WorkerScope, r=qdot - To fix 32bit build error for i586 target. - -diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h ---- a/dom/workers/WorkerScope.h -+++ b/dom/workers/WorkerScope.h -@@ -4,16 +4,17 @@ - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #ifndef mozilla_dom_workerscope_h__ - #define mozilla_dom_workerscope_h__ - - #include "mozilla/dom/WorkerCommon.h" - #include "mozilla/DOMEventTargetHelper.h" -+#include "mozilla/dom/DOMPrefs.h" - #include "mozilla/dom/Headers.h" - #include "mozilla/dom/RequestBinding.h" - #include "nsWeakReference.h" - #include "mozilla/dom/ImageBitmapSource.h" - - #ifdef XP_WIN - #undef PostMessage - #endif diff --git a/mozilla-kde.patch b/mozilla-kde.patch index 8b6ffcb..bbbcb01 100644 --- a/mozilla-kde.patch +++ b/mozilla-kde.patch @@ -1,5 +1,9 @@ # HG changeset patch -# Parent 58a0b60e25e7160c9877299a37a2f10660888e9a +# User msirringhaus@suse.de +# Date 1559294891 -7200 +# Fri May 31 11:28:11 2019 +0200 +# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112 +# Parent 93495ad6fa0fe292eadcbfef14e0e27273528497 Description: Add KDE integration to Firefox (toolkit parts) Author: Wolfgang Rosenauer Author: Lubos Lunak @@ -9,7 +13,7 @@ Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp --- a/modules/libpref/Preferences.cpp +++ b/modules/libpref/Preferences.cpp -@@ -76,16 +76,17 @@ +@@ -81,16 +81,17 @@ #include "nsXPCOMCID.h" #include "nsXPCOM.h" #include "nsXULAppAPI.h" @@ -20,14 +24,14 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp #include "prlink.h" +#include "nsKDEUtils.h" - #ifdef XP_WIN - #include "windows.h" + #ifdef MOZ_MEMORY + # include "mozmemory.h" #endif - using namespace mozilla; - - #ifdef DEBUG -@@ -3519,25 +3520,37 @@ static nsresult pref_ReadPrefFromJar(nsZ + #ifdef XP_WIN + # include "windows.h" + #endif +@@ -4507,25 +4508,37 @@ static nsresult pref_ReadDefaultPrefs(co // application pref files for backwards compatibility. static const char* specialFiles[] = { #if defined(XP_MACOSX) @@ -37,10 +41,10 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp #elif defined(XP_UNIX) "unix.js" + , "" // placeholder for KDE (empty is otherwise harmless) - #if defined(_AIX) + # if defined(_AIX) , "aix.js" - #endif + # endif #elif defined(XP_BEOS) "beos.js" #endif @@ -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. -@@ -3585,17 +3598,17 @@ static nsresult pref_ReadPrefFromJar(nsZ +@@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co } nsCOMPtr path = do_QueryInterface(elem); @@ -79,39 +83,39 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp } } - #ifdef MOZ_WIDGET_ANDROID - // Set up the correct default for toolkit.telemetry.enabled. If this build - // has MOZ_TELEMETRY_ON_BY_DEFAULT *or* we're on the beta channel, telemetry - // is on by default, otherwise not. This is necessary so that beta users who - // are testing final release builds don't flipflop defaults. + if (XRE_IsParentProcess()) { + SetupTelemetryPref(); + } + + NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr, diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build --- a/modules/libpref/moz.build +++ b/modules/libpref/moz.build -@@ -27,16 +27,20 @@ XPIDL_MODULE = 'pref' - EXPORTS.mozilla += [ - 'Preferences.h', +@@ -31,16 +31,20 @@ EXPORTS.mozilla += [ + 'StaticPrefs.h', ] UNIFIED_SOURCES += [ 'Preferences.cpp', + 'SharedPrefMap.cpp', ] +LOCAL_INCLUDES += [ -+ '/toolkit/xre' ++ '/toolkit/xre' +] + + XPCOM_MANIFESTS += [ + 'components.conf', + ] + include('/ipc/chromium/chromium-config.mozbuild') FINAL_LIBRARY = 'xul' - DEFINES['OS_ARCH'] = CONFIG['OS_ARCH'] - DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT'] - if CONFIG['MOZ_ENABLE_WEBRENDER']: - DEFINES['MOZ_ENABLE_WEBRENDER'] = True diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py --- a/python/mozbuild/mozpack/chrome/flags.py +++ b/python/mozbuild/mozpack/chrome/flags.py -@@ -220,16 +220,17 @@ class Flags(OrderedDict): +@@ -223,16 +223,17 @@ class Flags(OrderedDict): 'contentaccessible': Flag, 'os': StringFlag, 'osversion': VersionFlag, @@ -132,7 +136,7 @@ diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/c diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py --- a/python/mozbuild/mozpack/chrome/manifest.py +++ b/python/mozbuild/mozpack/chrome/manifest.py -@@ -34,16 +34,17 @@ class ManifestEntry(object): +@@ -39,16 +39,17 @@ class ManifestEntry(object): 'platformversion', 'os', 'osversion', @@ -153,7 +157,7 @@ diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpac diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build --- a/toolkit/components/downloads/moz.build +++ b/toolkit/components/downloads/moz.build -@@ -41,10 +41,14 @@ EXTRA_JS_MODULES += [ +@@ -41,10 +41,14 @@ XPCOM_MANIFESTS += [ if CONFIG['MOZ_PLACES']: EXTRA_JS_MODULES += [ @@ -167,34 +171,34 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa +] + with Files('**'): - BUG_COMPONENT = ('Toolkit', 'Download Manager') + BUG_COMPONENT = ('Toolkit', 'Downloads API') diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn --- a/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn -@@ -69,16 +69,18 @@ toolkit.jar: - content/global/bindings/checkbox.xml (widgets/checkbox.xml) - content/global/bindings/colorpicker.xml (widgets/colorpicker.xml) +@@ -63,16 +63,18 @@ toolkit.jar: + content/global/widgets.css + content/global/bindings/autocomplete.xml (widgets/autocomplete.xml) + content/global/bindings/button.xml (widgets/button.xml) + content/global/bindings/calendar.js (widgets/calendar.js) content/global/bindings/datekeeper.js (widgets/datekeeper.js) content/global/bindings/datepicker.js (widgets/datepicker.js) - content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml) - content/global/bindings/datetimebox.xml (widgets/datetimebox.xml) content/global/bindings/datetimebox.css (widgets/datetimebox.css) * content/global/bindings/dialog.xml (widgets/dialog.xml) +* 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/editor.xml (widgets/editor.xml) - content/global/bindings/filefield.xml (widgets/filefield.xml) - * content/global/bindings/findbar.xml (widgets/findbar.xml) content/global/bindings/general.xml (widgets/general.xml) - content/global/bindings/groupbox.xml (widgets/groupbox.xml) - content/global/bindings/listbox.xml (widgets/listbox.xml) - content/global/bindings/menu.xml (widgets/menu.xml) - content/global/bindings/menulist.xml (widgets/menulist.xml) + content/global/bindings/popup.xml (widgets/popup.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,478 @@ +@@ -0,0 +1,499 @@ + + ++ [] ++ + @@ -368,16 +374,32 @@ new file mode 100644 + this._configureButtons(this.buttons); + + // listen for when window is closed via native close buttons -+ window.addEventListener("close", this._closeHandler); ++ window.addEventListener("close", this); + + // for things that we need to initialize after onload fires -+ window.addEventListener("load", this.postLoadInit); ++ window.addEventListener("load", this); + + window.moveToAlertPosition = this.moveToAlertPosition; + window.centerWindowOnScreen = this.centerWindowOnScreen; + ]]> + + ++ ++ ++ ++ ++ + + + @@ -425,6 +447,12 @@ new file mode 100644 + + // Give focus after onload completes, see bug 103197. + setTimeout(focusInit, 0); ++ ++ if (this._l10nButtons.length) { ++ document.l10n.translateElements(this._l10nButtons).then(() => { ++ window.sizeToContent(); ++ }); ++ } + ]]> + + @@ -471,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; @@ -493,6 +525,9 @@ new file mode 100644 + button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype)); + if (this.hasAttribute("buttonaccesskey" + dlgtype)) + button.setAttribute("accesskey", this.getAttribute("buttonaccesskey" + dlgtype)); ++ } else if (this.hasAttribute("buttonid" + dlgtype)) { ++ document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype)); ++ this._l10nButtons.push(button); + } else if (dlgtype != "extra1" && dlgtype != "extra2") { + button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype)); + var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype); @@ -619,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); + ]]> + + @@ -665,7 +688,9 @@ new file mode 100644 + + var btn = this.getButton(this.defaultButton); + if (btn) -+ btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Ci.nsIDOMXULButtonElement)); ++ btn.setAttribute("default", event.originalTarget == btn || ++ !(event.originalTarget.localName == "button" || ++ event.originalTarget.localName == "toolbarbutton")); + +#endif + @@ -673,64 +698,32 @@ new file mode 100644 + + + -diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js ---- a/toolkit/mozapps/downloads/nsHelperAppDlg.js -+++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js -@@ -627,17 +627,17 @@ nsUnknownContentTypeDialog.prototype = { - else - typeString = mimeInfo.MIMEType; - } - // When the length is unknown, contentLength would be -1 - if (this.mLauncher.contentLength >= 0) { - let [size, unit] = DownloadUtils. - convertByteUnits(this.mLauncher.contentLength); - type.value = this.dialogElement("strings") -- .getFormattedString("orderedFileSizeWithType", -+ .getFormattedString("orderedFileSizeWithType", - [typeString, size, unit]); - } - else { - type.value = typeString; - } - }, - - // Returns true if opening the default application makes sense. -@@ -801,17 +801,17 @@ nsUnknownContentTypeDialog.prototype = { - switch (this.dialogElement("openHandler").selectedIndex) { - case 0: - // No app need be specified in this case. - ok = true; - break; - case 1: - // only enable the OK button if we have a default app to use or if - // the user chose an app.... -- ok = this.chosenApp || /\S/.test(this.dialogElement("otherHandler").getAttribute("path")); -+ ok = this.chosenApp || /\S/.test(this.dialogElement("otherHandler").getAttribute("path")); - break; - } - } - - // Enable Ok button if ok to press. - this.mDialog.document.documentElement.getButton("accept").disabled = !ok; - }, - -@@ -1066,30 +1066,60 @@ nsUnknownContentTypeDialog.prototype = { - - if (params.handlerApp && - params.handlerApp.executable && - params.handlerApp.executable.isFile()) { +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 +@@ -1204,36 +1204,66 @@ nsUnknownContentTypeDialog.prototype = { + params.handlerApp && + params.handlerApp.executable && + params.handlerApp.executable.isFile() + ) { // Remember the file they chose to run. this.chosenApp = params.handlerApp; } } else if ("@mozilla.org/applicationchooser;1" in Cc) { - var nsIApplicationChooser = Ci.nsIApplicationChooser; -- var appChooser = Cc["@mozilla.org/applicationchooser;1"] -- .createInstance(nsIApplicationChooser); -- appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); +- var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance( +- nsIApplicationChooser +- ); +- appChooser.init( +- this.mDialog, +- this.dialogElement("strings").getString("chooseAppFilePickerTitle") +- ); - var contentTypeDialogObj = this; - let appChooserCallback = function appChooserCallback_done(aResult) { - if (aResult) { -- contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); +- contentTypeDialogObj.chosenApp = aResult.QueryInterface( +- Ci.nsILocalHandlerApp +- ); - } - contentTypeDialogObj.finishChooseApp(); - }; @@ -767,13 +760,19 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl + }); + } else { + var nsIApplicationChooser = Ci.nsIApplicationChooser; -+ var appChooser = Cc["@mozilla.org/applicationchooser;1"] -+ .createInstance(nsIApplicationChooser); -+ appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); ++ var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance( ++ nsIApplicationChooser ++ ); ++ appChooser.init( ++ this.mDialog, ++ this.dialogElement("strings").getString("chooseAppFilePickerTitle") ++ ); + var contentTypeDialogObj = this; + let appChooserCallback = function appChooserCallback_done(aResult) { + if (aResult) { -+ contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); ++ contentTypeDialogObj.chosenApp = aResult.QueryInterface( ++ Ci.nsILocalHandlerApp ++ ); + } + contentTypeDialogObj.finishChooseApp(); + }; @@ -783,16 +782,16 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl + } } else { var nsIFilePicker = Ci.nsIFilePicker; - var fp = Cc["@mozilla.org/filepicker;1"] - .createInstance(nsIFilePicker); - fp.init(this.mDialog, - this.dialogElement("strings").getString("chooseAppFilePickerTitle"), - nsIFilePicker.modeOpen); - + var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); + fp.init( + this.mDialog, + this.dialogElement("strings").getString("chooseAppFilePickerTitle"), + nsIFilePicker.modeOpen + ); 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" @@ -803,23 +802,24 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy #include "nsIURI.h" +#include "nsKDEUtils.h" + using namespace mozilla; + class nsUnixSystemProxySettings final : public nsISystemProxySettings { public: NS_DECL_ISUPPORTS NS_DECL_NSISYSTEMPROXYSETTINGS - nsUnixSystemProxySettings() : mSchemeProxySettings(4) {} - nsresult Init(); -@@ -42,16 +43,17 @@ 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 mProxySettings; + nsInterfaceHashtable + mSchemeProxySettings; nsresult GetProxyFromGSettings(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult); nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult); -+ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult); ++ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, ++ PRInt32 aPort, nsACString& aResult); }; NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings) @@ -828,7 +828,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 -@@ -488,16 +490,19 @@ nsresult nsUnixSystemProxySettings::GetP +@@ -382,21 +385,50 @@ nsresult nsUnixSystemProxySettings::GetP return NS_OK; } @@ -844,20 +844,10 @@ 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); } -@@ -521,8 +526,34 @@ static const mozilla::Module::CIDEntry k - static const mozilla::Module::ContractIDEntry kUnixProxyContracts[] = { - {NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_UNIXSYSTEMPROXYSERVICE_CID}, - {nullptr}}; - static const mozilla::Module kUnixProxyModule = { - mozilla::Module::kVersion, kUnixProxyCIDs, kUnixProxyContracts}; - - NSMODULE_DEFN(nsUnixProxyModule) = &kUnixProxyModule; -+ +nsresult +nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme, + const nsACString& aHost, @@ -883,10 +873,16 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy + return NS_OK; +} + ++ + NS_IMPL_COMPONENT_FACTORY(nsUnixSystemProxySettings) { + auto result = MakeRefPtr(); + result->Init(); + return result.forget().downcast(); + } diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build --- a/toolkit/xre/moz.build +++ b/toolkit/xre/moz.build -@@ -65,17 +65,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co +@@ -83,17 +83,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co '../components/printingui', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': @@ -905,7 +901,7 @@ diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build 'nsNativeAppSupportDefault.cpp', ] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': + if CONFIG['MOZ_HAS_REMOTE']: diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp new file mode 100644 --- /dev/null @@ -954,7 +950,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 ) + { @@ -1311,7 +1307,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" @@ -1319,8 +1316,8 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle #include "ContentHandlerService.h" #include "nsStringEnumerator.h" #ifdef MOZ_WIDGET_GTK --#include "unix/nsGNOMERegistry.h" -+#include "unix/nsCommonRegistry.h" +-# include "unix/nsGNOMERegistry.h" ++# include "unix/nsCommonRegistry.h" #endif using mozilla::dom::ContentHandlerService; @@ -1329,13 +1326,13 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle using mozilla::dom::RemoteHandlerApp; namespace { -@@ -245,17 +245,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()); @@ -1346,12 +1343,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 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 -@@ -77,17 +77,19 @@ else: +@@ -83,17 +83,19 @@ else: SOURCES += [ osdir + '/nsOSHelperAppService.cpp', ] @@ -1368,10 +1384,10 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': UNIFIED_SOURCES += [ 'android/nsAndroidHandlerApp.cpp', - 'android/nsExternalSharingAppService.cpp', 'android/nsExternalURLHandlerService.cpp', 'android/nsMIMEInfoAndroid.cpp', -@@ -124,16 +126,17 @@ include('/ipc/chromium/chromium-config.m + ] +@@ -133,16 +135,17 @@ include('/ipc/chromium/chromium-config.m FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ @@ -1629,19 +1645,19 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler #include "nsIIOService.h" #include "nsAutoPtr.h" #ifdef MOZ_ENABLE_DBUS - #include "nsDBusHandlerApp.h" + # include "nsDBusHandlerApp.h" #endif +#if defined(XP_UNIX) && !defined(XP_MACOSX) +#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. @@ -1716,8 +1732,8 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth #include "nsOSHelperAppService.h" #include "nsMIMEInfoUnix.h" #ifdef MOZ_WIDGET_GTK --#include "nsGNOMERegistry.h" -+#include "nsCommonRegistry.h" +-# include "nsGNOMERegistry.h" ++# include "nsCommonRegistry.h" #endif #include "nsISupports.h" #include "nsString.h" @@ -1726,7 +1742,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth #include "nsIURL.h" #include "nsIFileStreams.h" #include "nsILineInputStream.h" -@@ -1040,17 +1040,17 @@ nsresult nsOSHelperAppService::GetHandle +@@ -1025,17 +1025,17 @@ nsresult nsOSHelperAppService::GetHandle nsresult nsOSHelperAppService::OSProtocolHandlerExists( const char* aProtocolScheme, bool* aHandlerExists) { @@ -1745,7 +1761,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth nsCOMPtr handlerSvc = do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv); if (NS_SUCCEEDED(rv) && handlerSvc) { -@@ -1060,17 +1060,17 @@ nsresult nsOSHelperAppService::OSProtoco +@@ -1045,17 +1045,17 @@ nsresult nsOSHelperAppService::OSProtoco } return rv; @@ -1764,7 +1780,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth nsresult nsOSHelperAppService::GetFileTokenForPath( const char16_t* platformAppPath, nsIFile** aFile) { -@@ -1151,17 +1151,17 @@ already_AddRefed nsOSHel +@@ -1136,17 +1136,17 @@ already_AddRefed nsOSHel nsresult rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType, minorType, mime_types_description, true); @@ -1783,7 +1799,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType, minorType, mime_types_description, false); -@@ -1263,17 +1263,17 @@ already_AddRefed nsOSHel +@@ -1248,17 +1248,17 @@ already_AddRefed nsOSHel // Now look up our extensions nsAutoString extensions, mime_types_description; @@ -1805,12 +1821,12 @@ 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 @@ else: - include('/ipc/chromium/chromium-config.mozbuild') +@@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ + '/layout/base', '/layout/generic', '/layout/xul', '/other-licenses/atk-1.0', @@ -1860,14 +1876,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; -@@ -225,17 +227,19 @@ nsFilePicker::AppendFilters(int32_t aFil + 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; @@ -1882,12 +1898,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp mFilters.AppendElement(filter); mFilterNames.AppendElement(name); -@@ -335,16 +339,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; @@ -1917,13 +1933,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,8 +599,233 @@ void nsFilePicker::Done(GtkWidget *file_ - if (mCallback) { +@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos mCallback->Done(result); mCallback = nullptr; } else { @@ -1931,7 +1946,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp } NS_RELEASE_THIS(); } -+ + +nsCString nsFilePicker::kdeMakeFilter( int index ) + { + nsCString buf = mFilters[ index ]; @@ -2156,10 +2171,18 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp + return NS_OK; + } + + // All below functions available as of GTK 3.20+ + void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent, + GtkFileChooserAction action, + const gchar* accept_label) { + static auto sGtkFileChooserNativeNewPtr = + (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 -@@ -67,14 +67,20 @@ class nsFilePicker : public nsBaseFilePi +@@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi nsString mDefaultExtension; nsTArray mFilters; @@ -2174,12 +2197,14 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h + NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn); + nsCString kdeMakeFilter( int index ); + - #ifdef MOZ_WIDGET_GTK - GtkFileChooserWidget* mFileChooserDelegate; - #endif - }; + 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, + gboolean modal); - #endif diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp --- a/xpcom/components/ManifestParser.cpp +++ b/xpcom/components/ManifestParser.cpp @@ -2200,8 +2225,8 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars const char* directive; int argc; - // Binary components are only allowed for APP locations. -@@ -418,16 +419,17 @@ void ParseManifest(NSLocationType aType, + bool ischrome; +@@ -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"); @@ -2219,7 +2244,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars NS_NAMED_LITERAL_STRING(kMain, "main"); NS_NAMED_LITERAL_STRING(kContent, "content"); -@@ -473,39 +475,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); @@ -2230,15 +2255,15 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars nsAutoString osVersion; + nsAutoString desktop; #if defined(XP_WIN) - #pragma warning(push) - #pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx + # pragma warning(push) + # pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx OSVERSIONINFO info = {sizeof(OSVERSIONINFO)}; if (GetVersionEx(&info)) { nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion, info.dwMinorVersion); } + desktop = NS_LITERAL_STRING("win"); - #pragma warning(pop) + # pragma warning(pop) #elif defined(MOZ_WIDGET_COCOA) SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor(); SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor(); @@ -2264,7 +2289,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars process = kMain; } -@@ -608,25 +615,27 @@ void ParseManifest(NSLocationType aType, +@@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType, TriState stOsVersion = eUnspecified; TriState stOs = eUnspecified; TriState stABI = eUnspecified; @@ -2292,7 +2317,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars continue; } -@@ -663,17 +672,17 @@ void ParseManifest(NSLocationType aType, +@@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType, } LogMessageWithContext( @@ -2314,42 +2339,46 @@ 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 -@@ -44,12 +44,13 @@ FINAL_LIBRARY = 'xul' - LOCAL_INCLUDES += [ +@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [ '!..', '../base', '../build', '../ds', - '../reflect/xptinfo', '/chrome', + '/js/xpconnect/loader', + '/layout/build', '/modules/libjar', -+ '/toolkit/xre' ++ '/toolkit/xre', ] if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: CXXFLAGS += CONFIG['TK_CFLAGS'] + + 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 @@ -47,16 +47,17 @@ #include "prproces.h" #include "nsIDirectoryEnumerator.h" - #include "nsISimpleEnumerator.h" + #include "nsSimpleEnumerator.h" #include "private/pprio.h" #include "prlink.h" #ifdef MOZ_WIDGET_GTK - #include "nsIGIOService.h" -+#include "nsKDEUtils.h" + # include "nsIGIOService.h" ++# include "nsKDEUtils.h" #endif #ifdef MOZ_WIDGET_COCOA - #include - #include "CocoaFileUtils.h" - #include "prmem.h" - #include "plbase64.h" + # include + # include "CocoaFileUtils.h" + # include "prmem.h" + # include "plbase64.h" -@@ -1901,62 +1902,77 @@ nsLocalFile::SetPersistentDescriptor(con +@@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con NS_IMETHODIMP nsLocalFile::Reveal() { diff --git a/mozilla-nongnome-proxies.patch b/mozilla-nongnome-proxies.patch index b11ff52..6b75515 100644 --- a/mozilla-nongnome-proxies.patch +++ b/mozilla-nongnome-proxies.patch @@ -1,47 +1,35 @@ -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 -@@ -55,24 +55,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 @@ } - nsresult nsUnixSystemProxySettings::Init() { + void nsUnixSystemProxySettings::Init() { - 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); -+ // 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)); + } } - - return NS_OK; } - bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) { - nsAutoCString mode; - return NS_SUCCEEDED(mGConf->GetString( diff --git a/suse-default-prefs.js b/suse-default-prefs.js index 10630d5..850b97e 100644 --- a/suse-default-prefs.js +++ b/suse-default-prefs.js @@ -10,6 +10,7 @@ pref("print.print_edge_left", 16); // 1/100 of an inch pref("print.print_edge_right", 16); // 1/100 of an inch pref("print.print_edge_bottom", 14); // 1/100 of an inch pref("intl.locale.requested", ""); +pref("intl.multilingual.enabled", true); // do not disable system-global or app-global extensions pref("extensions.autoDisableScopes", 3); diff --git a/tar_stamps b/tar_stamps new file mode 100644 index 0000000..cecaeb0 --- /dev/null +++ b/tar_stamps @@ -0,0 +1,10 @@ +PRODUCT="thunderbird" +CHANNEL="esr68" +VERSION="68.1.0" +VERSION_SUFFIX="" +FF_RELEASE_TAG="0efe7ab505b59f1986ebedc0c114a7d24fd93168" +TB_RELEASE_TAG="9317dad8cb7fd80a47cb3b40253c73127f776535" +PREV_VERSION="" +PREV_VERSION_SUFFIX="" +#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation + diff --git a/thunderbird-60.9.0.source.tar.xz b/thunderbird-60.9.0.source.tar.xz deleted file mode 100644 index 4ea8aa9..0000000 --- a/thunderbird-60.9.0.source.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8818180658aeb8853de4cf381700e32907b361f0958bcce78f1590c6962d2d86 -size 286400364 diff --git a/thunderbird-60.9.0.source.tar.xz.asc b/thunderbird-60.9.0.source.tar.xz.asc deleted file mode 100644 index 04218dc..0000000 --- a/thunderbird-60.9.0.source.tar.xz.asc +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.14 (GNU/Linux) - -iQIcBAABCAAGBQJdbtvuAAoJEPGmZo+7fVcuHQgQAIzta3TWhspqaHixVAruX078 -ory1MSnV81dc96IQPB5qBk/wgHPv3H0SFMxbmvdSr2NSWzbVj/W6oxRJ+rZ0JlyS -1nLqTqQrXwoSoI4er/uNAAwhbmSAgVSLx1ImTk6sIgNeofaTrS0dTo5PlFJPgosg -SmK9EjwupoWirysN1cjTbH8DxJcgYYd+S4nkdbbJY8UTruYRjrbol4fOCzvNmYB6 -2og4ZOSivsAq0m6eDbjiQvMW3dJZw5mOW0sGCs4OF8Qi16Jaa8FjCjNGRwE1e5jg -IYOS/tgON1fdfTVE4I0YlGPHqx1PH1OLeO9WjcNyW+3HMwZs2A0YrOA7I+0x8RIf -oQ4vJSKBugNF9Z0kHh3qBUD5sJt9y/++YffxzgK3Z9sqmPkyzj//R6wzk81sA2xx -Lpeb6an08+MKvgT/EoLtZ/1isnbQVTu1/hwQVr9KNWLsbxvb4vl5oteRgZpUM1Fa -9Au6Nr/CxtWV1prmOPVwfDaC5j9ca2afJWiW4VSBiY0KUXl/rvn0VXD8P7SmcqgT -J5gh9MghSdDjb8YLM5/RGaGgvEVe6nf289N5BkOfUW5uGFPpXxaLvszatTqm9kAP -ciwqNECbAeo7sdrPIS79//eR2hHlOa2Lp4WWdDcFEgHD/cCsMjdZ04Q2qf0GYmgP -/33tvnMsRIa6invZ6ONt -=q4oW ------END PGP SIGNATURE----- diff --git a/thunderbird-68.1.0.source.tar.xz b/thunderbird-68.1.0.source.tar.xz new file mode 100644 index 0000000..e5559f9 --- /dev/null +++ b/thunderbird-68.1.0.source.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de0e5c7d1d5576f451e386e4779f155b7af97621a4e22caac0c6dee3c9d76eef +size 333332920 diff --git a/thunderbird-68.1.0.source.tar.xz.asc b/thunderbird-68.1.0.source.tar.xz.asc new file mode 100644 index 0000000..9ddf74e --- /dev/null +++ b/thunderbird-68.1.0.source.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl125ZoACgkQ8aZmj7t9 +Vy70YBAAm1wopZ2gjKfBXWbfxASnWP+9+WIKa/o62qpJTybDbPGiopMXp/v8fBX5 +WIIftd7cacl3WQHVWmlaFLwJl6vGo7Zro7AHXkxZ+z28kaokh5HtN5/qwcq6C5Gg +2lFMcDGWCKx3qqgRynruEEPCSmQt7JTFEpmGxuCJNYDRbSF01yIsGC6DXi9H/uQr +di+YD/iEcdinjSUyZ7vCpBgelgFxF1+kp0DpcBS/1YK/U1Sl4MYfoE8P4SoXETJY +t2AVa8t10UlV+B0SMtShK0EN/M5A1H2YCnZsQVsWJRRxDQPbW9TsWpv8GSKbg2uQ +sY+uUwHUxB6uqfwMFW1b7i1yfY+vuiXIw/X0DzLSbGqXvfAj0q3Xce5DiMNttuQM +JtSrX2p3hdBe9L+xmRuB+2WZHgidPDOh40ICdPCmQnBeVMXWfiMaXZjrGkd7+2TE +2dVIFk4SF3fI13b26wgyPEKh/EkodOtaMsd80b64NzogHB3Ouz1t30nvLdtQq5r7 +j4hh38Pmw2l53WbGXuk40EF6EuLlkRnXyUsftew1b/2CdzQzfW8lvUwyEqHhTJgk +I+JVfONgj2z2f/yVvDnMdfTTvSsflWCXzoWjx4MCuKHbxPQK60KIZk9nkTVLO9cL +nqZFUgvYzuwkll1JsdaH5HE5WF/p/36EnZT3ngToVGlheQLjZCg= +=03dy +-----END PGP SIGNATURE----- diff --git a/thunderbird-locale-build.patch b/thunderbird-locale-build.patch new file mode 100644 index 0000000..b1953bc --- /dev/null +++ b/thunderbird-locale-build.patch @@ -0,0 +1,12 @@ +diff --git a/comm/mail/locales/l10n.ini b/comm/mail/locales/l10n.ini +index eac6bfa..8700472 100644 +--- a/comm/mail/locales/l10n.ini ++++ b/comm/mail/locales/l10n.ini +@@ -13,5 +13,5 @@ dirs = mail + # include toolkit from mozilla. + # Don't specify which, use l10n-central.ini and friends if you're + # not working on a local check-out +-toolkit = mozilla/toolkit/locales/l10n.ini +-devtools_client = mozilla/devtools/client/locales/l10n.ini ++toolkit = ../toolkit/locales/l10n.ini ++devtools_client = ../devtools/client/locales/l10n.ini