diff --git a/www/firefox/Makefile b/www/firefox/Makefile index e996d41ba97c..9b2efbe2fb8a 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -1,77 +1,78 @@ # Created by: Alan Eldridge PORTNAME= firefox DISTVERSION= 103.0 +PORTREVISION= 1 PORTEPOCH= 2 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}${DISTVERSIONSUFFIX}/source \ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}${DISTVERSIONSUFFIX}-candidates/build1/source DISTFILES= ${DISTNAME}.source${EXTRACT_SUFX} MAINTAINER= gecko@FreeBSD.org COMMENT= Web browser based on the browser portion of Mozilla BUILD_DEPENDS= nspr>=4.32:devel/nspr \ nss>=3.80:security/nss \ icu>=71.1:devel/icu \ libevent>=2.1.8:devel/libevent \ harfbuzz>=4.3.0:print/harfbuzz \ graphite2>=1.3.14:graphics/graphite2 \ png>=1.6.37:graphics/png \ dav1d>=1.0.0:multimedia/dav1d \ libvpx>=1.11.0:multimedia/libvpx \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ v4l_compat>0:multimedia/v4l_compat \ autoconf2.13:devel/autoconf2.13 \ nasm:devel/nasm \ yasm:devel/yasm \ zip:archivers/zip USE_GECKO= gecko CONFLICTS_INSTALL= firefox-esr USE_MOZILLA= -sqlite CFLAGS_powerpc64le= -DSQLITE_BYTEORDER=1234 # work around bindgen not finding ICU, e.g. # dist/include/mozilla/intl/ICU4CGlue.h:8:10: fatal error: 'unicode/uenum.h' file not found, err: true CONFIGURE_ENV+= BINDGEN_CFLAGS="-I${LOCALBASE}/include" USES= tar:xz # helpful when testing beta WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION} FIREFOX_ICON= ${MOZILLA}.png FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png FIREFOX_DESKTOP= ${MOZSRC}/taskcluster/docker/${MOZILLA}-snap/${MOZILLA}.desktop MOZ_OPTIONS= --enable-application=browser \ --enable-official-branding .include "${.CURDIR}/../../www/firefox/Makefile.options" .include .if ${ARCH} == powerpc64 MOZ_OPTIONS+= --disable-webrtc --without-wasm-sandboxed-libraries .else BUILD_DEPENDS+= ${LOCALBASE}/share/wasi-sysroot/lib/wasm32-wasi/libc++abi.a:devel/wasi-libcxx \ ${LOCALBASE}/share/wasi-sysroot/lib/wasm32-wasi/libc.a:devel/wasi-libc \ ${LOCALBASE}/llvm${LLVM_DEFAULT}/lib/clang/${LLVM_VERSION}/lib/wasi/libclang_rt.builtins-wasm32.a:devel/wasi-compiler-rt${LLVM_DEFAULT} MOZ_OPTIONS+= --with-wasi-sysroot=${LOCALBASE}/share/wasi-sysroot .endif post-patch: @${REINPLACE_CMD} -e 's/%u/%U/' -e '/X-MultipleArgs/d' \ -e '/^Icon/s/=.*/=${FIREFOX_ICON:R}/' \ ${FIREFOX_DESKTOP} @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/browser/app/nsBrowserApp.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf2.13) post-install: ${INSTALL_DATA} ${FIREFOX_DESKTOP} ${STAGEDIR}${PREFIX}/share/applications/ ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${LN} -sf ${FIREFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${FIREFOX_ICON} .include diff --git a/www/firefox/files/patch-bug1779425 b/www/firefox/files/patch-bug1779425 new file mode 100644 index 000000000000..9ab5f99d3b6d --- /dev/null +++ b/www/firefox/files/patch-bug1779425 @@ -0,0 +1,48 @@ +commit 9583d02e454318568191e5c31c51c34fd1332182 +Author: Robert Mader +Date: Tue Jul 19 21:52:04 2022 +0000 + + Bug 1779425 - Check for GbmDevice before using it, r=stransky,jgilbert + + In some non-standard configurations we unexpectedly end up in this paths + without a GBM device - one example being the GPU process. Fail cleanly + instead of crashing in those cases, triggering fallback paths. + + Context: in the past DMABuf usage was tightly coupled to GBM. Since the + introduction of the surfaceless and device EGL platforms that is not + longer the case, thus we can't make checks like `IsDMABufWebGLEnabled()` + depend on the presence of a GBM device. + + Optimally all affected cases get fixed eventually. Until then and also + for future cases it makes sense to fail softly. + + Differential Revision: https://phabricator.services.mozilla.com/D152173 + +diff --git widget/gtk/DMABufSurface.cpp widget/gtk/DMABufSurface.cpp +index 92c8e75218f8..7fddb32c7cda 100644 +--- widget/gtk/DMABufSurface.cpp ++++ widget/gtk/DMABufSurface.cpp +@@ -382,6 +382,11 @@ bool DMABufSurfaceRGBA::Create(int aWidth, int aHeight, + LOGDMABUF(("DMABufSurfaceRGBA::Create() UID %d size %d x %d\n", mUID, mWidth, + mHeight)); + ++ if (!GetDMABufDevice()->GetGbmDevice()) { ++ LOGDMABUF((" Missing GbmDevice!")); ++ return false; ++ } ++ + mGmbFormat = GetDMABufDevice()->GetGbmFormat(mSurfaceFlags & DMABUF_ALPHA); + if (!mGmbFormat) { + // Requested DRM format is not supported. +@@ -1025,6 +1030,11 @@ bool DMABufSurfaceYUV::CreateYUVPlane(int aPlane, int aWidth, int aHeight, + LOGDMABUF(("DMABufSurfaceYUV::CreateYUVPlane() UID %d size %d x %d", mUID, + aWidth, aHeight)); + ++ if (!GetDMABufDevice()->GetGbmDevice()) { ++ LOGDMABUF((" Missing GbmDevice!")); ++ return false; ++ } ++ + mWidth[aPlane] = aWidth; + mHeight[aPlane] = aHeight; + mDrmFormats[aPlane] = aDrmFormat;