diff options
Diffstat (limited to 'www/firefox68')
-rw-r--r-- | www/firefox68/Makefile | 3 | ||||
-rw-r--r-- | www/firefox68/distinfo | 7 | ||||
-rw-r--r-- | www/firefox68/patches/patch-browser_app_profile_firefox.js | 9 | ||||
-rw-r--r-- | www/firefox68/patches/patch-gfx_thebes_gfxPlatform.cpp | 28 | ||||
-rw-r--r-- | www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore.h | 18 | ||||
-rw-r--r-- | www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore__posix.cpp | 187 |
6 files changed, 36 insertions, 216 deletions
diff --git a/www/firefox68/Makefile b/www/firefox68/Makefile index c63d7543403..2b1f53027b0 100644 --- a/www/firefox68/Makefile +++ b/www/firefox68/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.24 2020/06/14 20:19:43 nia Exp $ +# $NetBSD: Makefile,v 1.25 2020/06/15 10:04:03 nia Exp $ FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR} MOZ_BRANCH= 68.9 @@ -6,6 +6,7 @@ MOZ_BRANCH_MINOR= .0esr DISTNAME= firefox-${FIREFOX_VER}.source PKGNAME= ${DISTNAME:S/.source//:S/b/beta/:S/esr//:S/firefox-/firefox68-/} +PKGREVISION= 1 CATEGORIES= www MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/} EXTRACT_SUFX= .tar.xz diff --git a/www/firefox68/distinfo b/www/firefox68/distinfo index 489e59e4858..00802b3f333 100644 --- a/www/firefox68/distinfo +++ b/www/firefox68/distinfo @@ -1,11 +1,11 @@ -$NetBSD: distinfo,v 1.16 2020/06/03 13:00:24 nia Exp $ +$NetBSD: distinfo,v 1.17 2020/06/15 10:04:03 nia Exp $ SHA1 (firefox-68.9.0esr.source.tar.xz) = ee6406ec1280afc24d4a90c392ff09ff5060686e RMD160 (firefox-68.9.0esr.source.tar.xz) = 6bb287d394768b137d46f4abac9111ba662b9942 SHA512 (firefox-68.9.0esr.source.tar.xz) = 98431800d80f7c680aef9eede29df8217810912a319a7f7f8c2e637c43ecd4f4e29223a417afb2a6315e825f979453ff6e6b5a575649aba5cc63ce5956375bb8 Size (firefox-68.9.0esr.source.tar.xz) = 317469120 bytes SHA1 (patch-aa) = 9f7200c411cd2217a80ec10a276c8877bc6b845c -SHA1 (patch-browser_app_profile_firefox.js) = 076cc2892547bac07fe907533f4e821f13f5738e +SHA1 (patch-browser_app_profile_firefox.js) = cf93582b68b8d4e72c3c25682ab9138e185418c8 SHA1 (patch-build_moz.configure_rust.configure) = b57a9b1451dc426d75774f73d7c05fc98fe6e317 SHA1 (patch-config_gcc-stl-wrapper.template.h) = 11b45e0c7a9399c5b74b170648280a388dd67d89 SHA1 (patch-dom_base_nsAttrName.h) = ac7ba441a3b27df2855cf2673eea36b1cb44ad49 @@ -14,12 +14,11 @@ SHA1 (patch-gfx_angle_checkout_src_common_third__party_smhasher_src_PMurHash.cpp SHA1 (patch-gfx_angle_checkout_src_compiler_translator_InfoSink.h) = 2f73c76c48852613e0c55c1680fcc2a9eb3cf4ef SHA1 (patch-gfx_gl_GLContextProviderGLX.cpp) = 2c909a10a341e600392417240ad0c556f495d6ba SHA1 (patch-gfx_skia_skia_src_core_SkCpu.cpp) = 36218819254f3681b9c717d652ea78c9f20d49ad +SHA1 (patch-gfx_thebes_gfxPlatform.cpp) = e4a25e4a96055b1c42ec018b02d1828257a571de SHA1 (patch-ipc_chromium_src_base_lock__impl__posix.cc) = d84d9b4d416e049423120dcbf9199644ce1c93ab SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 4a6606da590cfb8d855bde58b9c6f90e98d0870c SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = 35d20981d33ccdb1d8ffb8039e48798777f11658 SHA1 (patch-ipc_chromium_src_chrome_common_ipc__channel__posix.cc) = d634805bf3b02475081cb2f263e91e3f4c481a29 -SHA1 (patch-ipc_glue_CrossProcessSemaphore.h) = 25e24743060acf10c776c6b3b3660f52a2e9fbe8 -SHA1 (patch-ipc_glue_CrossProcessSemaphore__posix.cpp) = f8d155ee66008b7cc4052b6a889327543b89e0bb SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = 260c29bacd8bf265951b7a412f850bf2b292c836 SHA1 (patch-js_src_threading_posix_Thread.cpp) = 47e612a676e614fd6dd43b8a3140218a3fbdc7fa SHA1 (patch-js_src_util_NativeStack.cpp) = 2c6f844d38343f40ebbc8fd665279256e4ae6d35 diff --git a/www/firefox68/patches/patch-browser_app_profile_firefox.js b/www/firefox68/patches/patch-browser_app_profile_firefox.js index 4d16f160871..8febde0b6b6 100644 --- a/www/firefox68/patches/patch-browser_app_profile_firefox.js +++ b/www/firefox68/patches/patch-browser_app_profile_firefox.js @@ -1,8 +1,8 @@ -$NetBSD: patch-browser_app_profile_firefox.js,v 1.1 2019/09/21 07:31:44 ryoon Exp $ +$NetBSD: patch-browser_app_profile_firefox.js,v 1.2 2020/06/15 10:04:04 nia Exp $ ---- browser/app/profile/firefox.js.orig 2019-07-06 01:48:29.000000000 +0000 +--- browser/app/profile/firefox.js.orig 2020-05-28 00:01:33.000000000 +0000 +++ browser/app/profile/firefox.js -@@ -1865,6 +1865,15 @@ pref("prio.publicKeyB", "26E6674E65425B8 +@@ -1862,6 +1862,12 @@ pref("prio.publicKeyB", "26E6674E65425B8 pref("toolkit.coverage.enabled", false); pref("toolkit.coverage.endpoint.base", "https://coverage.mozilla.org"); @@ -12,9 +12,6 @@ $NetBSD: patch-browser_app_profile_firefox.js,v 1.1 2019/09/21 07:31:44 ryoon Ex +// Enable system addons, for example langpacks from www/firefox-l10n +pref("extensions.autoDisableScopes", 11); + -+// Disable multiprocess window support. Workaround for PR 53273. -+pref("browser.tabs.remote.autostart", false); -+ // Discovery prefs pref("browser.discovery.enabled", true); pref("browser.discovery.containers.enabled", true); diff --git a/www/firefox68/patches/patch-gfx_thebes_gfxPlatform.cpp b/www/firefox68/patches/patch-gfx_thebes_gfxPlatform.cpp new file mode 100644 index 00000000000..330d0b9e601 --- /dev/null +++ b/www/firefox68/patches/patch-gfx_thebes_gfxPlatform.cpp @@ -0,0 +1,28 @@ +$NetBSD: patch-gfx_thebes_gfxPlatform.cpp,v 1.1 2020/06/15 10:04:04 nia Exp $ + +Don't rely on CrossProcessSemaphore on NetBSD. It has some implementation +issues that cause issues (kern/55386, not available on NetBSD<9) + +This idea is borrowed from macOS which has the same limitation. + +--- gfx/thebes/gfxPlatform.cpp.orig 2020-05-28 00:01:45.000000000 +0000 ++++ gfx/thebes/gfxPlatform.cpp +@@ -2991,6 +2991,10 @@ bool gfxPlatform::UsesOffMainThreadCompo + } + + bool gfxPlatform::UsesTiling() const { ++#ifdef __NetBSD__ ++ // Avoid relying on CrossProcessSemaphore ++ return true; ++#else + bool usesSkia = GetDefaultContentBackend() == BackendType::SKIA; + + // We can't just test whether the PaintThread is initialized here because +@@ -3002,6 +3006,7 @@ bool gfxPlatform::UsesTiling() const { + + return gfxPrefs::LayersTilesEnabled() || + (gfxPrefs::LayersTilesEnabledIfSkiaPOMTP() && usesSkia && usesPOMTP); ++#endif + } + + bool gfxPlatform::ContentUsesTiling() const { diff --git a/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore.h b/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore.h deleted file mode 100644 index df53fc7ecf1..00000000000 --- a/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore.h +++ /dev/null @@ -1,18 +0,0 @@ -$NetBSD: patch-ipc_glue_CrossProcessSemaphore.h,v 1.1 2019/09/21 07:31:44 ryoon Exp $ - ---- ipc/glue/CrossProcessSemaphore.h.orig 2018-10-18 20:06:06.000000000 +0000 -+++ ipc/glue/CrossProcessSemaphore.h -@@ -93,7 +93,13 @@ private: - HANDLE mSemaphore; - #elif !defined(OS_MACOSX) - RefPtr<mozilla::ipc::SharedMemoryBasic> mSharedBuffer; -+#if defined(__NetBSD__) -+ pthread_mutex_t* mMutex; -+ pthread_cond_t* mNotZero; -+ uint32_t* mValue; -+#else - sem_t* mSemaphore; -+#endif - mozilla::Atomic<int32_t>* mRefCount; - #endif - }; diff --git a/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore__posix.cpp b/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore__posix.cpp deleted file mode 100644 index c5a21569f0b..00000000000 --- a/www/firefox68/patches/patch-ipc_glue_CrossProcessSemaphore__posix.cpp +++ /dev/null @@ -1,187 +0,0 @@ -$NetBSD: patch-ipc_glue_CrossProcessSemaphore__posix.cpp,v 1.1 2019/09/21 07:31:44 ryoon Exp $ - ---- ipc/glue/CrossProcessSemaphore_posix.cpp.orig 2019-01-18 00:20:30.000000000 +0000 -+++ ipc/glue/CrossProcessSemaphore_posix.cpp -@@ -9,6 +9,11 @@ - #include "nsDebug.h" - #include "nsISupportsImpl.h" - #include <errno.h> -+#if defined(__NetBSD__) -+#include <iostream> -+#include <unistd.h> -+#include <limits> -+#endif - - static const uint64_t kNsPerMs = 1000000; - static const uint64_t kNsPerSec = 1000000000; -@@ -16,7 +21,13 @@ static const uint64_t kNsPerSec = 100000 - namespace { - - struct SemaphoreData { -+#if defined(__NetBSD__) -+ pthread_mutex_t mMutex; -+ pthread_cond_t mNotZero; -+ uint32_t mValue; -+#else - sem_t mSemaphore; -+#endif - mozilla::Atomic<int32_t> mRefCount; - uint32_t mInitialValue; - }; -@@ -42,13 +53,27 @@ namespace mozilla { - return nullptr; - } - -+#if defined(__NetBSD__) -+ data->mValue = aInitialValue; -+ if (pthread_mutex_init(&data->mMutex, NULL) || -+ pthread_cond_init(&data->mNotZero, NULL) ) { -+ return nullptr; -+ } -+#else - if (sem_init(&data->mSemaphore, 1, aInitialValue)) { - return nullptr; - } -+#endif - - CrossProcessSemaphore* sem = new CrossProcessSemaphore; - sem->mSharedBuffer = sharedBuffer; -+#if defined(__NetBSD__) -+ sem->mMutex = &data->mMutex; -+ sem->mNotZero = &data->mNotZero; -+ sem->mValue = &data->mValue; -+#else - sem->mSemaphore = &data->mSemaphore; -+#endif - sem->mRefCount = &data->mRefCount; - *sem->mRefCount = 1; - -@@ -83,23 +108,44 @@ namespace mozilla { - - int32_t oldCount = data->mRefCount++; - if (oldCount == 0) { -+#if defined(__NetBSD__) -+ if (pthread_mutex_init(&data->mMutex, NULL) || -+ pthread_cond_init(&data->mNotZero, NULL) ) { -+ data->mRefCount--; -+ return nullptr; -+ } -+#else - // The other side has already let go of their CrossProcessSemaphore, so now - // mSemaphore is garbage. We need to re-initialize it. - if (sem_init(&data->mSemaphore, 1, data->mInitialValue)) { - data->mRefCount--; - return nullptr; - } -+#endif - } - - CrossProcessSemaphore* sem = new CrossProcessSemaphore; - sem->mSharedBuffer = sharedBuffer; -+#if defined(__NetBSD__) -+ sem->mMutex = &data->mMutex; -+ sem->mNotZero = &data->mNotZero; -+ sem->mValue = &data->mValue; -+#else - sem->mSemaphore = &data->mSemaphore; -+#endif - sem->mRefCount = &data->mRefCount; - return sem; - } - - CrossProcessSemaphore::CrossProcessSemaphore() -- : mSemaphore(nullptr), mRefCount(nullptr) { -+#if defined(__NetBSD__) -+ : mMutex (nullptr) -+ , mNotZero (nullptr) -+ , mValue (nullptr) -+#else -+ : mSemaphore(nullptr) -+#endif -+ , mRefCount(nullptr) { - MOZ_COUNT_CTOR(CrossProcessSemaphore); - } - -@@ -108,16 +154,57 @@ CrossProcessSemaphore::~CrossProcessSema - - if (oldCount == 0) { - // Nothing can be done if the destroy fails so ignore return code. -+#if defined(__NetBSD__) -+ (void)pthread_cond_destroy(mNotZero); -+ (void)pthread_mutex_destroy(mMutex); -+#else - Unused << sem_destroy(mSemaphore); -+#endif - } - - MOZ_COUNT_DTOR(CrossProcessSemaphore); - } - -+#if defined(__NetBSD__) -+static struct timespec -+makeAbsTime(const Maybe<TimeDuration>& aWaitTime) { -+ struct timespec ts; -+ if (aWaitTime.isSome()) { -+ clock_gettime(CLOCK_REALTIME, &ts); -+ ts.tv_nsec += (kNsPerMs * aWaitTime->ToMilliseconds()); -+ ts.tv_sec += ts.tv_nsec / kNsPerSec; -+ ts.tv_nsec %= kNsPerSec; -+ } -+ else { -+ ts.tv_sec = std::numeric_limits<time_t>::max(); -+ ts.tv_nsec = 0; -+ } -+ return ts; -+} -+#endif -+ - bool CrossProcessSemaphore::Wait(const Maybe<TimeDuration>& aWaitTime) { - MOZ_ASSERT(*mRefCount > 0, - "Attempting to wait on a semaphore with zero ref count"); - int ret; -+#if defined(__NetBSD__) -+ struct timespec ts = makeAbsTime(aWaitTime); -+ -+ ret = pthread_mutex_lock(mMutex); -+ -+ if (ret == 0) { -+ while (ret == 0 && mValue == 0) { -+ ret = pthread_cond_timedwait(mNotZero, mMutex, &ts); -+ while (ret == -1 && errno == EINTR) { -+ ret = pthread_cond_timedwait(mNotZero, mMutex, &ts); -+ } -+ } -+ if (ret == 0) { -+ --(*mValue); -+ } -+ pthread_mutex_unlock(mMutex); -+ } -+#else - if (aWaitTime.isSome()) { - struct timespec ts; - if (clock_gettime(CLOCK_REALTIME, &ts) == -1) { -@@ -134,13 +221,24 @@ bool CrossProcessSemaphore::Wait(const M - while ((ret = sem_wait(mSemaphore)) == -1 && errno == EINTR) { - } - } -+#endif - return ret == 0; - } - - void CrossProcessSemaphore::Signal() { - MOZ_ASSERT(*mRefCount > 0, - "Attempting to signal a semaphore with zero ref count"); -+#if defined(__NetBSD__) -+ int ret; -+ ret = pthread_mutex_lock(mMutex); -+ if (ret == 0) { -+ ++(*mValue); -+ pthread_cond_signal(mNotZero); -+ pthread_mutex_unlock(mMutex); -+ } -+#else - sem_post(mSemaphore); -+#endif - } - - CrossProcessSemaphoreHandle CrossProcessSemaphore::ShareToProcess( |