diff --git a/srcpkgs/firefox/patches/fix-arm-opus-include.patch b/srcpkgs/firefox/patches/fix-arm-opus-include.patch new file mode 100644 index 00000000000..6e0c5875da3 --- /dev/null +++ b/srcpkgs/firefox/patches/fix-arm-opus-include.patch @@ -0,0 +1,11 @@ +--- media/libopus/silk/arm/arm_silk_map.c.orig 2019-03-19 20:55:01.249609964 +0100 ++++ media/libopus/silk/arm/arm_silk_map.c 2019-03-19 20:55:25.769400255 +0100 +@@ -28,7 +28,7 @@ + # include "config.h" + #endif + +-#include "main_FIX.h" ++#include "../fixed/main_FIX.h" + #include "NSQ.h" + #include "SigProc_FIX.h" + diff --git a/srcpkgs/firefox/patches/fix-cmsghdr-rust.patch b/srcpkgs/firefox/patches/fix-cmsghdr-rust.patch index 9666ac279cc..57d2d29787e 100644 --- a/srcpkgs/firefox/patches/fix-cmsghdr-rust.patch +++ b/srcpkgs/firefox/patches/fix-cmsghdr-rust.patch @@ -1,7 +1,7 @@ ---- media/audioipc/audioipc/src/cmsg.rs.orig 2019-01-07 15:37:48.111034714 +0100 -+++ media/audioipc/audioipc/src/cmsg.rs 2019-01-07 15:40:17.251689417 +0100 +--- media/audioipc/audioipc/src/cmsg.rs.orig 2019-03-19 21:31:45.177880477 +0100 ++++ media/audioipc/audioipc/src/cmsg.rs 2019-03-19 21:32:38.103478999 +0100 @@ -108,7 +108,7 @@ - + let cmsghdr = cmsghdr { cmsg_len: cmsg_len as _, - #[cfg(target_env = "musl")] diff --git a/srcpkgs/firefox/patches/fix-musl.patch b/srcpkgs/firefox/patches/fix-musl.patch index c32921d39e1..fb58b80800d 100644 --- a/srcpkgs/firefox/patches/fix-musl.patch +++ b/srcpkgs/firefox/patches/fix-musl.patch @@ -1,11 +1,11 @@ ---- tools/profiler/core/platform.h.orig -+++ tools/profiler/core/platform.h -@@ -56,7 +56,7 @@ - +--- tools/profiler/core/platform.h.orig 2019-03-19 01:54:25.407952218 +0100 ++++ tools/profiler/core/platform.h 2019-03-19 01:54:45.571767946 +0100 +@@ -44,7 +44,7 @@ + // We need a definition of gettid(), but glibc doesn't provide a // wrapper for it. -#if defined(__GLIBC__) +#if defined(__linux__) - #include - #include - static inline pid_t gettid() + # include + # include + static inline pid_t gettid() { return (pid_t)syscall(SYS_gettid); } diff --git a/srcpkgs/firefox/patches/fix-toolkit.patch b/srcpkgs/firefox/patches/fix-toolkit.patch index a66f04bc4fc..5d3db715467 100644 --- a/srcpkgs/firefox/patches/fix-toolkit.patch +++ b/srcpkgs/firefox/patches/fix-toolkit.patch @@ -51,13 +51,13 @@ +++ toolkit/mozapps/update/common/updatedefines.h 2019-01-29 11:34:59.193583777 +0100 @@ -102,7 +102,7 @@ - #ifdef SOLARIS - #include --#else -+#elif !defined(__linux__) || defined(__GLIBC__) - #include - #endif - #include + # ifdef SOLARIS + # include +-# else ++# elif !(defined(__linux__)) || defined(__GLIBC__) + # include + # endif + # include --- toolkit.orig/mozapps/update/updater/updater.cpp 2014-03-15 05:19:37.000000000 +0000 +++ toolkit/mozapps/update/updater/updater.cpp 2014-04-17 10:24:33.796765327 +0000 @@ -3432,6 +3432,7 @@ diff --git a/srcpkgs/firefox/patches/fix-wasm-arm.patch b/srcpkgs/firefox/patches/fix-wasm-arm.patch new file mode 100644 index 00000000000..fa699112f69 --- /dev/null +++ b/srcpkgs/firefox/patches/fix-wasm-arm.patch @@ -0,0 +1,120 @@ +disable WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + +# HG changeset patch +# User Lars T Hansen +# Date 1550043288 -3600 +# Node ID 322de2cc80194c4fe859989738f7c3c2b70b98a4 +# Parent 3b1b94e39795d5af17da5908ad8d05e7cefb89e5 +Bug 1526653 - Document some ARM Linux compile problems. r=luke + +Not every ARM Linux distro (all of them tier-3 apart from Android) has +a sys/user.h that provides the necessary structures for us to emulate +unaligned FP accesses. Raspbian is a case in point; the only user.h +on the system is some generic glibc thing that is completely wrong for +ARM. + +We can't really hope to #ifdef our way out of this -- for example, +there does not seem to be a reliable preprocessor name for Raspbian, +nor is there a canonical preprocessor name that sys/user.h exports +when the desired structures are defined. + +Therefore, add some comments to explain the problem and introduce a +choke point that tier-3 porters can use if they run into the problem. + +Differential Revision: https://phabricator.services.mozilla.com/D19637 + +diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp +--- js/src/wasm/WasmSignalHandlers.cpp ++++ js/src/wasm/WasmSignalHandlers.cpp +@@ -208,17 +208,35 @@ using mozilla::DebugOnly; + # define R11_sig(p) ((p)->thread.__r[11]) + # define R13_sig(p) ((p)->thread.__sp) + # define R14_sig(p) ((p)->thread.__lr) + # define R15_sig(p) ((p)->thread.__pc) + #else + # error "Don't know how to read/write to the thread state via the mcontext_t." + #endif + ++// On ARM Linux, including Android, unaligned FP accesses that were not flagged ++// as unaligned will tend to trap (with SIGBUS) and will need to be emulated. ++// ++// We can only perform this emulation if the system header files provide access ++// to the FP registers. In particular, must have definitions of ++// `struct user_vfp` and `struct user_vfp_exc`, as it does on Android. ++// ++// 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 ++#endif ++ ++#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + # include + #endif + + #if defined(ANDROID) + // Not all versions of the Android NDK define ucontext_t or mcontext_t. + // Detect this and provide custom but compatible definitions. Note that these + // follow the GLibc naming convention to access register values from + // mcontext_t. +@@ -436,17 +454,17 @@ struct AutoHandlingTrap { + } + + ~AutoHandlingTrap() { + MOZ_ASSERT(sAlreadyHandlingTrap.get()); + sAlreadyHandlingTrap.set(false); + } + }; + +-#if defined(__linux__) && defined(__arm__) ++#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + + // Code to handle SIGBUS for unaligned floating point accesses on 32-bit ARM. + + static uintptr_t ReadGPR(CONTEXT* context, uint32_t rn) { + switch (rn) { + case 0: + return context->uc_mcontext.arm_r0; + case 1: +@@ -636,22 +654,22 @@ static bool HandleUnalignedTrap(CONTEXT* + } + + # ifdef DEBUG + MOZ_CRASH( + "SIGBUS handler could not access FP register, incompatible kernel?"); + # endif + return false; + } +-#else // __linux__ && __arm__ ++#else // WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + static bool HandleUnalignedTrap(CONTEXT* context, uint8_t* pc, + Instance* instance) { + return false; + } +-#endif // __linux__ && __arm__ ++#endif // WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + + static MOZ_MUST_USE bool HandleTrap(CONTEXT* context, + bool isUnalignedSignal = false, + JSContext* assertCx = nullptr) { + MOZ_ASSERT(sAlreadyHandlingTrap.get()); + + uint8_t* pc = ContextToPC(context); + const CodeSegment* codeSegment = LookupCodeSegment(pc); +@@ -1165,8 +1183,10 @@ bool wasm::HandleIllegalInstruction(cons + return false; + } + + jit::JitActivation* activation = TlsContext.get()->activation()->asJit(); + activation->startWasmTrap(trap, bytecode.offset(), regs); + *newPC = segment.trapCode(); + return true; + } ++ ++#undef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + diff --git a/srcpkgs/firefox/patches/fix-xpcom.patch b/srcpkgs/firefox/patches/fix-xpcom.patch deleted file mode 100644 index 71265736c81..00000000000 --- a/srcpkgs/firefox/patches/fix-xpcom.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- xpcom/base/nsMemoryReporterManager.cpp.orig 2018-10-25 01:03:36.267772091 +0200 -+++ xpcom/base/nsMemoryReporterManager.cpp 2018-10-25 01:42:08.863831518 +0200 -@@ -133,6 +133,7 @@ - return GetProcSelfSmapsPrivate(aN); - } - -+#ifdef __GLIBC__ - #ifdef HAVE_MALLINFO - #define HAVE_SYSTEM_HEAP_REPORTER 1 - static MOZ_MUST_USE nsresult -@@ -154,6 +155,7 @@ - return NS_OK; - } - #endif -+#endif - - #elif defined(__DragonFly__) || defined(__FreeBSD__) \ - || defined(__NetBSD__) || defined(__OpenBSD__) \ diff --git a/srcpkgs/firefox/patches/mallinfo.patch b/srcpkgs/firefox/patches/mallinfo.patch index c9a38d45bdf..afea86c0a2c 100644 --- a/srcpkgs/firefox/patches/mallinfo.patch +++ b/srcpkgs/firefox/patches/mallinfo.patch @@ -1,18 +1,34 @@ ---- xpcom/base/nsMemoryReporterManager.cpp -+++ xpcom/base/nsMemoryReporterManager.cpp -@@ -153,6 +153,7 @@ ResidentUniqueDistinguishedAmount(int64_t* aN) +--- xpcom/base/nsMemoryReporterManager.cpp.orig 2019-03-19 17:12:20.844810044 +0100 ++++ xpcom/base/nsMemoryReporterManager.cpp 2019-03-19 17:13:32.505133615 +0100 +@@ -123,6 +123,7 @@ return GetProcSelfSmapsPrivate(aN); } +#ifdef __GLIBC__ - #define HAVE_SYSTEM_HEAP_REPORTER 1 - nsresult - SystemHeapSize(int64_t* aSizeOut) -@@ -172,6 +173,7 @@ SystemHeapSize(int64_t* aSizeOut) - *aSizeOut = size_t(info.hblkhd) + size_t(info.uordblks); - return NS_OK; + # ifdef HAVE_MALLINFO + # define HAVE_SYSTEM_HEAP_REPORTER 1 + static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) { +@@ -142,6 +143,7 @@ + return NS_OK; } -+#endif + # endif ++#endif // __GLIBC__ - #elif defined(__DragonFly__) || defined(__FreeBSD__) \ - || defined(__NetBSD__) || defined(__OpenBSD__) \ + #elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \ + defined(__OpenBSD__) || defined(__FreeBSD_kernel__) +@@ -642,6 +644,7 @@ + return NS_OK; + } + ++#ifdef __GLIBC__ + # define HAVE_SYSTEM_HEAP_REPORTER 1 + // Windows can have multiple separate heaps. During testing there were multiple + // heaps present but the non-default ones had sizes no more than a few 10s of +@@ -698,6 +701,7 @@ + *aSizeOut = heapsSize; + return NS_OK; + } ++#endif // __GLIBC__ + + struct SegmentKind { + DWORD mState; diff --git a/srcpkgs/firefox/patches/ppc-no-static-sizes.patch b/srcpkgs/firefox/patches/ppc-no-static-sizes.patch index 3f77023bb5f..732881a469e 100644 --- a/srcpkgs/firefox/patches/ppc-no-static-sizes.patch +++ b/srcpkgs/firefox/patches/ppc-no-static-sizes.patch @@ -8,12 +8,12 @@ to predict the runtime page size. --- memory/build/mozjemalloc.cpp +++ memory/build/mozjemalloc.cpp -@@ -369,7 +369,7 @@ +@@ -182,7 +182,7 @@ // Debug builds are opted out too, for test coverage. #ifndef MOZ_DEBUG - #if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && \ -- !defined(__aarch64__) -+ !defined(__aarch64__) && !defined(__powerpc__) && !defined(__powerpc64__) - #define MALLOC_STATIC_PAGESIZE 1 - #endif + # if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && \ +- !defined(__aarch64__) ++ !defined(__aarch64__) && !defined(__powerpc__) && !defined(__powerpc64__) + # define MALLOC_STATIC_PAGESIZE 1 + # endif #endif diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index 2f95cad1de8..b2d26726dd4 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,20 +3,20 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=65.0.1 -revision=2 +version=66.0 +revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" maintainer="Johannes " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=67e517f6d1ea8aa5c8f32404b8756f3205c3550917a91a19b0a0edccc656a3cc +checksum=c37b253294826b6d14864dc38342edd5b174e76a272a7e5dbaca007eb2cac7b0 lib32disabled=yes hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo - llvm clang nodejs cbindgen python" + llvm clang nodejs cbindgen python nasm" makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std @@ -132,7 +132,8 @@ do_build() { export AS=$CC cat <>.mozconfig -ac_add_options --with-google-api-keyfile="${wrksrc}/google-api-key" +ac_add_options --with-google-location-service-api-keyfile="${wrksrc}/google-api-key" +ac_add_options --with-google-safebrowsing-api-keyfile="${wrksrc}/google-api-key" ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key" ac_add_options $(vopt_enable alsa) ac_add_options $(vopt_enable sndio)