From e72a5164506680c54c42e8353975f0751e1a76521dc45b94c78ff1cf91a3a2af Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Thu, 5 Sep 2019 12:57:01 +0000 Subject: [PATCH 1/3] - added a bunch of patches mainly for big endian platforms * mozilla-bmo1504834-part1.patch * mozilla-bmo1504834-part2.patch * mozilla-bmo1504834-part3.patch * mozilla-bmo1511604.patch * mozilla-bmo1554971.patch * mozilla-bmo1573381.patch * mozilla-nestegg-big-endian.patch OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=763 --- MozillaFirefox.changes | 12 +++++ MozillaFirefox.spec | 49 +++++++++++++++++- mozilla-bmo1504834-part1.patch | 81 +++++++++++++++++++++++++++++ mozilla-bmo1504834-part2.patch | 88 ++++++++++++++++++++++++++++++++ mozilla-bmo1504834-part3.patch | 38 ++++++++++++++ mozilla-bmo1511604.patch | 54 ++++++++++++++++++++ mozilla-bmo1554971.patch | 22 ++++++++ mozilla-bmo1573381.patch | 22 ++++++++ mozilla-nestegg-big-endian.patch | 38 ++++++++++++++ 9 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 mozilla-bmo1504834-part1.patch create mode 100644 mozilla-bmo1504834-part2.patch create mode 100644 mozilla-bmo1504834-part3.patch create mode 100644 mozilla-bmo1511604.patch create mode 100644 mozilla-bmo1554971.patch create mode 100644 mozilla-bmo1573381.patch create mode 100644 mozilla-nestegg-big-endian.patch diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index 816f463..2d17e59 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer + +- added a bunch of patches mainly for big endian platforms + * mozilla-bmo1504834-part1.patch + * mozilla-bmo1504834-part2.patch + * mozilla-bmo1504834-part3.patch + * mozilla-bmo1511604.patch + * mozilla-bmo1554971.patch + * mozilla-bmo1573381.patch + * mozilla-nestegg-big-endian.patch + ------------------------------------------------------------------- Fri Aug 30 20:49:11 UTC 2019 - Wolfgang Rosenauer diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index 5b534cf..8f88d3f 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -33,6 +33,8 @@ # PIE, full relro %define build_hardened 1 +%bcond_with only_print_mozconfig + # Firefox only supports i686 %ifarch %ix86 ExclusiveArch: i586 i686 @@ -134,6 +136,7 @@ Summary: Mozilla %{appname} Web Browser License: MPL-2.0 Group: Productivity/Networking/Web/Browsers Url: http://www.mozilla.org/ +%if !%{with only_print_mozconfig} Source: http://ftp.mozilla.org/pub/firefox/releases/%{version}%{orig_suffix}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz Source1: MozillaFirefox.desktop Source2: MozillaFirefox-rpmlintrc @@ -157,7 +160,7 @@ Source16: MozillaFirefox.changes Source18: mozilla-api-key Source19: google-api-key Source20: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/source/%{progname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc -Source21: mozilla.keyring +Source21: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/KEY#/mozilla.keyring # Gecko/Toolkit Patch1: mozilla-nongnome-proxies.patch Patch2: mozilla-kde.patch @@ -174,10 +177,18 @@ Patch12: mozilla-reduce-rust-debuginfo.patch Patch13: mozilla-ppc-altivec_static_inline.patch Patch14: mozilla-bmo1005535.patch Patch15: mozilla-bmo1568145.patch +Patch16: mozilla-bmo1573381.patch +Patch17: mozilla-bmo1504834-part1.patch +Patch18: mozilla-bmo1504834-part2.patch +Patch19: mozilla-bmo1504834-part3.patch +Patch20: mozilla-bmo1511604.patch +Patch21: mozilla-bmo1554971.patch +Patch22: mozilla-nestegg-big-endian.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-branded-icons.patch Patch103: firefox-add-kde.js-in-order-to-survive-PGO-build.patch +%endif # only_print_mozconfig BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires(post): coreutils shared-mime-info desktop-file-utils Requires(postun): shared-mime-info desktop-file-utils @@ -267,6 +278,7 @@ This subpackage contains the Breakpad created and compatible debugging symbols meant for upload to Mozilla's crash collector database. %endif +%if !%{with only_print_mozconfig} %prep %if %localize @@ -300,12 +312,21 @@ cd $RPM_BUILD_DIR/%{source_prefix} %patch13 -p1 %patch14 -p1 %patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 # Firefox %patch101 -p1 %patch102 -p1 %patch103 -p1 +%endif # only_print_mozconfig %build +%if !%{with only_print_mozconfig} # no need to add build time to binaries modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")" DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\"" @@ -318,6 +339,8 @@ if test "$kdehelperversion" != %{kde_helper_version}; then exit 1 fi source %{SOURCE5} +%endif # only_print_mozconfig + export MOZ_SOURCE_CHANGESET=$REV export SOURCE_REPO=$REPO export source_repo=$REPO @@ -348,8 +371,18 @@ export CFLAGS="$CFLAGS -mminimal-toc" %endif export CXXFLAGS="$CFLAGS" export MOZCONFIG=$RPM_BUILD_DIR/mozconfig +%if %{with only_print_mozconfig} +echo "export CC=$CC" +echo "export CXX=$CXX" +echo "export CFLAGS=\"$CFLAGS\"" +echo "export LDFLAGS=\"$LDFLAGS\"" +echo "export RUSTFLAGS=\"$RUSTFLAGS\"" +echo "" +cat << EOF +%else %limit_build -m 2000 cat << EOF > $MOZCONFIG +%endif mk_add_options MOZILLA_OFFICIAL=1 mk_add_options BUILD_OFFICIAL=1 mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs} @@ -424,7 +457,19 @@ ac_add_options MOZ_PGO=1 %endif %endif EOF +%if !%{with only_print_mozconfig} +%ifarch ppc64 s390x s390 +# NOTE: Currently, system-icu is too old, so we can't build with that, +# but have to generate the .dat-file freshly. This seems to be a +# less fragile approach anyways. +# ac_add_options --with-system-icu +echo "Generate big endian version of config/external/icu/data/icud58l.dat" +./mach python intl/icu_sources_data.py . +ls -l config/external/icu/data +rm -f config/external/icu/data/icudt*l.dat +%endif xvfb-run --server-args="-screen 0 1920x1080x24" ./mach build +%endif # only_print_mozconfig %install cd $RPM_BUILD_DIR/obj @@ -448,7 +493,7 @@ install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/ # install browser prefs install -m 644 %{SOURCE6} %{buildroot}%{progdir}/browser/defaults/preferences/kde.js install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js -# install additional locales +# build additional locales %if %localize mkdir -p %{buildroot}%{progdir}/browser/extensions truncate -s 0 %{_tmppath}/translations.{common,other} diff --git a/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch new file mode 100644 index 0000000..7990ff5 --- /dev/null +++ b/mozilla-bmo1504834-part1.patch @@ -0,0 +1,81 @@ +# HG changeset patch +# Parent 051b75a600dfbf7503c3485cebfd34d4eb29be96 +Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 + +diff -r 051b75a600df gfx/2d/DrawTargetSkia.cpp +--- a/gfx/2d/DrawTargetSkia.cpp Fri Jul 05 12:42:44 2019 +0200 ++++ b/gfx/2d/DrawTargetSkia.cpp Mon Jul 08 10:59:30 2019 +0200 +@@ -138,8 +138,7 @@ + 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) { +diff -r 051b75a600df gfx/2d/Types.h +--- a/gfx/2d/Types.h Fri Jul 05 12:42:44 2019 +0200 ++++ b/gfx/2d/Types.h Mon Jul 08 10:59:30 2019 +0200 +@@ -85,15 +85,8 @@ + // 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 + }; + + static inline int BytesPerPixel(SurfaceFormat aFormat) { +diff -r 051b75a600df gfx/skia/skia/third_party/skcms/skcms.cc +--- a/gfx/skia/skia/third_party/skcms/skcms.cc Fri Jul 05 12:42:44 2019 +0200 ++++ b/gfx/skia/skia/third_party/skcms/skcms.cc Mon Jul 08 10:59:30 2019 +0200 +@@ -17,6 +17,8 @@ + #include + #elif defined(__SSE__) + #include ++#else ++ #define SKCMS_PORTABLE + #endif + + // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. +@@ -124,20 +126,28 @@ + 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 + } + diff --git a/mozilla-bmo1504834-part2.patch b/mozilla-bmo1504834-part2.patch new file mode 100644 index 0000000..a0be567 --- /dev/null +++ b/mozilla-bmo1504834-part2.patch @@ -0,0 +1,88 @@ +# HG changeset patch +# Parent 548d0a2f3a22bfac32ec0c3921c6c969c8bf32a9 +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 -r 548d0a2f3a22 gfx/2d/ConvolutionFilter.cpp +--- a/gfx/2d/ConvolutionFilter.cpp Mon Jul 22 16:57:54 2019 +0200 ++++ b/gfx/2d/ConvolutionFilter.cpp Thu Jul 25 14:27:59 2019 +0200 +@@ -35,9 +35,38 @@ + return true; + } + ++static void ByteSwapArray(uint8_t *u8Array, int32_t size) { ++ uint32_t *array = reinterpret_cast(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) { ++#ifdef 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); ++ ++#ifdef MOZ_BIG_ENDIAN ++ ByteSwapArray((uint8_t*)aSrc, inputSize); ++ ByteSwapArray(aDst, outputSize); ++#endif + } + + void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst, +@@ -49,8 +78,26 @@ + int32_t filterLength; + auto filterValues = + mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); ++ ++#ifdef 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); ++ ++#ifdef 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 +diff -r 548d0a2f3a22 gfx/skia/skia/include/core/SkPreConfig.h +--- a/gfx/skia/skia/include/core/SkPreConfig.h Mon Jul 22 16:57:54 2019 +0200 ++++ b/gfx/skia/skia/include/core/SkPreConfig.h Thu Jul 25 14:27:59 2019 +0200 +@@ -73,7 +73,7 @@ + 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 diff --git a/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch new file mode 100644 index 0000000..8d5692f --- /dev/null +++ b/mozilla-bmo1504834-part3.patch @@ -0,0 +1,38 @@ +# 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 -r 49f25e4c2fd1 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 Fri Aug 23 15:00:43 2019 +0200 +@@ -238,7 +238,14 @@ + AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } + AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } + +- AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(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). ++ // AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } ++ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } + 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 -r 49f25e4c2fd1 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 Fri Aug 23 15:00:43 2019 +0200 +@@ -203,7 +203,9 @@ + // ~~~> + // a = 1*aa + d(1-1*aa) = aa + d(1-aa) + // c = 0*aa + d(1-1*aa) = d(1-aa) +- return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) ++ ++ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 ++ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) + + d.approxMulDiv255(aa.inv()); + }; + while (h --> 0) { diff --git a/mozilla-bmo1511604.patch b/mozilla-bmo1511604.patch new file mode 100644 index 0000000..f23f291 --- /dev/null +++ b/mozilla-bmo1511604.patch @@ -0,0 +1,54 @@ +# HG changeset patch +# User A. Wilcox +# Date 1543674229 0 +# Sat Dec 01 14:23:49 2018 +0000 +# Node ID 0309ff19e46b126c527e633518d7de8570442114 +# Parent 53107afbc21ec78e7ac46d37af212505f2032d5d +Bug 1511604 - Swizzle YCbCr->RGB data on big-endian machines +Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1511604 + +This is very closely related to mozilla-bmo1504834 + +Again, input for skia is swizzled to LE, as skia only understands LE. + +diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp +--- a/gfx/ycbcr/YCbCrUtils.cpp Wed Nov 07 04:50:21 2018 +0000 ++++ b/gfx/ycbcr/YCbCrUtils.cpp Sat Dec 01 14:23:49 2018 +0000 +@@ -3,7 +3,9 @@ + * 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/EndianUtils.h" + #include "gfx2DGlue.h" ++#include "mozilla/gfx/Swizzle.h" + + #include "YCbCrUtils.h" + #include "yuv_convert.h" +@@ -236,6 +238,13 @@ + yuvtype, + srcData.mYUVColorSpace); + } ++#ifdef MOZ_BIG_ENDIAN ++ // libyuv makes endian-correct result, which needs to be swapped to BGRX ++ if (aDestFormat != SurfaceFormat::R5G6B5_UINT16) ++ gfx::SwizzleData(aDestBuffer, aStride, gfx::SurfaceFormat::X8R8G8B8, ++ aDestBuffer, aStride, gfx::SurfaceFormat::B8G8R8X8, ++ srcData.mPicSize); ++#endif + } + + void +@@ -257,6 +266,12 @@ + aSrcStrideYA, + aSrcStrideUV, + aDstStrideARGB); ++#ifdef MOZ_BIG_ENDIAN ++ // libyuv makes endian-correct result, which needs to be swapped to BGRA ++ gfx::SwizzleData(aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::A8R8G8B8, ++ aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::B8G8R8A8, ++ IntSize(aWidth, aHeight)); ++#endif + } + + } // namespace gfx + diff --git a/mozilla-bmo1554971.patch b/mozilla-bmo1554971.patch new file mode 100644 index 0000000..e6e3042 --- /dev/null +++ b/mozilla-bmo1554971.patch @@ -0,0 +1,22 @@ +# 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." + }, diff --git a/mozilla-bmo1573381.patch b/mozilla-bmo1573381.patch new file mode 100644 index 0000000..c649735 --- /dev/null +++ b/mozilla-bmo1573381.patch @@ -0,0 +1,22 @@ +# HG changeset patch +# Parent 45680ce4ca06795cbca1ea5a9ae8a7a11ab95cf1 +The code tries to find a codec in a list of codecs. For this it searches for a given prefix. +But the prefix is of type char16_t, which means 2 bytes per character instead of 1, as was compared here. +On big endian this created some false positives, as the order of bytes is different and some characters only +occupy "the first" byte, having the second null'ed out. +Noticed because of gtest: MediaMIMETypes.MediaCodecs + +Upstream bugreport: https://bugzilla.mozilla.org/show_bug.cgi?id=1573381 + +diff -r 45680ce4ca06 -r 381102061fcc dom/media/MediaMIMETypes.cpp +--- a/dom/media/MediaMIMETypes.cpp Mon Aug 05 09:28:53 2019 +0200 ++++ b/dom/media/MediaMIMETypes.cpp Tue Aug 13 07:51:27 2019 +0200 +@@ -87,7 +87,7 @@ + const size_t prefixLength = aCodecPrefix.Length(); + for (const auto& myCodec : Range()) { + if (myCodec.Length() >= prefixLength && +- memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength) == 0) { ++ memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength * sizeof(char16_t)) == 0) { + return true; + } + } diff --git a/mozilla-nestegg-big-endian.patch b/mozilla-nestegg-big-endian.patch new file mode 100644 index 0000000..484388e --- /dev/null +++ b/mozilla-nestegg-big-endian.patch @@ -0,0 +1,38 @@ +# HG changeset patch +# Parent 381102061fccdec40efda75c7423a766f68201ba +Bug-behavior: Youtube-videos using VP9 and opus as audio-codec started loading but did not play +Reason: While parsing the audio-stream, the sampling frequency (short rate) was wrongly parsed by + nestegg, returning 0 all the time. This led to the audio-track reporting that it neither had + valid video nor audio. Which led to an endless-loop in the video state machine. +Solution: Correct parsing of rate in nestegg, which is a float and cuts of bytes. +Link: https://github.com/kinetiknz/nestegg/issues/64 + +diff -r 381102061fcc -r 8da4be020b1e media/libnestegg/src/nestegg.c +--- a/media/libnestegg/src/nestegg.c Tue Aug 13 07:51:27 2019 +0200 ++++ b/media/libnestegg/src/nestegg.c Tue Aug 20 07:59:54 2019 +0200 +@@ -768,7 +768,15 @@ + { + union { + uint64_t u; +- float f; ++ struct { ++#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__ ++ uint32_t _pad; ++ float f; ++#else ++ float f; ++ uint32_t _pad; ++#endif ++ } f; + double d; + } value; + int r; +@@ -780,7 +788,7 @@ + if (r != 1) + return r; + if (length == 4) +- *val = value.f; ++ *val = value.f.f; + else + *val = value.d; + return 1; From 0c3a6afdc40932dff10429032597f04241df5aa6f0972eae81eafb5a03a62265 Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Mon, 9 Sep 2019 06:28:12 +0000 Subject: [PATCH 2/3] =?UTF-8?q?-=20Mozilla=20Firefox=2069.0=20=20=20*=20En?= =?UTF-8?q?hanced=20Tracking=20Protection=20(ETP)=20for=20stronger=20priva?= =?UTF-8?q?cy=20protections=20=20=20*=20Block=20Autoplay=20feature=20is=20?= =?UTF-8?q?enhanced=20to=20give=20users=20the=20option=20to=20block=20=20?= =?UTF-8?q?=20=20=20any=20video=20=20=20*=20Users=20in=20the=20US=20or=20u?= =?UTF-8?q?sing=20the=20en-US=20browser,=20can=20get=20a=20new=20=E2=80=9C?= =?UTF-8?q?New=20Tab=E2=80=9D=20=20=20=20=20page=20experience=20connecting?= =?UTF-8?q?=20to=20the=20best=20of=20Pocket's=20content.=20=20=20*=20Suppo?= =?UTF-8?q?rt=20for=20the=20Web=20Authentication=20HmacSecret=20extension?= =?UTF-8?q?=20via=20=20=20=20=20Windows=20Hello=20introduced.=20=20=20*=20?= =?UTF-8?q?Support=20for=20receiving=20multiple=20video=20codecs=20with=20?= =?UTF-8?q?this=20release=20makes=20=20=20=20=20it=20easier=20for=20WebRTC?= =?UTF-8?q?=20conferencing=20services=20to=20mix=20video=20from=20=20=20?= =?UTF-8?q?=20=20different=20clients.=20-=20requires=20=20=20*=20rust/carg?= =?UTF-8?q?o=20>=3D=201.35=20=20=20*=20rust-cbindgen=20>=3D=200.9.0=20=20?= =?UTF-8?q?=20*=20mozilla-nss=20>=3D=203.45=20-=20rebased=20patches=20=20?= =?UTF-8?q?=20*=20mozilla-bmo1504834-part1.patch=20(currently=20unused=20a?= =?UTF-8?q?s=20it=20breaks=20LE)=20=20=20*=20mozilla-bmo1504834-part2.patc?= =?UTF-8?q?h=20(currently=20unused=20as=20it=20breaks=20LE)=20=20=20*=20mo?= =?UTF-8?q?zilla-bmo1504834-part3.patch=20(currently=20unused=20as=20it=20?= =?UTF-8?q?breaks=20LE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=765 --- MozillaFirefox.changes | 40 +- MozillaFirefox.spec | 28 +- compare-locales.tar.xz | 4 +- firefox-68.1.0esr.source.tar.xz | 3 - firefox-68.1.0esr.source.tar.xz.asc | 16 - firefox-69.0.source.tar.xz | 3 + firefox-69.0.source.tar.xz.asc | 16 + firefox-kde.patch | 1402 ----------------------- l10n-68.1.0esr.tar.xz | 3 - l10n-69.0.tar.xz | 3 + mozilla-bmo1463035.patch | 44 +- mozilla-kde.patch | 561 +-------- mozilla-ppc-altivec_static_inline.patch | 20 +- source-stamp.txt | 4 +- tar_stamps | 8 +- 15 files changed, 156 insertions(+), 1999 deletions(-) delete mode 100644 firefox-68.1.0esr.source.tar.xz delete mode 100644 firefox-68.1.0esr.source.tar.xz.asc create mode 100644 firefox-69.0.source.tar.xz create mode 100644 firefox-69.0.source.tar.xz.asc delete mode 100644 l10n-68.1.0esr.tar.xz create mode 100644 l10n-69.0.tar.xz diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index 2d17e59..5a2f159 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,10 +1,44 @@ +------------------------------------------------------------------- +Thu Sep 5 13:02:39 UTC 2019 - Wolfgang Rosenauer + +- Mozilla Firefox 69.0 + * Enhanced Tracking Protection (ETP) for stronger privacy protections + * Block Autoplay feature is enhanced to give users the option to block + any video + * Users in the US or using the en-US browser, can get a new “New Tab” + page experience connecting to the best of Pocket's content. + * Support for the Web Authentication HmacSecret extension via + Windows Hello introduced. + * Support for receiving multiple video codecs with this release makes + it easier for WebRTC conferencing services to mix video from + different clients. + MFSA 2019-25 (boo#1149324) + * CVE-2019-11741 (bmo#1539595) + Isolate addons.mozilla.org and accounts.firefox.com + * CVE-2019-5849 (bmo#1555838) + Out-of-bounds read in Skia + * CVE-2019-11737 (bmo#1388015) + Content security policy directives ignore port and path if host is a wildcard + * CVE-2019-11734 (bmo#1352875,bmo#1536227,bmo#1557208,bmo#1560641) + Memory safety bugs fixed in Firefox 69 + * CVE-2019-11735 (bmo#1561404,bmo#1561484,bmo#1568047,bmo#1561912, + bmo#1565744,bmo#1568858,bmo#1570358) + Memory safety bugs fixed in Firefox 69 and Firefox ESR 68.1 + * CVE-2019-11740 (bmo#1563133,bmo#1573160) + Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox ESR 60.9 +- requires + * rust/cargo >= 1.35 + * rust-cbindgen >= 0.9.0 + * mozilla-nss >= 3.45 +- rebased patches + ------------------------------------------------------------------- Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer - added a bunch of patches mainly for big endian platforms - * mozilla-bmo1504834-part1.patch - * mozilla-bmo1504834-part2.patch - * mozilla-bmo1504834-part3.patch + * mozilla-bmo1504834-part1.patch (currently unused as it breaks LE) + * mozilla-bmo1504834-part2.patch (currently unused as it breaks LE) + * mozilla-bmo1504834-part3.patch (currently unused as it breaks LE) * mozilla-bmo1511604.patch * mozilla-bmo1554971.patch * mozilla-bmo1573381.patch diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index 8f88d3f..57c2a96 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -18,13 +18,13 @@ # changed with every update -%define major 68 -%define mainver %major.1.0 -%define orig_version 68.1.0 -%define orig_suffix esr -%define update_channel esr68 +%define major 69 +%define mainver %major.0 +%define orig_version 69.0 +%define orig_suffix %{nil} +%define update_channel release %define branding 1 -%define releasedate 20190826132627 +%define releasedate 20190827005903 %define source_prefix firefox-%{orig_version} # always build with GCC as SUSE Security Team requires that @@ -72,7 +72,7 @@ BuildRequires: gcc7-c++ %else BuildRequires: gcc-c++ %endif -BuildRequires: cargo >= 1.34 +BuildRequires: cargo >= 1.35 BuildRequires: libXcomposite-devel BuildRequires: libcurl-devel BuildRequires: libidl-devel @@ -81,14 +81,14 @@ BuildRequires: libnotify-devel BuildRequires: libproxy-devel BuildRequires: makeinfo BuildRequires: mozilla-nspr-devel >= 4.21 -BuildRequires: mozilla-nss-devel >= 3.44.1 +BuildRequires: mozilla-nss-devel >= 3.45 BuildRequires: nasm >= 2.13 BuildRequires: nodejs >= 8.11 BuildRequires: python-devel BuildRequires: python2-xml BuildRequires: python3 >= 3.5 -BuildRequires: rust >= 1.34 -BuildRequires: rust-cbindgen >= 0.8.7 +BuildRequires: rust >= 1.35 +BuildRequires: rust-cbindgen >= 0.9.0 BuildRequires: startup-notification-devel BuildRequires: unzip BuildRequires: update-desktop-files @@ -285,7 +285,7 @@ symbols meant for upload to Mozilla's crash collector database. # If generated incorrectly, the tarball will be ~270B in # size, so 1MB seems like good enough limit to check. MINSIZE=1048576 -if (( $(stat -c%s "%{SOURCE7}") < MINSIZE)); then +if (( $(stat -Lc%s "%{SOURCE7}") < MINSIZE)); then echo "Translations tarball %{SOURCE7} not generated properly." exit 1 fi @@ -313,9 +313,9 @@ cd $RPM_BUILD_DIR/%{source_prefix} %patch14 -p1 %patch15 -p1 %patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 +#%patch17 -p1 +#%patch18 -p1 +#%patch19 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 diff --git a/compare-locales.tar.xz b/compare-locales.tar.xz index 3b5867c..2a1f23a 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:892b06ef50e2a0f3db6ecefacd620186362913304b932ecb16c888a0243c497c -size 28536 +oid sha256:44a9b1a9e51539cafb46606e87127153fd7a3dc74cf2c0b283e2f09a7a856ef0 +size 28512 diff --git a/firefox-68.1.0esr.source.tar.xz b/firefox-68.1.0esr.source.tar.xz deleted file mode 100644 index 099969f..0000000 --- a/firefox-68.1.0esr.source.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac -size 312155752 diff --git a/firefox-68.1.0esr.source.tar.xz.asc b/firefox-68.1.0esr.source.tar.xz.asc deleted file mode 100644 index 4fc8bfb..0000000 --- a/firefox-68.1.0esr.source.tar.xz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl1kD6oACgkQ8aZmj7t9 -Vy7zgw//daumocgMPaRkjqsbwsa2PkgdNGv1Doyx3ryKUvAVI0FQYJC2RW5/y++W -Fv92d8ib4Mh8nsmykR4L7jAN+ovdF3mzY0EyoRpC41aWaC0Uw9lLnDVk9s/U46Y3 -8IPKEzfNVS4vKETIYviArOLU8AXa/3GT9PtVLZ+VhzMOqe4qnYJTW93s06y0VXUE -r7Bzfe+dwUxLzVtc3d5HfuOmiKYRRjhI1U+Tx8p+DVY7gXhES4r/BmT/bbvNYpdh -i0HzWRH53J7//wiV18WKPxX1UqTYIVMwEhHZZ9+MA11LN2HTLKPmNL/wnh+zx6Wg -arVJQYIIdH7CvNt0/ewJmsFgUmU9inSUd/zJ+7Absq3eDDBwYvsiNNexW+cpgDIe -axWgtQBkp0m73gZ8wzcYO7lI4KhbfraWwBiSubIrZRSuJAbyowKVees/hRtFFeI2 -Uhzefr+Cn9RS6vGm7DKme36c6VOZGP7kRO8u+sNrxu4NeOakoG4J7pwFbCnLAVO2 -vT0a4xScznXQ9inqrYRdnUiUQv2PLOLCC8uullaPvyd99LPmhbgYaVrii/8S4Ozo -zU95mzbBUbvMPg3OrLNbcszRHeLV9EK0if/+GGr6fSVNrEmShqsFpbceSsbrGg0+ -tOWi7PM4iHhlzaFt2TVLV4+xfQWoH7kBW2qNA0dmGjYP1poh1WE= -=Q1b3 ------END PGP SIGNATURE----- diff --git a/firefox-69.0.source.tar.xz b/firefox-69.0.source.tar.xz new file mode 100644 index 0000000..1fca434 --- /dev/null +++ b/firefox-69.0.source.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:413c3febdfeb69eade818824eecbdb11eaeda71de229573810afd641ba741ec5 +size 323421020 diff --git a/firefox-69.0.source.tar.xz.asc b/firefox-69.0.source.tar.xz.asc new file mode 100644 index 0000000..9d04349 --- /dev/null +++ b/firefox-69.0.source.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl1kibYACgkQ8aZmj7t9 +Vy6Euw//cjIyG2xR7OOj62l4vrCI4r57c2QC7RcC/7rOHcTVxJK7uOvsCsq1HxK8 +GO85ThQlTj3S0xEmfM3cln09I8H1ZTigP534wgE8jEMdnIJgjYmRIEY96gzWKIz/ +eMFCIqbCr0wAYumpYNX7+HbSRmJfis0BcDES2TFD265euzplMJiw3d3uMcSc3nZv +aM/ysnmH6fDDhcGXLrNAbkHZF3snUyc0Hg/LUMLjYBo2M0rpjx5t3CeeQbKL+GO5 +KswvhK39j70a4FuVlrTRdLrSpDV5PYzzcAlFAql07xuNE6gAq2xqhrk+NcUXarP4 +sIMD0f8I2Grjp/iAKcN4YoKKbKCf/lMpDWUA2h1p+T+qPnGveFE8OcZkXLhoQXo1 +SYWWxZ/Hecnmp8fW9uVDNlfPAuYGQrU9HDaiZ+ghsn+8EMrUkzrjNjTChlDRqNgt +7EcsONvKwreWiP0hsij6ECBItf4oPeRjSzbOaQWShF+nmWldKeJeOdDm1MHi7vjb +WxUval0iaozTQV2WGofV0YPqu3UBKjDwHnDRx9YPZLMpHhFgYkoathwFLATGm8Q8 +sq82A8Ys5wjNjcd6kToS/Dze5fDZr7EsKg7JbD8qVYI8LXHem8Ps7nzN4FmLcyJ+ +PI2aFEyQ559aMw/Ov9iDZ2YSDxoLLbcX1QYvF2IXeWvwqz99zUc= +=x/W8 +-----END PGP SIGNATURE----- diff --git a/firefox-kde.patch b/firefox-kde.patch index 370c4f5..89a70ff 100644 --- a/firefox-kde.patch +++ b/firefox-kde.patch @@ -11,1408 +11,6 @@ How to apply this patch: 4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style) 5. hg qrefresh -diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul -new file mode 100644 ---- /dev/null -+++ b/browser/base/content/browser-kde.xul -@@ -0,0 +1,1375 @@ -+#filter substitution -+ -+# -*- Mode: HTML -*- -+# -+# 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/. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# All DTD information is stored in a separate file so that it can be shared by -+# hiddenWindow.xul. -+ -+ -+ -+ -+# All JS files which are needed by browser.xul and other top level windows to -+# support MacOS specific features *must* go into the global-scripts.inc file so -+# that they can be shared with macWindow.inc.xul. -+#include global-scripts.inc -+ -+ -+ -+# All sets except for popupsets (commands, keys, and stringbundles) -+# *must* go into the browser-sets.inc file so that they can be shared with other -+# top level windows in macWindow.inc.xul. -+#include browser-sets.inc -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+