commit MozillaFirefox.15703 for openSUSE:Leap:15.2:Update
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package MozillaFirefox.15703 for openSUSE:Leap:15.2:Update checked in at 2021-02-01 19:15:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2:Update/MozillaFirefox.15703 (Old) and /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.15703.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "MozillaFirefox.15703" Mon Feb 1 19:15:03 2021 rev:1 rq:867981 version:78.7.0 Changes: -------- New Changes file: --- /dev/null 2021-01-11 18:20:20.070723563 +0100 +++ /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.15703.new.28504/MozillaFirefox.changes 2021-02-01 19:15:04.375743533 +0100 @@ -0,0 +1,6969 @@ +------------------------------------------------------------------- +Tue Jan 26 14:43:01 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 78.7.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2021-04 (bsc#1181414) + * CVE-2021-23953 (bmo#1683940) + Cross-origin information leakage via redirected PDF requests + * CVE-2021-23954 (bmo#1684020) + Type confusion when using logical assignment operators in + JavaScript switch statements + * CVE-2020-26976 (bmo#1674343) + HTTPS pages could have been intercepted by a registered + service worker when they should not have been + * CVE-2021-23960 (bmo#1675755) + Use-after-poison for incorrectly redeclared JavaScript + variables during GC + * CVE-2021-23964 (bmo#1662507, bmo#1666285, bmo#1673526, + bmo#1674278, bmo#1674835, bmo#1675097, bmo#1675844, + bmo#1675868, bmo#1677590, bmo#1677888, bmo#1680410, + bmo#1681268, bmo#1682068, bmo#1682938, bmo#1683736, + bmo#1685260, bmo#1685925) + Memory safety bugs fixed in Firefox 85 and Firefox ESR 78.7 + +------------------------------------------------------------------- +Thu Jan 7 06:45:39 UTC 2021 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 78.6.1 ESR + * Fixed: Security fix + * Fixed: Fixed a crash during video playback on Apple Silicon + devices (bmo#1683579) + MFSA 2021-01 (bsc#1180623) + * CVE-2020-16044 (bmo#1683964) + Use-after-free write when handling a malicious COOKIE-ECHO + SCTP chunk + +------------------------------------------------------------------- +Tue Dec 15 13:41:58 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 78.6.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2020-55 (bsc#1180039) + * CVE-2020-16042 (bmo#1679003) + Operations on a BigInt could have caused uninitialized memory + to be exposed + * CVE-2020-26971 (bmo#1663466) + Heap buffer overflow in WebGL + * CVE-2020-26973 (bmo#1680084) + CSS Sanitizer performed incorrect sanitization + * CVE-2020-26974 (bmo#1681022) + Incorrect cast of StyleGenericFlexBasis resulted in a heap + use-after-free + * CVE-2020-26978 (bmo#1677047) + Internal network hosts could have been probed by a malicious + webpage + * CVE-2020-35111 (bmo#1657916) + The proxy.onRequest API did not catch view-source URLs + * CVE-2020-35112 (bmo#1661365) + Opening an extension-less download may have inadvertently + launched an executable instead + * CVE-2020-35113 (bmo#1664831, bmo#1673589) + Memory safety bugs fixed in Firefox 84 and Firefox ESR 78.6 + +------------------------------------------------------------------- +Tue Nov 17 14:10:17 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 78.5.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2020-51 (bsc#1178824) + * CVE-2020-26951 (bmo#1667113) + Parsing mismatches could confuse and bypass security + sanitizer for chrome privileged code + * CVE-2020-16012 (bmo#1642028) + Variable time processing of cross-origin images during + drawImage calls + * CVE-2020-26953 (bmo#1656741) + Fullscreen could be enabled without displaying the security + UI + * CVE-2020-26956 (bmo#1666300) + XSS through paste (manual and clipboard API) + * CVE-2020-26958 (bmo#1669355) + Requests intercepted through ServiceWorkers lacked MIME type + restrictions + * CVE-2020-26959 (bmo#1669466) + Use-after-free in WebRequestService + * CVE-2020-26960 (bmo#1670358) + Potential use-after-free in uses of nsTArray + * CVE-2020-15999 (bmo#1672223) + Heap buffer overflow in freetype + * CVE-2020-26961 (bmo#1672528) + DoH did not filter IPv4 mapped IP Addresses + * CVE-2020-26965 (bmo#1661617) + Software keyboards may have remembered typed passwords + * CVE-2020-26966 (bmo#1663571) + Single-word search queries were also broadcast to local + network + * CVE-2020-26968 (bmo#1551615, bmo#1607762, bmo#1656697, + bmo#1657739, bmo#1660236, bmo#1667912, bmo#1671479, + bmo#1671923) + Memory safety bugs fixed in Firefox 83 and Firefox ESR 78.5 + +------------------------------------------------------------------- +Mon Nov 9 17:14:52 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 78.4.1 ESR + * Fixed: Security fix + MFSA 2020-49 (bsc#1178588) + * CVE-2020-26950 (bmo#1675905) + Write side effects in MCallGetProperty opcode not accounted + for + +------------------------------------------------------------------- +Tue Oct 20 15:45:22 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 78.4.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2020-46 (bsc#1177872) + * CVE-2020-15969 (bmo#1666570, bmo#https://github.com/sctplab/u + srsctp/commit/ffed0925f27d404173c1e3e750d818f432d2c019) + Use-after-free in usersctp + * CVE-2020-15683 (bmo#1576843, bmo#1656987, bmo#1660954, + bmo#1662760, bmo#1663439, bmo#1666140) + Memory safety bugs fixed in Firefox 82 and Firefox ESR 78.4 + +------------------------------------------------------------------- +Thu Oct 1 17:37:54 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 78.3.1 ESR (bsc#1176756) + * Fixed: Fixed legacy preferences not being properly applied + when set via GPO (bmo#1666836) + +------------------------------------------------------------------- +Tue Sep 22 13:35:26 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Firefox Extended Support Release 78.3.0 ESR + * Fixed: Various stability, functionality, and security fixes + MFSA 2020-43 (bsc#1176756) + * CVE-2020-15677 (bmo#1641487) + Download origin spoofing via redirect + * CVE-2020-15676 (bmo#1646140) + XSS when pasting attacker-controlled data into a + contenteditable element + * CVE-2020-15678 (bmo#1660211) + When recursing through layers while scrolling, an iterator + may have become invalid, resulting in a potential use-after- + free scenario + * CVE-2020-15673 (bmo#1648493, bmo#1660800) + Memory safety bugs fixed in Firefox 81 and Firefox ESR 78.3 + +------------------------------------------------------------------- +Wed Sep 16 13:55:06 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Enhance fix for wayland-detection (bsc#1174420) + +------------------------------------------------------------------- +Wed Sep 16 10:47:33 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Try to fix langpack-parallelization by introducing separate + obj-dirs for each lang (boo#1173986, boo#1167976) + +------------------------------------------------------------------- +Tue Aug 25 17:09:36 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Firefox Extended Support Release 78.2.0 ESR + * Fixed: Various stability, functionality, and security fixes +- Mozilla Firefox ESR 78.2 + MFSA 2020-38 (bsc#1175686) + * CVE-2020-15663 (bmo#1643199) + Downgrade attack on the Mozilla Maintenance Service could + have resulted in escalation of privilege + * CVE-2020-15664 (bmo#1658214) + Attacker-induced prompt for extension installation + * CVE-2020-15670 (bmo#1651001, bmo#1651449, bmo#1653626, + bmo#1656957) + Memory safety bugs fixed in Firefox 80 and Firefox ESR 78.2 + +------------------------------------------------------------------- +Mon Aug 24 23:15:34 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Added patch: firefox-dev-random-sandbox.patch (bsc#1174284) + * Firefox tab crash in FIPS mode + +------------------------------------------------------------------- +Fri Aug 14 22:51:32 UTC 2020 - Charles Robertson <cgrobertson@suse.com> + +- Fix: Do not allow Firefox to use wayland on SLED15-SP0/1 + (bsc#1174420) + +------------------------------------------------------------------- +Wed Aug 5 11:49:05 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + +- Activate ccache +- Parallelize langpack build + +------------------------------------------------------------------- +Mon Aug 3 11:06:17 UTC 2020 - Martin Sirringhaus <martin.sirringhaus@suse.com> + ++++ 6772 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.2:Update/.MozillaFirefox.15703.new.28504/MozillaFirefox.changes New: ---- MozillaFirefox-rpmlintrc MozillaFirefox.changes MozillaFirefox.desktop MozillaFirefox.spec _constraints create-tar.sh firefox-78.7.0esr.source.tar.xz firefox-78.7.0esr.source.tar.xz.asc firefox-appdata.xml firefox-branded-icons.patch firefox-dev-random-sandbox.patch firefox-kde.patch firefox-mimeinfo.xml firefox.1 firefox.js google-api-key l10n-78.7.0esr.tar.xz mozilla-aarch64-startup-crash.patch mozilla-api-key mozilla-bmo1005535.patch mozilla-bmo1463035.patch mozilla-bmo1504834-part1.patch mozilla-bmo1504834-part2.patch mozilla-bmo1504834-part3.patch mozilla-bmo1504834-part4.patch mozilla-bmo1512162.patch mozilla-bmo1554971.patch mozilla-bmo1568145.patch mozilla-bmo1602730.patch mozilla-bmo1626236.patch mozilla-bmo849632.patch mozilla-bmo998749.patch mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch mozilla-fix-aarch64-libopus.patch mozilla-fix-top-level-asm.patch mozilla-get-app-id mozilla-kde.patch mozilla-nongnome-proxies.patch mozilla-ntlm-full-path.patch mozilla-pipewire-0-3.patch mozilla-ppc-altivec_static_inline.patch mozilla-reduce-rust-debuginfo.patch mozilla-s390-context.patch mozilla-s390x-skia-gradient.patch mozilla-sandbox-fips.patch mozilla.keyring mozilla.sh.in spellcheck.js tar_stamps ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ MozillaFirefox.spec ++++++ ++++ 819 lines (skipped) ++++++ MozillaFirefox-rpmlintrc ++++++ addFilter("no-jar-manifest") ++++++ MozillaFirefox.desktop ++++++ [Desktop Entry] Encoding=UTF-8 Name=%NAME GenericName=Web Browser Comment=Web Browser TryExec=%EXEC Exec=%EXEC %u Icon=%ICON Terminal=false StartupNotify=true MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; Type=Application Actions=PrivateBrowsing; [Desktop Action PrivateBrowsing] Name=New Private Browsing Window Exec=%EXEC --private-window %u ++++++ _constraints ++++++ <?xml version="1.0" encoding="UTF-8"?> <constraints> <hardware> <disk> <size unit="G">25</size> </disk> <memory> <size unit="G">14</size> </memory> </hardware> <overwrite> <conditions> <arch>armv6l</arch> <arch>armv7l</arch> </conditions> <hardware> <disk> <size unit="G">12</size> </disk> <memory> <size unit="G">5</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>aarch64</arch> </conditions> <hardware> <memory> <size unit="G">12</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>x86_64</arch> </conditions> <hardware> <memory> <size unit="G">16</size> </memory> </hardware> </overwrite> <overwrite> <conditions> <arch>ppc64le</arch> </conditions> <hardware> <memory> <size unit="G">12</size> </memory> </hardware> </overwrite> </constraints> ++++++ create-tar.sh ++++++ #!/bin/bash function print_usage_and_exit() { echo "Usage: create-tar.sh tar_stamps" echo "" echo "Where tar_stamps should look like this:" echo "" cat << EOF # Node ID: 64ee63facd4ff96b3e8590cff559d7e97ac6b061 PRODUCT="firefox" # "firefox" or "thunderbird" CHANNEL="esr60" VERSION="60.7.0" VERSION_SUFFIX="esr" RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded 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-generation EOF exit 1 } if [ $# -ne 1 ]; then print_usage_and_exit fi # Sourcing the given tar_stamps-file to have the variables available TAR_STAMP="$1" source "$TAR_STAMP" || 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" FTP_CANDIDATES_BASE_URL="https://ftp.mozilla.org/pub/$PRODUCT/candidates" # Make first letter of PRODCUT upper case PRODUCT_CAP="${PRODUCT^}" LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP" PRODUCT_URL="https://product-details.mozilla.org/1.0/$PRODUCT.json" # Exit script on CTRL+C trap "exit" INT function get_ftp_candidates_url() { VERSION_WITH_SUFFIX="$1" echo "$FTP_CANDIDATES_BASE_URL/$VERSION_WITH_SUFFIX-candidates" } 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 get_source_stamp() { BUILD_ID="$1" FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION$VERSION_SUFFIX) FTP_CANDIDATES_JSON_SUFFIX="${BUILD_ID}/linux-x86_64/en-US/$PRODUCT-$VERSION$VERSION_SUFFIX.json" BUILD_JSON=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/$FTP_CANDIDATES_JSON_SUFFIX") || return 1; REV=$(echo "$BUILD_JSON" | jq .moz_source_stamp) SOURCE_REPO=$(echo "$BUILD_JSON" | jq .moz_source_repo) TIMESTAMP=$(echo "$BUILD_JSON" | jq .buildid) echo "Extending $TAR_STAMP with:" echo "RELEASE_REPO=${SOURCE_REPO}" echo "RELEASE_TAG=${REV}" echo "RELEASE_TIMESTAMP=${TIMESTAMP}" # We "remove and add" instead of "replace" in case the entries are not there yet # Removing the old RELEASE_-tags sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP" # Appending the new echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP" echo "RELEASE_TAG=$REV" >> "$TAR_STAMP" echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP" } function get_build_number() { LAST_FOUND="" VERSION_WITH_SUFFIX="$1" BUILD_ID=$(curl --silent "$PRODUCT_URL" | jq -e '.["releases"] | .["'$PRODUCT-$VERSION_WITH_SUFFIX'"] | .["build_number"]') # Slow fall-back if [ $? -ne 0 ]; then echo "Build number not found in product URL, falling back to slow FTP-parsing." 1>&2 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION_WITH_SUFFIX) # Unfortunately, locales-files are not associated to releases, but to builds. # And since we don't know which build was the final build, we grep them all from # the candidates-page, sort them and take the last one which should be the oldest # Error only if not even the first one exists LAST_FOUND=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/" | grep -o "build[0-9]*/" | sort | uniq | tail -n 1 | cut -d "/" -f 1) else LAST_FOUND="build$BUILD_ID" fi if [ "$LAST_FOUND" != "" ]; then echo "$LAST_FOUND" return 0 else echo "Error: Could not find build-number for Firefox $VERSION_WITH_SUFFIX !" 1>&2 return 1 fi } function locales_get() { TMP_VERSION="$1" BUILD_ID="$2" URL_TO_CHECK="${LOCALES_URL}-${TMP_VERSION}" FINAL_URL="${URL_TO_CHECK}-${BUILD_ID}.json" if wget --quiet --spider "$FINAL_URL"; then echo "$FINAL_URL" 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() { BUILD_ID="$1" PREV_BUILD_ID=$(get_build_number "$PREV_VERSION$PREV_VERSION_SUFFIX") # 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" "$PREV_BUILD_ID") || return 1 curr_url=$(locales_get "$VERSION$VERSION_SUFFIX" "$BUILD_ID") || 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 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' pixz -h > /dev/null 2>&1 if (($? != 127)); then compression='-Ipixz' fi # Get ID BUILD_ID=$(get_build_number "$VERSION$VERSION_SUFFIX") if [ -z ${SKIP_LOCALES+x} ]; then if [ "$PREV_VERSION" != "" ] && locales_unchanged "$BUILD_ID"; 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... fi # including signature if [ ! -e $SOURCE_TARBALL.asc ]; then wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source... fi # we might have an upstream archive already and can skip the checkout 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 get_source_stamp "$BUILD_ID" 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 $PRODUCT-$VERSION ]; then pushd $PRODUCT-$VERSION || exit 1 _repourl=$(hg paths) case "$_repourl" in *$BRANCH*) echo "updating previous tree" hg pull popd || exit 1 ;; * ) echo "removing obsolete tree" popd || exit 1 rm -rf $PRODUCT-$VERSION ;; esac fi if [ ! -d $PRODUCT-$VERSION ]; then echo "cloning new $BRANCH..." hg clone http://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION if [ "$PRODUCT" = "thunderbird" ]; then hg clone http://hg.mozilla.org/releases/comm-$CHANNEL $PRODUCT-$VERSION/comm fi fi pushd $PRODUCT-$VERSION || exit 1 # parse out the Firefox-release tag for this Thunderbird-checkout if [ "$PRODUCT" = "thunderbird" ]; then FF_RELEASE_TAG=$(grep ^GECKO_HEAD_REV ./comm/.gecko_rev.yml | awk -F ' ' '{print $2}') || exit 1 echo "Parsed Firefox base ID from .gecko_rev.yml: $FF_RELEASE_TAG" else FF_RELEASE_TAG="$RELEASE_TAG" fi hg update --check $FF_RELEASE_TAG [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG # get repo and source stamp REV=$(hg -R . parent --template="{node|short}\n") SOURCE_REPO=$(hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/") TIMESTAMP=$(date +%Y%m%d%H%M%S) if [ "$PRODUCT" = "thunderbird" ]; then pushd comm || exit 1 hg update --check $RELEASE_TAG popd || exit 1 rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub fi popd || exit 1 echo "Extending $TAR_STAMP with:" echo "RELEASE_REPO=${SOURCE_REPO}" echo "RELEASE_TAG=${REV}" echo "RELEASE_TIMESTAMP=${TIMESTAMP}" # We "remove and add" instead of "replace" in case the entries are not there yet # Removing the old RELEASE_-tags sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP" # Appending the new echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP" echo "RELEASE_TAG=$REV" >> "$TAR_STAMP" echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP" echo "creating archive..." tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION fi 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 [ "$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 ++++++ firefox-appdata.xml ++++++ <?xml version="1.0" encoding="UTF-8"?> <!-- Upstream does not want to ship it https://bugzilla.mozilla.org/show_bug.cgi?id=1071061 so maintain a stub in here. --> <component> <id type="desktop">firefox.desktop</id> <metadata_license>CC0-1.0</metadata_license> <name>Firefox Web Browser</name> <project_license>MPL-2.0</project_license> <summary>Mozilla Firefox Web Browser</summary> <url type="homepage">http://www.mozilla.org/</url> <description> <p>Mozilla Firefox is a standalone web browser, designed for privacy, security, standards compliance and performance. Its functionality can be enhanced via a plethora of extensions.</p> <p>Firefox makes your daily web browsing fun and easy with a number of features, including:</p> <ul> <li>Tabbed browsing</li> <li>Private browsing including do-not-track enabled by default</li> <li>Advanced phishing and malware protection</li> <li>Spell checking</li> <li>Incremental find within pages</li> <li>Live bookmarking and Smart Bookmarks</li> <li>Download manager</li> <li>Location-aware browsing</li> <li>Compliant with modern web standards</li> <li>Modern web development tools</li> <li>Available in a wide number of locales</li> <li>A thriving ecosystem of themes and extensions at https://addons.mozilla.org</li> </ul> </description> <screenshots> <screenshot type="default"> <image height="800" width="1280">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-05-20-16-04-21-88bff4.png</image> <caption>New tab page with speed dials</caption> </screenshot> <screenshot> <image height="439" width="620">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-12-22-15-15-05-3c0a80.png</image> <caption>Search suggestions from home page</caption> </screenshot> <screenshot> <image height="394" width="700">https://addons.cdn.mozilla.net/user-media/previews/full/159/159648.png</image> <caption>Firefox with Adwaita theme</caption> </screenshot> </screenshots> <update_contact>mdn@lists.mozilla.org</update_contact> </component> ++++++ firefox-branded-icons.patch ++++++ # HG changeset patch # Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de # Parent 91064bb25b378c1fdcc2d99a89aeaf5e821b1689 diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild --- a/browser/branding/branding-common.mozbuild +++ b/browser/branding/branding-common.mozbuild @@ -22,12 +22,15 @@ def FirefoxBranding(): FINAL_TARGET_FILES.VisualElements += [ 'VisualElements_150.png', 'VisualElements_70.png', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': FINAL_TARGET_FILES.chrome.icons.default += [ 'default128.png', 'default16.png', + 'default22.png', + 'default24.png', + 'default256.png', 'default32.png', 'default48.png', 'default64.png', ] 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 @@ -249,20 +249,23 @@ @RESPATH@/browser/chrome/pdfjs.manifest @RESPATH@/browser/chrome/pdfjs/* @RESPATH@/chrome/toolkit@JAREXT@ @RESPATH@/chrome/toolkit.manifest @RESPATH@/chrome/recording.manifest @RESPATH@/chrome/recording/* #ifdef MOZ_GTK @RESPATH@/browser/chrome/icons/default/default16.png +@RESPATH@/browser/chrome/icons/default/default22.png +@RESPATH@/browser/chrome/icons/default/default24.png @RESPATH@/browser/chrome/icons/default/default32.png @RESPATH@/browser/chrome/icons/default/default48.png @RESPATH@/browser/chrome/icons/default/default64.png @RESPATH@/browser/chrome/icons/default/default128.png +@RESPATH@/browser/chrome/icons/default/default256.png #endif @RESPATH@/browser/features/* ; [DevTools Startup Files] @RESPATH@/browser/chrome/devtools-startup@JAREXT@ @RESPATH@/browser/chrome/devtools-startup.manifest ; DevTools ++++++ firefox-dev-random-sandbox.patch ++++++ # HG changeset patch # User Charles G Robertson <cgrobertson@suse.com> # Date 1598289968 21600 # Mon Aug 24 11:26:08 2020 -0600 # Node ID 597266eaae166d5fabb2a36a6d2fda6dbf7dc861 # Parent e23a3176498ec0e724033e000140204915e2375b [mq]: firefox-dev-random-sandbox.patch bsc#1174284 - Firefox tab just crashed in FIPS mode diff --git a/security/sandbox/linux/Sandbox.cpp b/security/sandbox/linux/Sandbox.cpp --- a/security/sandbox/linux/Sandbox.cpp +++ b/security/sandbox/linux/Sandbox.cpp @@ -647,16 +647,17 @@ void SetMediaPluginSandbox(const char* a SANDBOX_LOG_ERROR("failed to open plugin file %s: %s", aFilePath, strerror(errno)); MOZ_CRASH("failed while trying to open the plugin file "); } auto files = new SandboxOpenedFiles(); files->Add(std::move(plugin)); files->Add("/dev/urandom", true); + files->Add("/dev/random", true); files->Add("/etc/ld.so.cache"); // Needed for NSS in clearkey. files->Add("/sys/devices/system/cpu/cpu0/tsc_freq_khz"); files->Add("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); files->Add("/proc/cpuinfo"); // Info also available via CPUID instruction. files->Add("/proc/sys/crypto/fips_enabled"); // Needed for NSS in clearkey. #ifdef __i386__ files->Add("/proc/self/auxv"); // Info also in process's address space. #endif diff --git a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp --- a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp +++ b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp @@ -289,16 +289,17 @@ SandboxBrokerPolicyFactory::SandboxBroke // Bug 1312678: radeonsi/Intel with DRI when using WebGL policy->AddDir(rdwr, "/dev/dri"); // Bug 1575985: WASM library sandbox needs RW access to /dev/null policy->AddPath(rdwr, "/dev/null"); // Read permissions policy->AddPath(rdonly, "/dev/urandom"); + policy->AddPath(rdonly, "/dev/random"); policy->AddPath(rdonly, "/proc/sys/crypto/fips_enabled"); policy->AddPath(rdonly, "/proc/cpuinfo"); policy->AddPath(rdonly, "/proc/meminfo"); policy->AddDir(rdonly, "/sys/devices/cpu"); policy->AddDir(rdonly, "/sys/devices/system/cpu"); policy->AddDir(rdonly, "/lib"); policy->AddDir(rdonly, "/lib64"); policy->AddDir(rdonly, "/usr/lib"); ++++++ firefox-kde.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1559300151 -7200 # Fri May 31 12:55:51 2019 +0200 # Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec # Parent 419d9eee7a82119821b3fa31134cb66501027ba6 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/components/preferences/main.js b/browser/components/preferences/main.js --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js @@ -335,16 +335,23 @@ var gMainPane = { }, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]); }; window.setTimeout(() => { window.requestIdleCallback(pollForDefaultBrowser); }, backoffTimes[this._backoffIndex]); } + var env = Components.classes["@mozilla.org/process/environment;1"] + .getService(Components.interfaces.nsIEnvironment); + var kde_session = 0; + if (env.get('KDE_FULL_SESSION') == "true") { + kde_session = 1; + } + this.initBrowserContainers(); this.buildContentProcessCountMenuList(); let performanceSettingsLink = document.getElementById( "performanceSettingsLearnMore" ); let performanceSettingsUrl = Services.urlFormatter.formatURLPref("app.support.baseURL") + @@ -1300,16 +1307,27 @@ var gMainPane = { this._backoffIndex = 0; let shellSvc = getShellService(); if (!shellSvc) { return; } try { shellSvc.setDefaultBrowser(true, false); + if (kde_session == 1) { + var shellObj = Components.classes["@mozilla.org/file/local;1"] + .createInstance(Components.interfaces.nsILocalFile); + shellObj.initWithPath("/usr/bin/kwriteconfig"); + var process = Components.classes["@mozilla.org/process/util;1"] + .createInstance(Components.interfaces.nsIProcess); + process.init(shellObj); + var args = ["--file", "kdeglobals", "--group", "General", "--key", + "BrowserApplication", "firefox"]; + process.run(false, args, args.length); + } } 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 @@ -34,16 +34,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk': XPIDL_SOURCES += [ 'nsIGNOMEShellService.idl', ] SOURCES += [ 'nsGNOMEShellService.cpp', + 'nsKDEShellService.cpp', + 'nsUnixShellService.cpp', ] if CONFIG['MOZ_ENABLE_DBUS']: SOURCES += [ 'nsGNOMEShellDBusHelper.cpp', 'nsGNOMEShellSearchProvider.cpp', ] include('/ipc/chromium/chromium-config.mozbuild') 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 @@ -0,0 +1,103 @@ +/* -*- 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 + * 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/. */ + +#include "mozilla/ArrayUtils.h" + +#include "nsCOMPtr.h" +#include "nsKDEShellService.h" +#include "nsShellService.h" +#include "nsKDEUtils.h" +#include "nsIPrefService.h" +#include "nsIProcess.h" +#include "nsIFile.h" +#include "nsServiceManagerUtils.h" +#include "nsComponentManagerUtils.h" +#include "nsIMutableArray.h" +#include "nsISupportsPrimitives.h" +#include "nsArrayUtils.h" + +using namespace mozilla; + +nsresult +nsKDEShellService::Init() +{ + if( !nsKDEUtils::kdeSupport()) + return NS_ERROR_NOT_AVAILABLE; + return NS_OK; +} + +NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService) + +NS_IMETHODIMP +nsKDEShellService::IsDefaultBrowser(bool aForAllTypes, + bool* aIsDefaultBrowser) +{ + *aIsDefaultBrowser = false; + + nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID ); + if (!command) + return NS_ERROR_FAILURE; + + nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + if (!str) + return NS_ERROR_FAILURE; + + str->SetData( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" )); + command->AppendElement( str ); + + if( nsKDEUtils::command( command )) + *aIsDefaultBrowser = true; + return NS_OK; +} + +NS_IMETHODIMP +nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes, + bool aForAllUsers) +{ + nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID ); + if (!command) + return NS_ERROR_FAILURE; + + nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID ); + if (!cmdstr || !paramstr) + return NS_ERROR_FAILURE; + + cmdstr->SetData( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" )); + command->AppendElement( cmdstr ); + + paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" )); + command->AppendElement( paramstr ); + + return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsKDEShellService::GetCanSetDesktopBackground(bool* aResult) +{ + *aResult = true; + return NS_OK; +} + +NS_IMETHODIMP +nsKDEShellService::SetDesktopBackground(dom::Element* aElement, + int32_t aPosition, + const nsACString& aImageName) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + 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 @@ -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 + * 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 nskdeshellservice_h____ +#define nskdeshellservice_h____ + +#include "nsIGNOMEShellService.h" +#include "nsToolkitShellService.h" +#include "nsString.h" +#include "mozilla/Attributes.h" + +class nsKDEShellService final : public nsIGNOMEShellService, + public nsToolkitShellService +{ +public: + nsKDEShellService() : mCheckedThisSession(false) { } + + NS_DECL_ISUPPORTS + NS_DECL_NSISHELLSERVICE + NS_DECL_NSIGNOMESHELLSERVICE + + nsresult Init(); + +private: + ~nsKDEShellService() {} + + bool mCheckedThisSession; +}; + +#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 @@ -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 + * 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/. */ + + +#include "nsUnixShellService.h" +#include "nsGNOMEShellService.h" +#include "nsKDEShellService.h" +#include "nsKDEUtils.h" +#include "mozilla/ModuleUtils.h" + +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init) + +NS_IMETHODIMP +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult) +{ + if( nsKDEUtils::kdeSupport()) + 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 @@ -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 + * 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 nsunixshellservice_h____ +#define nsunixshellservice_h____ + +#include "nsIGNOMEShellService.h" + +NS_IMETHODIMP +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult); + +#endif // nsunixshellservice_h____ ++++++ firefox-mimeinfo.xml ++++++ <?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-xpinstall"> <comment xml:lang="en">Mozilla Cross-Platform Installer Module</comment> <glob pattern="*.xpi" /> </mime-type> </mime-info> ++++++ firefox.1 ++++++ .TH FIREFOX 1 "November 30, 2017" firefox "Linux User's Manual" .SH NAME firefox \- a Web browser for X11 derived from the Mozilla browser .SH SYNOPSIS .B firefox [\fIOPTIONS\fR ...] [\fIURL\fR] .B firefox-bin [\fIOPTIONS\fR] [\fIURL\fR] .SH DESCRIPTION \fBMozilla Firefox\fR is an open-source web browser, designed for standards compliance, performance and portability. .SH USAGE \fBfirefox\fR is a simple shell script that will set up the environment for the actual executable, \fBfirefox-bin\fR. .SH OPTIONS A summary of the options supported by \fBfirefox\fR is included below. .SS "X11 options" .TP .BI \-\-display= DISPLAY X display to use .TP .B \--sync Make X calls synchronous .TP .B \-\-g-fatal-warnings Make all warnings fatal .SS "Firefox options" .TP .B \-h, \-help Show summary of options. .TP .B \-v, \-version Print Firefox version. .TP \fB\-P\fR \fIprofile\fR Start with \fIprofile\fR. .TP \fB\-\-profile\fR \fIpath\fR Start with profile at \fIpath\fR. .TP \fB\-\-migration\fR Start with migration wizard. .TP .B \-\-ProfileManager Start with ProfileManager. .TP \fB\-\-no\-remote\fR Do not accept or send remote commands; implies \fB--new-instance\fR. .TP \fB\-\-new\-instance\fR Open new instance, not a new window in running instance. .TP \fB\-\-UILocale\fR \fIlocale\fR Start with \fIlocale\fR resources as UI Locale. .TP \fB\-\-save\-mode\fR Disables extensions and themes for this session. .TP \fB\-\-headless\fR Run without a GUI. .TP \fB\-\-marionette\fR Enable remote control server. .TP \fB\-\-browser\fR Open a browser window. .TP \fB\-\-new-window\fR \fIurl\fR Open \fIurl\fR in a new window. .TP \fB\-\-new-tab\fR \fIurl\fR Open \fIurl\fR in a new tab. .TP \fB\-\-private-window\fR \fIurl\fR Open \fIurl\fR in a new private window. .TP \fB\-\-preferences\fR Open Preferences dialog. .TP \fB\-\-screenshot\fR [\fIpath\fR] Save screenshot to \fIpath\fR or in working directory. .TP \fB\-\-window-size\fR \fIwidth\fR[,\fIheight\fR] Width and optionally height of screenshot. .TP \fB\-\-search\fR \fIterm\fR Search \fIterm\fR with your default search engine. .TP \fB\-\-jsconsole\fR Open the Browser Console. .TP \fB\-\-jsdebugger\fR Open the Browser Toolbox. .TP \fB\-\-wait-for-jsdebugger\fR Spin event loop until JS debugger connects. Enables debugging (some) application startup code paths. Only has an effect when \fI--jsdebugger\fR is also supplied. .TP \fB\-\-devtools\fR Open DevTools on initial load. .TP \fB\-\-start-debugger-server\fR [ws:][\fIport\fR|\fIpath\fR] Start the debugger server on a TCP port or Unix domain socket path. Defaults to TCP port 6000. Use WebSocket protocol if ws: prefix is specified. .TP \fB\-\-recording\fR \fIfile\fR Record drawing for a given URL. .TP \fB\-\-recording-output\fR \fIfile\fR Specify destination file for a drawing recording. .TP \fB\-\-setDefaultBrowser\fR Set this app as the default browser. .SH FILES \fI/usr/bin/firefox\fR - shell script wrapping \fBfirefox\fR .br \fI/usr/lib64/firefox/firefox-bin\fR - \fBfirefox\fR executable .SH VERSION 57.0 .SH BUGS To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR .SH AUTHORS .TP .B The Mozilla Organization .I http://www.mozilla.org/about.html .TP .B Tobias Girstmair .I https://gir.st/ ++++++ firefox.js ++++++ pref("intl.locale.requested", ""); pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); /* Disable DoH by default */ pref("network.trr.mode", 5); // do not disable any scope pref("extensions.autoDisableScopes", 0); pref("extensions.shownSelectionUI", true); pref("extensions.langpacks.signatures.required", false); ++++++ google-api-key ++++++ AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q ++++++ mozilla-aarch64-startup-crash.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1558442998 -7200 # Tue May 21 14:49:58 2019 +0200 # Node ID 386083b58d8558141901d796ec6919a4aba7ad3a # Parent e073359d18bfdf41aa2f860f0e62cb14e99674e7 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 @@ -1090,17 +1090,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; } } +#if defined(__aarch64__) + if (result) { + channel.forget(result); + } +#else channel.forget(result); +#endif return NS_OK; } NS_IMETHODIMP nsIOService::NewChannelFromURIWithProxyFlags( nsIURI* aURI, nsIURI* aProxyURI, uint32_t aProxyFlags, nsINode* aLoadingNode, nsIPrincipal* aLoadingPrincipal, nsIPrincipal* aTriggeringPrincipal, uint32_t aSecurityFlags, ++++++ mozilla-api-key ++++++ 4605624048be48fda932495844d16fbb ++++++ mozilla-bmo1005535.patch ++++++ # HG changeset patch # User Steve Singer <steve@ssinger.info> # Date 1558451540 -7200 # Tue May 21 17:12:20 2019 +0200 # Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad # Parent 0b9b94a6526d4f1aa6e23b95c1f5f7c0bef841a7 Bug 1005535 - Get skia GPU building on big endian. diff -r 0b9b94a6526d gfx/skia/skia/src/gpu/GrColor.h --- a/gfx/skia/skia/src/gpu/GrColor.h Tue May 21 17:26:58 2019 +0200 +++ b/gfx/skia/skia/src/gpu/GrColor.h Wed Jan 08 12:14:52 2020 +0100 @@ -64,7 +64,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) { ++++++ mozilla-bmo1463035.patch ++++++ # HG changeset patch # User Mike Hommey <mh+mozilla@glandium.org> # Date 1526871862 -32400 # Mon May 21 12:04:22 2018 +0900 # Node ID 74a0c200d7f748a3fe46bb22a38625b074da8e26 # Parent 13745a5781a024dea46103c295a733e506a236b3 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/mozglue/baseprofiler/core/platform-linux-android.cpp b/mozglue/baseprofiler/core/platform-linux-android.cpp --- a/mozglue/baseprofiler/core/platform-linux-android.cpp +++ b/mozglue/baseprofiler/core/platform-linux-android.cpp @@ -58,17 +58,16 @@ #ifdef __GLIBC__ # include <execinfo.h> // backtrace, backtrace_symbols #endif // def __GLIBC__ #include <strings.h> // index #include <errno.h> #include <stdarg.h> #include "prenv.h" -#include "mozilla/LinuxSignal.h" #include "mozilla/PodOperations.h" #include "mozilla/DebugOnly.h" #include <string.h> #include <list> using namespace mozilla; @@ -289,17 +288,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/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 @@ -283,17 +283,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) { ++++++ mozilla-bmo1504834-part1.patch ++++++ # HG changeset patch # Parent bfc992a793417e64e09c77b8b80771bf78be064c Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co Rect sampledBounds = inverse.TransformBounds(*aBounds); if (!sampledBounds.ToIntRect(&bounds)) { return surfaceBounds; } return surfaceBounds.Intersect(bounds); } -static const int kARGBAlphaOffset = - SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; +static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, const int32_t aStride, SurfaceFormat aFormat) { if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) { return true; } // We should've initialized the data to be opaque already // On debug builds, verify that this is actually true. diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h @@ -85,25 +85,18 @@ enum class SurfaceFormat : int8_t { Depth, // This represents the unknown format. UNKNOWN, // The following values are endian-independent synonyms. The _UINT32 suffix // indicates that the name reflects the layout when viewed as a uint32_t // value. -#if MOZ_LITTLE_ENDIAN() A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB -#elif MOZ_BIG_ENDIAN() - A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB - X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB -#else -# error "bad endianness" -#endif // The following values are OS and endian-independent synonyms. // // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms. OS_RGBA = A8R8G8B8_UINT32, OS_RGBX = X8R8G8B8_UINT32 }; diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc --- a/gfx/skia/skia/third_party/skcms/skcms.cc +++ b/gfx/skia/skia/third_party/skcms/skcms.cc @@ -25,16 +25,18 @@ // it'd be a lot slower. But we want all those headers included so we // can use their features after runtime checks later. #include <smmintrin.h> #include <avxintrin.h> #include <avx2intrin.h> #include <avx512fintrin.h> #include <avx512dqintrin.h> #endif +#else + #define SKCMS_PORTABLE #endif // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. // // Please do not use sizeof() directly, and size_t only when required. // (We have no way of enforcing these requests...) #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) @@ -275,30 +277,38 @@ enum { skcms_Signature_sf32 = 0x73663332, // XYZ is also a PCS signature, so it's defined in skcms.h // skcms_Signature_XYZ = 0x58595A20, }; static uint16_t read_big_u16(const uint8_t* ptr) { uint16_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + return be; +#else + #if defined(_MSC_VER) return _byteswap_ushort(be); -#else + #else return __builtin_bswap16(be); + #endif #endif } static uint32_t read_big_u32(const uint8_t* ptr) { uint32_t be; memcpy(&be, ptr, sizeof(be)); -#if defined(_MSC_VER) +#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ + return be; +#else + #if defined(_MSC_VER) return _byteswap_ulong(be); -#else + #else return __builtin_bswap32(be); + #endif #endif } static int32_t read_big_i32(const uint8_t* ptr) { return (int32_t)read_big_u32(ptr); } static float read_big_fixed(const uint8_t* ptr) { ++++++ mozilla-bmo1504834-part2.patch ++++++ # HG changeset patch # Parent b6e9843f9ad4ddce1cc8a0d83e21dc272fa3c3d3 Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla) has no interest in maintaining big endian. So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes out again, we transform back to BE. diff --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp --- a/gfx/2d/ConvolutionFilter.cpp +++ b/gfx/2d/ConvolutionFilter.cpp @@ -29,32 +29,79 @@ bool ConvolutionFilter::GetFilterOffsetA int32_t* aResultLength) { if (aRowIndex >= mFilter->numValues()) { return false; } mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength); return true; } +static void ByteSwapArray(uint8_t *u8Array, int32_t size) { + uint32_t *array = reinterpret_cast<uint32_t*>(u8Array); + for (int pxl = 0; pxl < size; ++pxl) { + // Use an endian swap to move the bytes, i.e. BGRA -> ARGB. + uint32_t rgba = array[pxl]; + array[pxl] = NativeEndian::swapToLittleEndian(rgba); + } +} + void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst, bool aHasAlpha) { +#if MOZ_BIG_ENDIAN() + int outputSize = mFilter->numValues(); + + // Input size isn't handed in, so we have to calculate it quickly + int inputSize = 0; + for (int xx = 0; xx < outputSize; ++xx) { + // Get the filter that determines the current output pixel. + int filterOffset, filterLength; + mFilter->FilterForValue(xx, &filterOffset, &filterLength); + inputSize = std::max(inputSize, filterOffset + filterLength); + } + + ByteSwapArray((uint8_t*)aSrc, inputSize); +#endif + SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha); + +#if MOZ_BIG_ENDIAN() + ByteSwapArray((uint8_t*)aSrc, inputSize); + ByteSwapArray(aDst, outputSize); +#endif } void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst, int32_t aRowIndex, int32_t aRowSize, bool aHasAlpha) { MOZ_ASSERT(aRowIndex < mFilter->numValues()); int32_t filterOffset; int32_t filterLength; auto filterValues = mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); + +#if MOZ_BIG_ENDIAN() + for (int filterY = 0; filterY < filterLength; filterY++) { + // Skia only knows LE, so we have to swizzle the input + ByteSwapArray(aSrc[filterY], aRowSize); + } +#endif + SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst, aHasAlpha); + +#if MOZ_BIG_ENDIAN() + // After skia is finished, we swizzle back to BE, in case + // the input is used again somewhere else + for (int filterY = 0; filterY < filterLength; filterY++) { + ByteSwapArray(aSrc[filterY], aRowSize); + } + // The destination array as well + ByteSwapArray(aDst, aRowSize); +#endif } /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's * SkBitmapScaler/SkResizeFilter::computeFactors. It is governed by Skia's * BSD-style license (see gfx/skia/LICENSE) and the following copyright: * Copyright (c) 2015 Google Inc. */ bool ConvolutionFilter::ComputeResizeFilter(ResizeMethod aResizeMethod, diff --git a/gfx/skia/skia/include/core/SkPreConfig.h b/gfx/skia/skia/include/core/SkPreConfig.h --- a/gfx/skia/skia/include/core/SkPreConfig.h +++ b/gfx/skia/skia/include/core/SkPreConfig.h @@ -68,17 +68,17 @@ #define SK_CPU_BENDIAN #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) #define SK_CPU_LENDIAN #elif defined(__sparc) || defined(__sparc__) || \ defined(_POWER) || defined(__powerpc__) || \ defined(__ppc__) || defined(__hppa) || \ defined(__PPC__) || defined(__PPC64__) || \ defined(_MIPSEB) || defined(__ARMEB__) || \ - defined(__s390__) || \ + defined(__s390__) || defined(__s390x__) || \ (defined(__sh__) && defined(__BIG_ENDIAN__)) || \ (defined(__ia64) && defined(__BIG_ENDIAN__)) #define SK_CPU_BENDIAN #else #define SK_CPU_LENDIAN #endif #endif ++++++ mozilla-bmo1504834-part3.patch ++++++ # HG changeset patch # Parent aecb4600e5da17443b224c79eee178c1d8e155e3 For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h --- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200 +++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200 @@ -238,7 +238,18 @@ AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } + // On Big endian the commented out variant doesn't work, + // and honestly, I have no idea why it exists in the first place. + // The reason its broken is, I think, that it defaults to the double-variant of ToBits() + // which gets a 64-bit integer, and FromBits returns 32-bit, + // cutting off the wrong half again. + // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles). + // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system) +#ifdef SK_CPU_BENDIAN + AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } +#else AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } +#endif AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h --- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200 +++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200 @@ -203,7 +203,13 @@ // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) + + // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 +#ifdef SK_CPU_BENDIAN + return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) +#else return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) +#endif + d.approxMulDiv255(aa.inv()); }; while (h --> 0) { ++++++ mozilla-bmo1504834-part4.patch ++++++ # HG changeset patch # Parent 95bcf60bb4e85bb4fbb34cffa86c71d72b5e5f9b Problem description: Tab-titles that are too long to fit into a tab get faded out. On big endian this is broken and instead of fading out, the tab gets white and the font transparent, leading to an unreadable tab-title Solution: This is not a real solution, but a hack. The real solution would have been to byte-swap the correct buffer, but I could not find it. So the next best thing is to deactivate the fading-effect. Now all tab-titles are readable, albeit not as pretty to look at as they could be. Side-effects: I have not yet found an unwanted side-effect. diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -1895,16 +1895,24 @@ void DrawTargetSkia::PushLayerWithBlend( } SkCanvas::SaveLayerRec saveRec( aBounds.IsEmpty() ? nullptr : &bounds, &paint, nullptr, clipImage.get(), &clipMatrix, SkCanvas::kPreserveLCDText_SaveLayerFlag | (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); +#if MOZ_BIG_ENDIAN() + // Pushing a layer where an aMask is defined produces wrong output. + // We _should_ endian swap the data, but I couldn't find a workable way to do so + // Therefore I deactivate those layers in the meantime. + // The result is: Tab-titles that are longer than the available space should be faded out. + // The fading doesn't work, so we deactivate the fading-effect here. + if (!aMask) +#endif mCanvas->saveLayer(saveRec); SetPermitSubpixelAA(aOpaque); #ifdef MOZ_WIDGET_COCOA CGContextRelease(mCG); mCG = nullptr; #endif ++++++ mozilla-bmo1512162.patch ++++++ # HG changeset patch # Parent 6919b968084406279a7d78690c242497c3f1b59e This fixes a broken build for gcc < 9 on ppc64le. This patch can be removed for newer gcc-versions. diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp --- a/js/xpconnect/src/XPCWrappedNative.cpp +++ b/js/xpconnect/src/XPCWrappedNative.cpp @@ -1070,17 +1070,21 @@ class MOZ_STACK_CLASS CallMethodHelper f uint32_t* result); MOZ_ALWAYS_INLINE bool GetInterfaceTypeFromParam(const nsXPTType& type, nsID* result) const; MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, MutableHandleValue srcp) const; - MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); +#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) +// Work around a compiler bug on ppc64le (bug 1512162). + MOZ_ALWAYS_INLINE +#endif + bool GatherAndConvertResults(); MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); nsXPTCVariant* GetDispatchParam(uint8_t paramIndex) { if (paramIndex >= mJSContextIndex) { paramIndex += 1; } if (paramIndex >= mOptArgcIndex) { @@ -1117,17 +1121,21 @@ class MOZ_STACK_CLASS CallMethodHelper f { // Success checked later. mIFaceInfo->GetMethodInfo(mVTableIndex, &mMethodInfo); } ~CallMethodHelper(); - MOZ_ALWAYS_INLINE bool Call(); +#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) +// Work around a compiler bug on ppc64le (bug 1512162). + MOZ_ALWAYS_INLINE +#endif + bool Call(); // Trace implementation so we can put our CallMethodHelper in a Rooted<T>. void trace(JSTracer* aTrc); }; // static bool XPCWrappedNative::CallMethod(XPCCallContext& ccx, CallMode mode /*= CALL_METHOD */) { ++++++ mozilla-bmo1554971.patch ++++++ # HG changeset patch # Parent a25cebecb02d5460b8ad757fe9cb4a9c8d1d7658 Eliminate startup error message: JavaScript error: , line 0: Error: Type error for platformInfo value (Error processing arch: Invalid enumeration value "s390x") for runtime.getPlatformInfo. Reported here: https://bugzilla.mozilla.org/show_bug.cgi?id=1554971 Uncertain if this is causing real problems or not. Also uncertain if the fix actually fixes anything. No response from upstream yet. diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runtime.json --- a/toolkit/components/extensions/schemas/runtime.json Fri Jul 05 12:42:44 2019 +0200 +++ b/toolkit/components/extensions/schemas/runtime.json Fri Jul 19 13:19:30 2019 +0200 @@ -64,7 +64,7 @@ { "id": "PlatformArch", "type": "string", - "enum": ["arm", "x86-32", "x86-64"], + "enum": ["arm", "x86-32", "x86-64", "s390x", "aarch64", "ppc64le"], "allowedContexts": ["content", "devtools"], "description": "The machine's processor architecture." }, ++++++ mozilla-bmo1568145.patch ++++++ Author: Bernhard M. Wiedemann <bwiedemann suse de> Date: 2019-07-22 Allow to override build date with SOURCE_DATE_EPOCH in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good and https://reproducible-builds.org/specs/source-date-epoch/ for the definition of this variable. diff --git a/python/mozbuild/mozbuild/action/langpack_manifest.py b/python/mozbuild/mozbuild/action/langpack_manifest.py --- a/python/mozbuild/mozbuild/action/langpack_manifest.py +++ b/python/mozbuild/mozbuild/action/langpack_manifest.py @@ -11,16 +11,17 @@ from __future__ import absolute_import, print_function, unicode_literals import argparse import sys import os import json import io import datetime +import time import requests import mozversioncontrol import mozpack.path as mozpath from mozpack.chrome.manifest import ( Manifest, ManifestLocale, parse_manifest, ) @@ -94,17 +95,17 @@ def get_dt_from_hg(path): # ts == "20170914215617" ### def get_timestamp_for_locale(path): dt = None if os.path.isdir(os.path.join(path, '.hg')): dt = get_dt_from_hg(path) if dt is None: - dt = datetime.datetime.utcnow() + dt = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))) dt = dt.replace(microsecond=0) return dt.strftime("%Y%m%d%H%M%S") ### # Parses multiple defines files into a single key-value pair object. # ++++++ mozilla-bmo1602730.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1582805890 -3600 # Thu Feb 27 13:18:10 2020 +0100 # Node ID 457cbe5705f2a3759d3da36a05c0ed66ec61ea12 # Parent 7440f4b6bab85068ca2f84e9c48e0706d04330e8 imported patch mozilla-bmo1602730-FF73.patch diff -r 7440f4b6bab8 gfx/layers/composite/CompositableHost.cpp --- a/gfx/layers/composite/CompositableHost.cpp Thu Feb 27 13:17:56 2020 +0100 +++ b/gfx/layers/composite/CompositableHost.cpp Wed Jun 17 15:33:32 2020 +0200 @@ -92,9 +92,13 @@ } MOZ_ASSERT(source); + // Setting an alpha-mask here breaks the URL-bar on big endian (s390x) + // if the typed URL is too long for the textbox (automatic scrolling needed) +#if MOZ_LITTLE_ENDIAN() RefPtr<EffectMask> effect = new EffectMask(source, source->GetSize(), aTransform); aEffects.mSecondaryEffects[EffectTypes::MASK] = effect; +#endif return true; } ++++++ mozilla-bmo1626236.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1582805876 -3600 # Thu Feb 27 13:17:56 2020 +0100 # Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158 # Parent cbb93a02d4a3d183c8def6f12737b456a14a3951 imported patch decoder_workaround.patch diff --git a/image/decoders/nsGIFDecoder2.cpp b/image/decoders/nsGIFDecoder2.cpp --- a/image/decoders/nsGIFDecoder2.cpp +++ b/image/decoders/nsGIFDecoder2.cpp @@ -416,16 +416,19 @@ void nsGIFDecoder2::ConvertColormap(uint qcms_transform_data(transform, aColormap, aColormap, aColors); } } // Expand color table from RGB to BGRA. MOZ_ASSERT(mSwizzleFn); uint8_t* data = reinterpret_cast<uint8_t*>(aColormap); mSwizzleFn(data, data, aColors); +#if MOZ_BIG_ENDIAN() + SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors); +#endif } LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator, IResumable* aOnResume) { MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!"); return mLexer.Lex( aIterator, aOnResume, diff --git a/image/decoders/nsJPEGDecoder.cpp b/image/decoders/nsJPEGDecoder.cpp --- a/image/decoders/nsJPEGDecoder.cpp +++ b/image/decoders/nsJPEGDecoder.cpp @@ -251,30 +251,34 @@ LexerTransition<nsJPEGDecoder::State> ns // We're doing a full decode. switch (mInfo.jpeg_color_space) { case JCS_GRAYSCALE: case JCS_RGB: case JCS_YCbCr: // By default, we will output directly to BGRA. If we need to apply // special color transforms, this may change. +#if MOZ_BIG_ENDIAN() + mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; +#else switch (SurfaceFormat::OS_RGBX) { case SurfaceFormat::B8G8R8X8: mInfo.out_color_space = JCS_EXT_BGRX; break; case SurfaceFormat::X8R8G8B8: mInfo.out_color_space = JCS_EXT_XRGB; break; case SurfaceFormat::R8G8B8X8: mInfo.out_color_space = JCS_EXT_RGBX; break; default: mState = JPEG_ERROR; return Transition::TerminateFailure(); } +#endif break; case JCS_CMYK: case JCS_YCCK: // libjpeg can convert from YCCK to CMYK, but not to XRGB. mInfo.out_color_space = JCS_CMYK; break; default: mState = JPEG_ERROR; diff --git a/image/decoders/nsPNGDecoder.cpp b/image/decoders/nsPNGDecoder.cpp --- a/image/decoders/nsPNGDecoder.cpp +++ b/image/decoders/nsPNGDecoder.cpp @@ -351,26 +351,34 @@ nsresult nsPNGDecoder::InitInternal() { return NS_OK; } LexerResult nsPNGDecoder::DoDecode(SourceBufferIterator& aIterator, IResumable* aOnResume) { MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!"); - return mLexer.Lex(aIterator, aOnResume, + LexerResult res = mLexer.Lex(aIterator, aOnResume, [=](State aState, const char* aData, size_t aLength) { switch (aState) { case State::PNG_DATA: return ReadPNGData(aData, aLength); case State::FINISHED_PNG_DATA: return FinishedPNGData(); } MOZ_CRASH("Unknown State"); }); + +#if MOZ_BIG_ENDIAN() + if(res.is<TerminalState>() && res.as<TerminalState>() == TerminalState::SUCCESS) { + NativeEndian::swapToLittleEndianInPlace<uint32_t>((uint32_t*)(mImageData), mImageDataLength / 4); + } +#endif + + return res; } LexerTransition<nsPNGDecoder::State> nsPNGDecoder::ReadPNGData( const char* aData, size_t aLength) { // If we were waiting until after returning from a yield to call // CreateFrame(), call it now. if (mNextFrameInfo) { if (NS_FAILED(CreateFrame(*mNextFrameInfo))) { diff --git a/image/decoders/nsWebPDecoder.cpp b/image/decoders/nsWebPDecoder.cpp --- a/image/decoders/nsWebPDecoder.cpp +++ b/image/decoders/nsWebPDecoder.cpp @@ -240,17 +240,22 @@ nsresult nsWebPDecoder::CreateFrame(cons ("[this=%p] nsWebPDecoder::CreateFrame -- create decoder error\n", this)); return NS_ERROR_FAILURE; } // WebP doesn't guarantee that the alpha generated matches the hint in the // header, so we always need to claim the input is BGRA. If the output is // BGRX, swizzling will mask off the alpha channel. +#if MOZ_BIG_ENDIAN() + mBuffer.colorspace = MODE_ARGB; + SurfaceFormat inFormat = mFormat; +#else SurfaceFormat inFormat = SurfaceFormat::OS_RGBA; +#endif SurfacePipeFlags pipeFlags = SurfacePipeFlags(); if (mFormat == SurfaceFormat::OS_RGBA && !(GetSurfaceFlags() & SurfaceFlags::NO_PREMULTIPLY_ALPHA)) { pipeFlags |= SurfacePipeFlags::PREMULTIPLY_ALPHA; } Maybe<AnimationParams> animParams; ++++++ mozilla-bmo849632.patch ++++++ # HG changeset patch # Parent 03158f2a8298fcc53f78ad3cbfb50cbc3596d507 Problem: webGL sites are displayed in the wrong color (usually blue-ish) Solution: Problem is with skia once again. Output of webgl seems endian-correct, but skia only knows how to deal with little endian. So we swizzle the output of webgl after reading it from readpixels() Note: This does not fix all webGL sites, but is a step in the right direction diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h --- a/gfx/gl/GLContext.h +++ b/gfx/gl/GLContext.h @@ -1551,16 +1551,23 @@ class GLContext : public GenericAtomicRe AFTER_GL_CALL; } void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) { BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); +#if MOZ_BIG_ENDIAN() + uint8_t* itr = (uint8_t*)pixels; + for (GLsizei i = 0; i < width * height; i++) { + NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1); + itr += 4; + } +#endif AFTER_GL_CALL; mHeavyGLCallsSinceLastFlush = true; } void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); public: ++++++ mozilla-bmo998749.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1583738770 -3600 # Mon Mar 09 08:26:10 2020 +0100 # Node ID 34676feac1a542e409e22acf5b98735f8313b1ce # Parent 506857dace0a08d1c9685e3ac264646590b3e27f [mq]: mozilla-bmo998749.patch diff -r 506857dace0a -r 34676feac1a5 gfx/2d/FilterProcessing.h --- a/gfx/2d/FilterProcessing.h Fri Feb 28 12:31:51 2020 +0100 +++ b/gfx/2d/FilterProcessing.h Mon Mar 09 08:26:10 2020 +0100 @@ -13,10 +13,17 @@ namespace mozilla { namespace gfx { +#if MOZ_BIG_ENDIAN() +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 3; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 2; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 1; +const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 0; +#else const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 0; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 1; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 2; const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 3; +#endif class FilterProcessing { public: ++++++ mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch ++++++ # HG changeset patch # Parent 743f8dc3f009a6020a34e59f42eb061b6e5ff0e1 diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp --- a/js/src/wasm/WasmSignalHandlers.cpp +++ b/js/src/wasm/WasmSignalHandlers.cpp @@ -240,17 +240,17 @@ using mozilla::DebugOnly; // Those definitions are however not present in the headers of every Linux // distro - Raspbian is known to be a problem, for example. However those // distros are tier-3 platforms. // // If you run into compile problems on a tier-3 platform, you can disable the // emulation here. #if defined(__linux__) && defined(__arm__) -# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS +// # define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS #endif #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS # include <sys/user.h> #endif #if defined(ANDROID) // Not all versions of the Android NDK define ucontext_t or mcontext_t. ++++++ mozilla-fix-aarch64-libopus.patch ++++++ # HG changeset patch # Parent 1317782cd47f1d1f2410712a1dd283b305393eae diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c --- a/media/libopus/silk/arm/arm_silk_map.c +++ b/media/libopus/silk/arm/arm_silk_map.c @@ -23,17 +23,17 @@ INTERRUPTION) HOWEVER CAUSED AND ON ANY CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include "main_FIX.h" +#include "../fixed/main_FIX.h" #include "NSQ.h" #include "SigProc_FIX.h" #if defined(OPUS_HAVE_RTCD) # if (defined(OPUS_ARM_MAY_HAVE_NEON_INTR) && \ !defined(OPUS_ARM_PRESUME_NEON_INTR)) ++++++ mozilla-fix-top-level-asm.patch ++++++ From 91bb79836ee274855393bdf6ab10e24899b1b349 Mon Sep 17 00:00:00 2001 From: Martin Liska <mliska@suse.cz> Date: Fri, 17 May 2019 14:41:35 +0200 Subject: [PATCH] Fix top-level asm issue. --- security/sandbox/linux/moz.build | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build index aae85843e9f6..208368dfd189 100644 --- a/security/sandbox/linux/moz.build +++ b/security/sandbox/linux/moz.build @@ -61,7 +61,6 @@ UNIFIED_SOURCES += [ '../chromium/sandbox/linux/bpf_dsl/policy_compiler.cc', '../chromium/sandbox/linux/bpf_dsl/syscall_set.cc', '../chromium/sandbox/linux/seccomp-bpf/die.cc', - '../chromium/sandbox/linux/seccomp-bpf/syscall.cc', 'broker/SandboxBrokerCommon.cpp', 'Sandbox.cpp', 'SandboxBrokerClient.cpp', @@ -77,6 +76,7 @@ UNIFIED_SOURCES += [ SOURCES += [ '../chromium/base/strings/safe_sprintf.cc', '../chromium/base/third_party/icu/icu_utf.cc', + '../chromium/sandbox/linux/seccomp-bpf/syscall.cc', '../chromium/sandbox/linux/seccomp-bpf/trap.cc', '../chromium/sandbox/linux/services/syscall_wrappers.cc', ] @@ -96,6 +96,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc'): SOURCES['../chromium/sandbox/linux/services/syscall_wrappers.cc'].flags += [ '-Wno-empty-body', ] + SOURCES['../chromium/sandbox/linux/seccomp-bpf/syscall.cc'].flags += [ + '-fno-lto' + ] # gcc lto likes to put the top level asm in syscall.cc in a different partition # from the function using it which breaks the build. Work around that by -- 2.23.0 ++++++ mozilla-get-app-id ++++++ #!/usr/bin/perl -w use XML::Simple; my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n"; my $xml; if ($file =~ /\.xpi$/) { use Archive::Zip qw/:ERROR_CODES :CONSTANTS/; my $zip = Archive::Zip->new(); if ( $zip->read($file) != AZ_OK ) { die "zip file read error\n"; } my $data = $zip->contents("install.rdf"); die "missing install.rdf in $file\n" unless $data; $xml = XMLin($data) || die "$!\n"; } elsif ($file =~ /install.rdf/) { $xml = XMLin($file) || die "$!\n"; } else { die "unsupported file format\n"; } my $desc; for my $tag (qw/RDF:Description Description/) { if (exists $xml->{$tag}) { if (ref $xml->{$tag} eq 'ARRAY') { $desc = $xml->{$tag}; } else { $desc = [ $xml->{$tag} ]; } } } my $uuid; my $id; for my $x (@$desc) { if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) { print STDERR "Warning: multiple uuids!\n" if defined $uuid; $uuid = $x->{"em:id"}; } elsif ($x->{"em:id"} =~ /@/) { print STDERR "Warning: multiple ids!\n" if defined $id; $id = $x->{"em:id"}; } } if (defined $id) { print "$id\n"; } elsif (defined $uuid) { print "$uuid\n"; } else { exit 1; } ++++++ mozilla-kde.patch ++++++ ++++ 1941 lines (skipped) ++++++ mozilla-nongnome-proxies.patch ++++++ # HG changeset patch # User Wolfgang Rosenauer # Date 1558442915 -7200 # Tue May 21 14:48:35 2019 +0200 # Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5 # Parent 528a48eaf83b24ca1698353167dfe9c537fe7f0b 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 @@ -49,21 +49,24 @@ NS_IMETHODIMP nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) { // dbus prevents us from being threadsafe, but this routine should not block // anyhow *aMainThreadOnly = true; return NS_OK; } void nsUnixSystemProxySettings::Init() { - mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); - if (mGSettings) { - mGSettings->GetCollectionForSchema( - NS_LITERAL_CSTRING("org.gnome.system.proxy"), - getter_AddRefs(mProxySettings)); + 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)); + } } } nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) { if (mProxySettings) { nsCString proxyMode; // Check if mode is auto nsresult rv = ++++++ mozilla-ntlm-full-path.patch ++++++ # HG changeset patch # User Petr Cerny <pcerny@novell.com> # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6 # Parent 6ab277cf616dc2748e9855101100a97a6cec10a6 Bug 634334 - call to the ntlm_auth helper fails diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp --- a/extensions/auth/nsAuthSambaNTLM.cpp +++ b/extensions/auth/nsAuthSambaNTLM.cpp @@ -156,17 +156,17 @@ static uint8_t* ExtractMessage(const nsA *aLen = (length / 4) * 3 - numEquals; return reinterpret_cast<uint8_t*>(PL_Base64Decode(s, length, nullptr)); } nsresult nsAuthSambaNTLM::SpawnNTLMAuthHelper() { const char* username = PR_GetEnv("USER"); if (!username) return NS_ERROR_FAILURE; - const char* const args[] = {"ntlm_auth", + const char* const args[] = {"/usr/bin/ntlm_auth", "--helper-protocol", "ntlmssp-client-1", "--use-cached-creds", "--username", username, nullptr}; bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, ++++++ mozilla-pipewire-0-3.patch ++++++ ++++ 846 lines (skipped) ++++++ mozilla-ppc-altivec_static_inline.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1558452418 -7200 # Tue May 21 17:26:58 2019 +0200 # Node ID 6cd963b6c82ea6629aaf4050851789b78f310338 # Parent 010a35335b4e45e222b9efdbda24fd1963202ecf imported patch mozilla-ppc-altivec_static_inline.patch diff --git a/gfx/qcms/transform-altivec.cpp b/gfx/qcms/transform-altivec.cpp --- a/gfx/qcms/transform-altivec.cpp +++ b/gfx/qcms/transform-altivec.cpp @@ -25,17 +25,17 @@ #include "qcmsint.h" #define FLOATSCALE (float)(PRECACHE_OUTPUT_SIZE) #define CLAMPMAXVAL (((float) (PRECACHE_OUTPUT_SIZE - 1)) / PRECACHE_OUTPUT_SIZE) 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); return vec_perm(data, data, moveToStart); } template <size_t kRIndex, size_t kGIndex, size_t kBIndex, size_t kAIndex = NO_A_INDEX> static void qcms_transform_data_template_lut_altivec(const qcms_transform *transform, ++++++ mozilla-reduce-rust-debuginfo.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1560754926 -7200 # Mon Jun 17 09:02:06 2019 +0200 # Node ID 428161c3b9599083e1b8710eda1760f1f707ab11 # Parent 05ad9fc387e07b0429a661513aed62c543464908 #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 --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure @@ -1868,18 +1868,18 @@ imply_option('RUSTC_OPT_LEVEL', '2', whe @depends('RUSTC_OPT_LEVEL', moz_optimize) def rustc_opt_level(opt_level_option, moz_optimize): if opt_level_option: return opt_level_option[0] else: return '1' if moz_optimize.optimize else '0' -@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', '--enable-frame-pointers') -def rust_compile_flags(opt_level, debug_rust, debug_symbols, frame_pointers): +@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', '--enable-frame-pointers', host) +def rust_compile_flags(opt_level, debug_rust, debug_symbols, frame_pointers, 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. # # But we'd also like to support an additional axis of control for # optimization level. Since Cargo only supports 2 profiles, we're in # a bit of a bind. # @@ -1892,16 +1892,18 @@ def rust_compile_flags(opt_level, debug_ # opt-level=0 implies -C debug-assertions, which may not be desired # unless Rust debugging is enabled. if opt_level == '0' and not debug_rust: debug_assertions = False if debug_symbols: debug_info = '2' +# if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64': # Just reduce debug_info for all archs + debug_info = '1' opts = [] if opt_level is not None: opts.append('opt-level=%s' % opt_level) if debug_assertions is not None: opts.append('debug-assertions=%s' % ('yes' if debug_assertions else 'no')) ++++++ mozilla-s390-context.patch ++++++ # HG changeset patch # User msirringhaus@suse.de # Date 1558452408 -7200 # Tue May 21 17:26:48 2019 +0200 # Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 # Parent 339450bf6566c21e54f7d48bd81b65108b21325f [mq]: mozilla-s390-context.patch diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp --- a/js/src/wasm/WasmSignalHandlers.cpp +++ b/js/src/wasm/WasmSignalHandlers.cpp @@ -150,16 +150,20 @@ using mozilla::DebugOnly; # define FP_sig(p) ((p)->uc_mcontext.mc_fp) # define SP_sig(p) ((p)->uc_mcontext.mc_i7) # endif # if defined(__linux__) && (defined(__ppc64__) || defined(__PPC64__) || \ defined(__ppc64le__) || defined(__PPC64LE__)) # 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]) # define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP]) # define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) # define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) # define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) @@ -381,18 +385,23 @@ struct macos_arm_context { # define FP_sig(p) RFP_sig(p) # define SP_sig(p) RSP_sig(p) # define LR_sig(p) R31_sig(p) #elif defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \ defined(__PPC64LE__) # 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; #else MOZ_CRASH(); #endif } ++++++ mozilla-s390x-skia-gradient.patch ++++++ # HG changeset patch # Parent acf59ea86dd1d878b43920832093f082dcfc61c0 diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp --- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100 +++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100 @@ -7,7 +7,7 @@ #include "include/core/SkPaint.h" #include "src/shaders/gradients/Sk4fLinearGradient.h" - +#include "src/core/SkEndian.h" #include <cmath> #include <utility> @@ -28,6 +28,9 @@ while (n >= 4) { DstTraits<premul>::store4x(c0, c1, c2, c3, dst, bias0, bias1); +#ifdef SK_CPU_BENDIAN + SkEndianSwap32s(dst, 4); +#endif dst += 4; c0 = c0 + dc4; @@ -37,12 +40,23 @@ n -= 4; } if (n & 2) { - DstTraits<premul>::store(c0, dst++, bias0); - DstTraits<premul>::store(c1, dst++, bias1); + DstTraits<premul>::store(c0, dst, bias0); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif + ++dst; + DstTraits<premul>::store(c1, dst, bias1); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif + ++dst; c0 = c0 + dc2; } if (n & 1) { DstTraits<premul>::store(c0, dst, bias0); +#ifdef SK_CPU_BENDIAN + *dst = SkEndianSwap32(*dst); +#endif } } ++++++ mozilla-sandbox-fips.patch ++++++ From: meissner@suse.com Subject: allow Firefox to access addtional process information Reference: http://bugzilla.suse.com/show_bug.cgi?id=1167132 diff --git a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp --- a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp +++ b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp @@ -289,16 +289,17 @@ SandboxBrokerPolicyFactory::SandboxBroke // Bug 1312678: radeonsi/Intel with DRI when using WebGL policy->AddDir(rdwr, "/dev/dri"); // Bug 1575985: WASM library sandbox needs RW access to /dev/null policy->AddPath(rdwr, "/dev/null"); // Read permissions policy->AddPath(rdonly, "/dev/urandom"); + policy->AddPath(rdonly, "/proc/sys/crypto/fips_enabled"); policy->AddPath(rdonly, "/proc/cpuinfo"); policy->AddPath(rdonly, "/proc/meminfo"); policy->AddDir(rdonly, "/sys/devices/cpu"); policy->AddDir(rdonly, "/sys/devices/system/cpu"); policy->AddDir(rdonly, "/lib"); policy->AddDir(rdonly, "/lib64"); policy->AddDir(rdonly, "/usr/lib"); policy->AddDir(rdonly, "/usr/lib32"); ++++++ mozilla.keyring ++++++ This file contains the PGP keys of various developers that work on Mozilla and its subprojects (such as Firefox and Thunderbird). Please realize that this file itself or the public key servers may be compromised. You are encouraged to validate the authenticity of these keys in an out-of-band manner. Mozilla users: pgp < KEY pub rsa4096 2015-07-17 [SC] 14F26682D0916CDD81E37B6D61B7B526D98F0353 uid [ full ] Mozilla Software Releases <release@mozilla.com> sub rsa4096 2015-07-17 [S] [expires: 2017-07-16] sub rsa4096 2017-06-22 [S] [expires: 2019-06-22] sub rsa4096 2019-05-30 [S] [expires: 2021-05-29] -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =xFcH -----END PGP PUBLIC KEY BLOCK----- ++++++ mozilla.sh.in ++++++ #!/bin/sh # # ***** BEGIN LICENSE BLOCK ***** # Version: MPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Mozilla Public License Version # 1.1 (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is mozilla.org Code. # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 1998 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Wolfgang Rosenauer <wolfgang.rosenauer@suse.de> # <wr@rosenauer.org> # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** ## ## Usage: ## ## $ mozilla [args] ## ## This script is meant to run a mozilla program from the mozilla ## rpm installation. ## ## The script will setup all the environment voodoo needed to make ## mozilla work. cmdname=`basename $0` ## ## Variables ## MOZ_DIST_BIN="%PREFIX" MOZ_DIST_LIB="%PROGDIR" MOZ_APPNAME="%APPNAME" MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME" MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh" if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then [ -h "/usr/bin/$MOZ_APPNAME" ] && \ _link=$(readlink -f "/usr/bin/$MOZ_APPNAME") if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi else export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME" fi MOZILLA_FIVE_HOME="$MOZ_DIST_LIB" export MOZILLA_FIVE_HOME LD_LIBRARY_PATH=$MOZ_DIST_LIB${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} export LD_LIBRARY_PATH # needed for SUN Java under Xorg >= 7.2 export LIBXCB_ALLOW_SLOPPY_LOCK=1 # disable Gnome crash dialog (doesn't make sense anyway) export GNOME_DISABLE_CRASH_DIALOG=1 # Wayland # Only supported on newer systems WAYLAND_SUPPORTED=%WAYLAND_SUPPORTED # $XDG_SESSION_TYPE should contain either x11 or wayland if [ $WAYLAND_SUPPORTED -eq 1 ] && [ "$XDG_SESSION_TYPE" = "wayland" ]; then export MOZ_ENABLE_WAYLAND=1 fi # enable xinput2 (boo#1032003) # breaks too many things right now (boo#1053959) #export MOZ_USE_XINPUT2=1 moz_debug=0 script_args="" pass_arg_count=0 while [ $# -gt $pass_arg_count ] do case "$1" in -d | --debugger) moz_debugger=$2; if [ "${moz_debugger}" != "" ]; then shift 2 moz_debug=1 else echo "-d requires an argument" exit 1 fi ;; *) # Move the unrecognized argument to the end of the list. arg="$1" shift set -- "$@" "$arg" pass_arg_count=`expr $pass_arg_count + 1` ;; esac done if [ $moz_debug -eq 1 ]; then tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; } trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15 echo "set args ${1+"$@"}" > $tmpfile echo "run" >> $tmpfile echo "$moz_debugger $MOZ_PROGRAM -x $tmpfile" exec $moz_debugger "$MOZ_PROGRAM" -x $tmpfile else exec $MOZ_PROGRAM "$@" fi ++++++ spellcheck.js ++++++ pref("spellchecker.dictionary_path", "/usr/share/myspell"); ++++++ tar_stamps ++++++ PRODUCT="firefox" CHANNEL="esr78" VERSION="78.7.0" VERSION_SUFFIX="esr" PREV_VERSION="78.6.1" PREV_VERSION_SUFFIX="esr" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-esr78" RELEASE_TAG="cb919a80aa244e2734a36f0122280125b1a0f7e1" RELEASE_TIMESTAMP="20210119174753"
participants (1)
-
Source-Sync