diff --git a/www/firefox/Makefile b/www/firefox/Makefile index 79b60a5d4133..dcba3eea57f5 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -1,74 +1,74 @@ # Created by: Alan Eldridge PORTNAME= firefox -DISTVERSION= 97.0.1 +DISTVERSION= 98.0 PORTEPOCH= 2 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-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.74:security/nss \ + nss>=3.75:security/nss \ icu>=70.1:devel/icu \ libevent>=2.1.8:devel/libevent \ - harfbuzz>=2.9.1:print/harfbuzz \ + harfbuzz>=3.1.2:print/harfbuzz \ graphite2>=1.3.14:graphics/graphite2 \ png>=1.6.37:graphics/png \ libvpx>=1.8.2:multimedia/libvpx \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ v4l_compat>0:multimedia/v4l_compat \ autoconf-2.13:devel/autoconf213 \ 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 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/autoconf-2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.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/distinfo b/www/firefox/distinfo index b5818d3397ac..63d4e03b4fd3 100644 --- a/www/firefox/distinfo +++ b/www/firefox/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1645044916 -SHA256 (firefox-97.0.1.source.tar.xz) = 3f2c87cf28645130777e875ddc9c67e8994c8d5c859f425f3ddced6fecb78d45 -SIZE (firefox-97.0.1.source.tar.xz) = 476866824 +TIMESTAMP = 1646080342 +SHA256 (firefox-98.0.source.tar.xz) = 4140c7002dafd1fa300857accbafcb92d4974795940e50887e8708023d346c91 +SIZE (firefox-98.0.source.tar.xz) = 484375888 diff --git a/www/firefox/files/patch-bug1664115 b/www/firefox/files/patch-bug1664115 index 86898c765f08..dce342a44b40 100644 --- a/www/firefox/files/patch-bug1664115 +++ b/www/firefox/files/patch-bug1664115 @@ -1,76 +1,82 @@ Revert bug 1647717 to workaround the issue of occational tab crashing when using any cubeb backends other than pulse-rust to play media. The loss of such change will be that users will not be able to do profiling on threads created by libcubeb. ---- dom/media/AudioStream.cpp.orig 2021-09-01 15:26:18.998745000 +0200 -+++ dom/media/AudioStream.cpp 2021-09-01 15:34:45.227435000 +0200 +--- dom/media/AudioStream.cpp.orig 2022-02-25 16:27:47.676236000 +0100 ++++ dom/media/AudioStream.cpp 2022-02-25 16:54:21.223904000 +0100 @@ -27,7 +27,6 @@ #endif #include "Tracing.h" #include "webaudio/blink/DenormalDisabler.h" -#include "AudioThreadRegistry.h" #include "mozilla/StaticPrefs_media.h" // Use abort() instead of exception in SoundTouch. -@@ -141,9 +140,7 @@ AudioStream::AudioStream(DataSource& aSource) - mTimeStretcher(nullptr), +@@ -144,8 +143,6 @@ + mAudioClock(aInRate), mState(INITIALIZED), mDataSource(aSource), -- mPrefillQuirk(false), - mAudioThreadId(ProfilerThreadId{}), -- mSandboxed(CubebUtils::SandboxEnabled()) {} -+ mPrefillQuirk(false) {} - - AudioStream::~AudioStream() { - LOG("deleted, state %d", mState); -@@ -582,19 +579,7 @@ +- mSandboxed(CubebUtils::SandboxEnabled()), + mPlaybackComplete(false), + mPlaybackRate(1.0f), + mPreservesPitch(true) {} +@@ -551,17 +548,6 @@ aWriter.Available()); } -bool AudioStream::CheckThreadIdChanged() { - ProfilerThreadId id = profiler_current_thread_id(); - if (id != mAudioThreadId) { - mAudioThreadId = id; +- mAudioThreadChanged = true; - return true; - } +- mAudioThreadChanged = false; - return false; -} - + void AudioStream::AssertIsOnAudioThread() const { + // This can be called right after CheckThreadIdChanged, because the audio + // thread can change when not sandboxed. +@@ -590,9 +576,6 @@ + } + long AudioStream::DataCallback(void* aBuffer, long aFrames) { -- if (!mSandboxed && CheckThreadIdChanged()) { +- if (CheckThreadIdChanged() && !mSandboxed) { - CubebUtils::GetAudioThreadRegistry()->Register(mAudioThreadId); - } WebCore::DenormalDisabler disabler; TRACE_AUDIO_CALLBACK_BUDGET(aFrames, mAudioClock.GetInputRate()); -@@ -650,9 +635,6 @@ +@@ -647,9 +630,6 @@ mDumpFile.Write(static_cast(aBuffer), aFrames * mOutChannels); - if (!mSandboxed && writer.Available() != 0) { - CubebUtils::GetAudioThreadRegistry()->Unregister(mAudioThreadId); - } return aFrames - writer.Available(); } ---- dom/media/AudioStream.h.orig 2021-09-01 15:26:35.926655000 +0200 -+++ dom/media/AudioStream.h 2021-09-01 15:35:53.435096000 +0200 -@@ -297,7 +297,6 @@ +--- dom/media/AudioStream.h.orig 2022-02-25 16:27:53.316210000 +0100 ++++ dom/media/AudioStream.h 2022-02-25 16:55:18.967535000 +0100 +@@ -323,7 +323,6 @@ template int InvokeCubeb(Function aFunction, Args&&... aArgs); - bool CheckThreadIdChanged(); + void AssertIsOnAudioThread() const; - // The monitor is held to protect all access to member variables. - Monitor mMonitor; -@@ -331,9 +330,6 @@ + soundtouch::SoundTouch* mTimeStretcher; +@@ -357,9 +356,6 @@ // the default device is used. It is set // during the Init() in decoder thread. RefPtr mSinkInfo; - // Contains the id of the audio thread, from profiler_get_thread_id. - std::atomic mAudioThreadId; - const bool mSandboxed = false; MozPromiseHolder mEndedPromise; - Atomic mPlaybackComplete; + std::atomic mPlaybackComplete; diff --git a/www/firefox/files/patch-bug1749604 b/www/firefox/files/patch-bug1749604 deleted file mode 100644 index a0195b8d00c9..000000000000 --- a/www/firefox/files/patch-bug1749604 +++ /dev/null @@ -1,249 +0,0 @@ -https://bugzilla.mozilla.org/show_bug.cgi?id=1749604 -https://hg.mozilla.org/mozilla-central/rev/f6031b5927f5 -https://hg.mozilla.org/mozilla-central/rev/c7440a6eb545 -https://github.com/mozilla/gecko-dev/commit/e6f459cd77e3 -(Avoid ~13 GB clone of moz-libwebrtc for libwebrtc regen) -(To be dropped for 98) - -Updated README.md to reflect simplified setup for generation. -Updated generate-gn-build-files.sh: - - remove dependencies on MOZ_LIBWEBRTC environment variable - - add checking for GN environment variable ---- - -diff --git a/dom/media/webrtc/third_party_build/gn-configs/README.md b/dom/media/webrtc/third_party_build/gn-configs/README.md -index bc54ba183d016..09dea1ae87833 100644 ---- dom/media/webrtc/third_party_build/gn-configs/README.md -+++ dom/media/webrtc/third_party_build/gn-configs/README.md -@@ -1,9 +1,10 @@ - # Generate new gn json files and moz.build files for building libwebrtc in our tree - --1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have at least --[Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip). -+1. If generating on macOS for Apple Silicon (cross-compiling), make sure to have -+ at least [Xcode 12.2](https://download.developer.apple.com/Developer_Tools/Xcode_12.2/Xcode_12.2.xip). - -- In addition the aarch64 Rust target will need to be installed via: `rustup target add aarch64-apple-darwin` -+ The aarch64 Rust target will need to be installed via: -+ `rustup target add aarch64-apple-darwin` - - 2. If generating on Windows 10, Visual Studio 2019 is required. Please follow - the install instructions from [here](https://firefox-source-docs.mozilla.org/setup/windows_build.html) -@@ -14,86 +15,85 @@ - - MSVC v142 - VS2019 C++ ARM64 build tools - - "Debugging Tools for Windows" is also required. -- - Under `Settings -> Apps` search for "Windows Software Development Kit" with the version -- number 10.0.19041.685. -+ - Under `Settings -> Apps` search for "Windows Software Development Kit" with -+ the version number 10.0.19041.685. - - select Modify (and allow the installer to modify) - - select Change and then click Next - - select "Debugging Tools for Windows" and then click Change. - -- And the aarch64 Rust target will need to be installed via: `rustup target add aarch64-pc-windows-msvc` -+ The aarch64 Rust target will need to be installed via: -+ `rustup target add aarch64-pc-windows-msvc` - --3. See information in `third_party/libwebrtc/README.mozilla` for the proper revision of libwebrtc -+3. See information in `third_party/libwebrtc/README.mozilla` for the proper -+ revision of libwebrtc - - libwebrtc updated from commit https://github.com/mozilla/libwebrtc/archive/149d693483e9055f574d9d65b01fe75a186b654b.tar.gz on 2020-11-30T15:48:48.472088. - third_party updated from commit https://chromium.googlesource.com/chromium/src/third_party/+archive/5dc5a4a45df9592baa8e8c5f896006d9193d8e45.tar.gz on 2020-11-30T17:00:15.612630. - -- In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b` which -- corresponds to: -+ In our current case, the revision is `149d693483e9055f574d9d65b01fe75a186b654b` -+ which corresponds to: - - mozilla-modifications-rel86 - --4. Clone Mozilla's version of libwebrtc from [libwebrtc](https://github.com/mozilla/libwebrtc) -+ This commit was made on `Thu Nov 19 14:14:00 2020`. - -- git clone https://github.com/mozilla/libwebrtc moz-libwebrtc -- export MOZ_LIBWEBRTC=`pwd`/moz-libwebrtc -- (cd moz-libwebrtc ; git checkout mozilla-modifications-rel86) -+4. Download a version of the `gn` executable that corresponds to -+ `Thu Nov 19 14:14:00 2020`. In our case, that is version `1889 (8fe02009)`. -+ -+ - [Win](https://chrome-infra-packages.appspot.com/p/gn/gn/windows-amd64/+/e_UmTHedzuu4zJ2gdpW8jrFFNnzIhThljx3jn3RMlVsC) -+ - [Linux](https://chrome-infra-packages.appspot.com/p/gn/gn/linux-amd64/+/bvBFKgehaepiKy_YhFnbiOpF38CK26N2OyE1R1jXof0C) -+ - [macOS](https://chrome-infra-packages.appspot.com/p/gn/gn/mac-amd64/+/nXvMRpyJhLhisAcnRmU5s9UZqovzMAhKAvWjax-swioC) - -- Note that branch was made on `Thu Nov 19 14:14:00 2020` -+ Find the downloaded `.zip` file, unzip and export the location of the -+ executable: - --5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git) -+ unzip gn-mac-amd64.zip && export GN=`pwd`/gn -+ unzip gn-windows-amd64.zip && export GN=`pwd`/gn.exe -+ unzip gn-linux-amd64.zip && export GN=`pwd`/gn - -- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git -- export DEPOT_TOOLS=`pwd`/depot_tools -+ On platforms that don't have pre-built `gn` executables, `ninja` and `gn` can -+ be easily built: - -- If generating files on Windows, the following steps must be completed -- from a traditional Windows Cmd prompt (cmd.exe) launched from the start -- menu or search bar. This allows `gclient` to properly bootstrap the -- required python setup. -+ git clone https://github.com/ninja-build/ninja.git -+ git clone https://gn.googlesource.com/gn -+ (cd gn && git checkout 8fe02009) -+ (cd ninja && ./configure.py --bootstrap) -+ (export NINJA=`pwd`/ninja/ninja ; cd gn && python build/gen.py && $NINJA -C out) -+ export GN=`pwd`/gn/out/gn - -- cd {depot_tools directory} -- set PATH=%CD%;%PATH% -- set DEPOT_TOOLS_WIN_TOOLCHAIN=0 -- set vs2019_install="c:\Program Files (x86)\Microsoft Visual Studio\2019\Community" -- gclient -- exit -+ On OpenBSD, a slightly newer version of `gn` is needed in order to build: - -- Now, we need to checkout a revision of `depot_tools` that corresponds to the date of -- our libwebrtc branch. The closest `depot_tools` commit to `Thu Nov 19 14:14:00 2020` is -- `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`. There is additional information on how to -- more automatically determine this [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md). -+ (cd gn && git checkout 31f2bba8) - -- (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 ) -+5. Clone `depot_tools` from [depot_tools](https://chromium.googlesource.com/chromium/tools/depot_tools.git) - --6. It is necessary to let `depot_tools` pull information into the `libwebrtc` tree as well. This can take a while. -+ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git -+ export DEPOT_TOOLS=`pwd`/depot_tools - -- (cd moz-libwebrtc ; \ -- export PATH=$DEPOT_TOOLS:$PATH ; \ -- export DEPOT_TOOLS_UPDATE=0 ; \ -- export DEPOT_TOOLS_WIN_TOOLCHAIN=0 ; \ -- gclient config https://github.com/mozilla/libwebrtc && \ -- gclient sync -D --force --reset --with_branch_heads \ -- ) -- -- Note that if one uses `gclient` sync with a different output directory `$MOZ_LIBWEBRTC_GIT` -- must be set to the original clone directory, and `$MOZ_LIBWEBRTC` needs to be set to the -- directory created by `gclient sync`. -+ Now, we need to checkout a revision of `depot_tools` that corresponds to the -+ date of our libwebrtc branch. The closest `depot_tools` commit to -+ `Thu Nov 19 14:14:00 2020` is `e7d1862b155ac3ccbef72c4d70629b5c88ffcb32`. -+ There is additional information on how to more automatically determine this -+ [here](https://chromium.googlesource.com/chromium/src/+/master/docs/building_old_revisions.md). -+ -+ (cd depot_tools ; git checkout e7d1862b155ac3ccbef72c4d70629b5c88ffcb32 ) - --7. Now it is time to generate the build files. The script should be run from the top --directory of our firefox tree. -+6. It is time to generate the build files. The script should be run from the -+ top directory of our firefox tree. - -- ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh -+ bash ./dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh - -- Debugging the generate script itself may prove useful, and one can do this by setting the DEBUG_GEN environment -- variable to a non-empty value. This will print everything that the script executes. -+ Debugging the generate script itself may prove useful, and one can do this by -+ setting the DEBUG_GEN environment variable to a non-empty value. This will -+ print everything that the script executes. - --8. Checkin all the generated/modified files and try your build! -+7. Checkin all the generated/modified files and try your build! - - # Adding new configurations to the build - --- Each new platform/architecture will require 2 new mozconfig files, -- one for the debug build and one for the non-debug build. The -- filenames follow the same pattern as the generated json files, -- `a-b-c-d.mozconfig` where: -+- Each new platform/architecture will require 2 new mozconfig files, one for the -+ debug build and one for the non-debug build. The filenames follow the same -+ pattern as the generated json files, `a-b-c-d.mozconfig` where: - - a = generating cpu (example: x64) - - b = debug (True / False) - - c = target cpu (example: x64 / arm64) -@@ -103,9 +103,9 @@ directory of our firefox tree. - - The new configs must be added to the appropriate platform section in - `generate-gn-build-files.sh`. - --**Note:** when adding new mozconfig files, especially for linux/android --configs, it is important to include the `ac_add_options ----enable-bootstrap`. This ensures switching archtectures for --"cross-compiled" generation works properly. For example, when generating --`x86` or `arm64` linux json files, it would be necessary to install additional --libraries in order for the configure step to complete. -+**Note:** when adding new mozconfig files, especially for linux/android configs, -+it is important to include the `ac_add_options --enable-bootstrap`. This -+ensures switching archtectures for "cross-compiled" generation works properly. -+For example, when generating `x86` or `arm64` linux json files, it would be -+necessary to install additional libraries in order for the configure step to -+complete. -diff --git a/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh b/dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh -index 4452b0ce76aeb..8d1acbf783514 100755 ---- dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh -+++ dom/media/webrtc/third_party_build/gn-configs/generate-gn-build-files.sh -@@ -8,33 +8,15 @@ if [ ! "x$DEBUG_GEN" = "x" ]; then - set -x - fi - --if [ "x$MOZ_LIBWEBRTC" = "x" ]; then -- echo "MOZ_LIBWEBRTC is not defined, see README.md" -+if [ "x$GN" = "x" ]; then -+ echo "GN is not defined, see README.md" - exit - fi - --if [ -d $MOZ_LIBWEBRTC ]; then -- echo "MOZ_LIBWEBRTC is $MOZ_LIBWEBRTC" -+if [ -f $GN ]; then -+ echo "GN is $GN" - else -- echo "Path $MOZ_LIBWEBRTC is not found, see README.md" -- exit --fi -- --# git clone and gclient checkout may be in different places --if [ "x$MOZ_LIBWEBRTC_GIT" = "x" ]; then -- MOZ_LIBWEBRTC_GIT=$MOZ_LIBWEBRTC --fi -- --if [ ! -d $MOZ_LIBWEBRTC_GIT/.git ]; then -- echo "No .git directory is found in the libwebrtc checkout, see README.md" -- exit --fi -- --if [ ! -d $MOZ_LIBWEBRTC/src/buildtools ]; then -- echo "Path $MOZ_LIBWEBRTC/src/buildtools is not found, see README.md" -- echo "Please run the following commands from inside $MOZ_LIBWEBRTC:" -- echo "\tgclient config https://github.com/mozilla/libwebrtc" -- echo "\tgclient sync -D --force --reset --with_branch_heads # this make take a while" -+ echo "Path $GN is not found, see README.md" - exit - fi - -@@ -115,21 +97,6 @@ fi - export PATH=$DEPOT_TOOLS:$PATH - export DEPOT_TOOLS_UPDATE=0 - --# Symlink in the buildtools and .git directories from our copy of libwebrtc. --if [ -L ./third_party/libwebrtc/buildtools ]; then -- rm ./third_party/libwebrtc/buildtools --elif [ -d ./third_party/libwebrtc/buildtools ]; then -- rm -rf ./third_party/libwebrtc/buildtools --fi --ln -s $MOZ_LIBWEBRTC/src/buildtools ./third_party/libwebrtc/ -- --if [ -L ./third_party/libwebrtc/.git ]; then -- rm ./third_party/libwebrtc/.git --elif [ -d ./third_party/libwebrtc/.git ]; then -- rm -rf ./third_party/libwebrtc/.git --fi --ln -s $MOZ_LIBWEBRTC_GIT/.git ./third_party/libwebrtc/ -- - CONFIG_DIR=dom/media/webrtc/third_party_build/gn-configs - echo "CONFIG_DIR is $CONFIG_DIR" -