mail/thunderbird: update to 137.0 (rc1)

Release Notes (soon):
  https://www.thunderbird.net/en-US/thunderbird/137.0/releasenotes/

Mention the big upgrade and the new thunderbird-esr port in UPDATING.
This commit is contained in:
Christoph Moench-Tegeder 2025-03-27 20:08:07 +01:00
parent a9097e0cd9
commit 7eb19a67e0
11 changed files with 23929 additions and 12779 deletions

View file

@ -5,6 +5,15 @@ they are unavoidable.
You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.
20250327:
AFFECTS: users of thunderbird
AUTHOR: cmt@FreeBSD.org
The mail/thunderbird port switched to Thunderbird's new release train,
with frequent major releases (ca. 4-weeks-cycle). Users wanting to
stay with the 128-releases for now and the ESR releases in general
should switch to the mail/thunderbird-esr port.
20250325:
AFFECTS: users of TeX*
AUTHOR: bofh@FreeBSD.org

View file

@ -1,22 +1,22 @@
PORTNAME= thunderbird
DISTVERSION= 128.9.0
DISTVERSION= 137.0
CATEGORIES= mail news net-im wayland
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}esr-candidates/build1/source
DISTFILES= ${DISTNAME}esr.source${EXTRACT_SUFX}
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= Mozilla Thunderbird is standalone mail and news that stands above
WWW= https://www.mozilla.com/thunderbird/
BUILD_DEPENDS= nspr>=4.32:devel/nspr \
nss>=3.101:security/nss \
nss>=3.109:security/nss \
libevent>=2.1.8:devel/libevent \
harfbuzz>=8.5.0:print/harfbuzz \
harfbuzz>=10.1.0:print/harfbuzz \
graphite2>=1.3.14:graphics/graphite2 \
png>=1.6.43:graphics/png \
png>=1.6.45:graphics/png \
dav1d>=1.0.0:multimedia/dav1d \
libvpx>=1.14.0:multimedia/libvpx \
libvpx>=1.15.0:multimedia/libvpx \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
v4l_compat>0:multimedia/v4l_compat \
autoconf2.13:devel/autoconf2.13 \
@ -29,12 +29,16 @@ BUILD_DEPENDS= nspr>=4.32:devel/nspr \
LIB_DEPENDS= libjson-c.so:devel/json-c
USE_GECKO= gecko
# cannot use system icu: calendar is completely broken by
CONFLICTS_INSTALL= thunderbird-esr
# cannot use system icu: too old on 2025Q1
# before re-enabling, check:
# https://unicode-org.atlassian.net/browse/ICU-22132 (fix not in 74.1)
USE_MOZILLA= -icu -sqlite
CFLAGS_powerpc64le= -DSQLITE_BYTEORDER=1234
USES= tar:xz
# helpful when testing beta
WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
MOZ_OPTIONS= --enable-application=comm/mail --enable-official-branding
MOZ_OPTIONS+= --with-system-bz2 --with-system-jsonc

View file

@ -1,3 +1,3 @@
TIMESTAMP = 1742928407
SHA256 (thunderbird-128.9.0esr.source.tar.xz) = 735579c7fd7018ef16ad3b28ba3f254d957da33435b3b1af945d95fd20f9407b
SIZE (thunderbird-128.9.0esr.source.tar.xz) = 676939592
TIMESTAMP = 1743079619
SHA256 (thunderbird-137.0.source.tar.xz) = e4b103686f264339f322501f4d2591cfd8e90e8c105a1ce9d99941db096c342c
SIZE (thunderbird-137.0.source.tar.xz) = 719178836

View file

@ -1,131 +0,0 @@
commit 25a5572d5cd137aa6d893e09a00bd39908a59a18
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
Date: Tue Sep 10 22:23:32 2024 +0200
based on:
commit 717bba28411c
Author: Jory A. Pratt <anarchy@gentoo.org>
Date: Thu Jun 13 11:53:00 2019 -0700
Bug 1559213 - Allow to use system av1 libs instead of bundled.
diff --git config/external/moz.build config/external/moz.build
index a24b470396cf..547f5f5c9e04 100644
--- config/external/moz.build
+++ config/external/moz.build
@@ -40,8 +40,9 @@ if not CONFIG["MOZ_SYSTEM_LIBVPX"]:
external_dirs += ["media/libvpx"]
if CONFIG["MOZ_AV1"]:
- external_dirs += ["media/libaom"]
- external_dirs += ["media/libdav1d"]
+ if not CONFIG["MOZ_SYSTEM_AV1"]:
+ external_dirs += ["media/libaom"]
+ external_dirs += ["media/libdav1d"]
if not CONFIG["MOZ_SYSTEM_PNG"]:
external_dirs += ["media/libpng"]
diff --git dom/media/platforms/moz.build dom/media/platforms/moz.build
index 61536cc6e225..29cf635bbb44 100644
--- dom/media/platforms/moz.build
+++ dom/media/platforms/moz.build
@@ -71,6 +71,11 @@ if CONFIG["MOZ_AV1"]:
"agnostic/AOMDecoder.cpp",
"agnostic/DAV1DDecoder.cpp",
]
+ if CONFIG['MOZ_SYSTEM_AV1']:
+ CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
+ CXXFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
if CONFIG["MOZ_OMX"]:
EXPORTS += [
diff --git media/ffvpx/libavcodec/moz.build media/ffvpx/libavcodec/moz.build
index 6f09049a6068..90a82a19a9d1 100644
--- media/ffvpx/libavcodec/moz.build
+++ media/ffvpx/libavcodec/moz.build
@@ -119,10 +119,16 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
'vp9recon.c',
'vpx_rac.c',
]
- USE_LIBS += [
- 'dav1d',
- 'media_libdav1d_asm',
- ]
+ if CONFIG["MOZ_SYSTEM_AV1"]:
+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
+ else:
+ USE_LIBS += [
+ 'dav1d',
+ 'media_libdav1d_asm',
+ ]
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
LOCAL_INCLUDES += ['/media/mozva']
SOURCES += [
diff --git media/libopus/moz.build media/libopus/moz.build
index 943aee79ee99..4ad07e3e98af 100644
--- media/libopus/moz.build
+++ media/libopus/moz.build
@@ -58,7 +58,7 @@ if not CONFIG["MOZ_SAMPLE_TYPE_FLOAT32"]:
DEFINES["FIXED_POINT"] = 1
DEFINES["DISABLE_FLOAT_API"] = True
-if CONFIG["OS_ARCH"] == "Linux":
+if CONFIG["OS_ARCH"] in ("FreeBSD", "Linux"):
OS_LIBS += [
"m",
]
diff --git media/libvorbis/moz.build media/libvorbis/moz.build
index cd17d4f89759..816edd72a000 100644
--- media/libvorbis/moz.build
+++ media/libvorbis/moz.build
@@ -45,7 +45,7 @@ LOCAL_INCLUDES += ['lib']
if CONFIG['OS_ARCH'] == 'SunOS':
DEFINES['HAVE_ALLOCA_H'] = True
-if CONFIG["OS_ARCH"] == "Linux":
+if CONFIG["OS_ARCH"] in ("FreeBSD", "Linux"):
OS_LIBS += [
"m",
]
diff --git toolkit/moz.configure toolkit/moz.configure
index 1f85d2831f2f..07294b93f850 100644
--- toolkit/moz.configure
+++ toolkit/moz.configure
@@ -883,7 +883,23 @@ def av1(value):
return True
-@depends(target, when=av1 & compile_environment)
+option("--with-system-av1",
+ help="Use system av1 (located with pkgconfig)")
+
+system_libaom_info = pkg_check_modules("MOZ_SYSTEM_LIBAOM", "aom >= 1.0.0",
+ when="--with-system-av1")
+
+system_libdav1d_info = pkg_check_modules("MOZ_SYSTEM_LIBDAV1D", "dav1d >= 0.1.1",
+ when="--with-system-av1")
+
+@depends(system_libaom_info, system_libdav1d_info)
+def system_av1(system_libaom_info, system_libdav1d_info):
+ has_av1_libs = False
+ if system_libaom_info and system_libdav1d_info:
+ has_av1_libs = True
+ return has_av1_libs
+
+@depends(target, when=av1 & depends(system_av1)(lambda v: not v) & compile_environment)
def dav1d_asm(target):
if target.cpu in ("aarch64", "x86", "x86_64"):
return True
@@ -899,6 +915,7 @@ set_config("MOZ_DAV1D_ASM", dav1d_asm)
set_define("MOZ_DAV1D_ASM", dav1d_asm)
set_config("MOZ_AV1", av1)
set_define("MOZ_AV1", av1)
+set_config("MOZ_SYSTEM_AV1", depends_if(system_av1)(lambda _: True))
# JXL Image Codec Support
# ==============================================================

View file

@ -0,0 +1,50 @@
commit 43b044fe8adaccb46868ac00c70a4e7a5d354a9c
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
Bug 1948776 - handle non-existence of MAP_NORESERVE for FreeBSD, r=afranchuk,jld,nika
The MAP_NORESERVE flag does not exist in FreeBSD. As the minimally-
invasive workaround, I decided to remove that flag directly in the
mmap() calls, instead of defining our own MAP_NORESERVE as 0
possibly far away and not obviously connected to these places.
Differential Revision: https://phabricator.services.mozilla.com/D238531
diff --git ipc/glue/SharedMemoryPlatform_posix.cpp ipc/glue/SharedMemoryPlatform_posix.cpp
index 61121bcbaf8d..b31f2200e8e6 100644
--- ipc/glue/SharedMemoryPlatform_posix.cpp
+++ ipc/glue/SharedMemoryPlatform_posix.cpp
@@ -447,8 +447,12 @@ bool Platform::Protect(char* aAddr, size_t aSize, Access aAccess) {
}
void* Platform::FindFreeAddressSpace(size_t aSize) {
- void* memory = mmap(nullptr, aSize, PROT_NONE,
- MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE, -1, 0);
+#ifndef __FreeBSD__
+ constexpr int flags = MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE;
+#else
+ constexpr int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+#endif
+ void* memory = mmap(nullptr, aSize, PROT_NONE, flags, -1, 0);
if (memory == MAP_FAILED) {
return nullptr;
}
diff --git ipc/glue/SharedMemory_posix.cpp ipc/glue/SharedMemory_posix.cpp
index da279f469237..9ed83af4b1f2 100644
--- ipc/glue/SharedMemory_posix.cpp
+++ ipc/glue/SharedMemory_posix.cpp
@@ -61,8 +61,12 @@ SharedMemory::Handle SharedMemory::CloneHandle(const Handle& aHandle) {
}
void* SharedMemory::FindFreeAddressSpace(size_t size) {
- void* memory = mmap(nullptr, size, PROT_NONE,
- MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE, -1, 0);
+#ifndef __FreeBSD__
+ constexpr int flags = MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE;
+#else
+ constexpr int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+#endif
+ void* memory = mmap(nullptr, size, PROT_NONE, flags, -1, 0);
if (memory == MAP_FAILED) {
return nullptr;
}

View file

@ -1,10 +1,10 @@
# Allow building against system-wide graphite2/harfbuzz.
Allow building against system-wide graphite2/harfbuzz
diff --git config/system-headers.mozbuild config/system-headers.mozbuild
index 0c06f581b33b..10f125be25ab 100644
index af44c89057fc..c0ac271917fb 100644
--- config/system-headers.mozbuild
+++ config/system-headers.mozbuild
@@ -1307,6 +1307,19 @@ if CONFIG["MOZ_ENABLE_LIBPROXY"]:
@@ -1304,6 +1304,19 @@ if CONFIG["MOZ_ENABLE_LIBPROXY"]:
"proxy.h",
]
@ -25,10 +25,10 @@ index 0c06f581b33b..10f125be25ab 100644
system_headers += [
"unicode/calendar.h",
diff --git dom/base/moz.build dom/base/moz.build
index 14c9f9dd96fb..bd1c8f241e9b 100644
index 170d19f09aa9..a47fc8b1193c 100644
--- dom/base/moz.build
+++ dom/base/moz.build
@@ -606,6 +606,9 @@ FINAL_LIBRARY = "xul"
@@ -620,6 +620,9 @@ FINAL_LIBRARY = "xul"
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
@ -40,7 +40,7 @@ index 14c9f9dd96fb..bd1c8f241e9b 100644
script="gen-usecounters.py",
diff --git gfx/graphite2/geckoextra/moz.build gfx/graphite2/geckoextra/moz.build
new file mode 100644
index 000000000000..24e8d7a03274
index 000000000000..ed0323eba9d5
--- /dev/null
+++ gfx/graphite2/geckoextra/moz.build
@@ -0,0 +1,21 @@
@ -104,10 +104,10 @@ index 56ea317bedfc..07dd7f66f1bc 100644
"thebes",
"ipc",
diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py
index c161d24df853..8c7dd395b371 100755
index b589efde1c5c..47f49e10df70 100755
--- gfx/skia/generate_mozbuild.py
+++ gfx/skia/generate_mozbuild.py
@@ -91,6 +91,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
@@ -95,6 +95,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
'-Wno-unused-private-field',
]
@ -118,10 +118,10 @@ index c161d24df853..8c7dd395b371 100755
LOCAL_INCLUDES += [
"/gfx/cairo/cairo/src",
diff --git gfx/skia/moz.build gfx/skia/moz.build
index 83aa2957a938..0859316a1f09 100644
index 7fee54534878..ba1a4038e4a0 100644
--- gfx/skia/moz.build
+++ gfx/skia/moz.build
@@ -601,6 +601,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
@@ -623,6 +623,9 @@ if CONFIG['CC_TYPE'] in ('clang', 'clang-cl'):
'-Wno-unused-private-field',
]
@ -132,10 +132,10 @@ index 83aa2957a938..0859316a1f09 100644
LOCAL_INCLUDES += [
"/gfx/cairo/cairo/src",
diff --git gfx/thebes/moz.build gfx/thebes/moz.build
index fd1fcf236d81..958d3f699ffd 100644
index 48f2849e2025..7d0a161a91b4 100644
--- gfx/thebes/moz.build
+++ gfx/thebes/moz.build
@@ -293,7 +293,13 @@ if CONFIG["MOZ_WAYLAND"]:
@@ -295,7 +295,13 @@ if CONFIG["MOZ_WAYLAND"]:
LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"]
@ -151,7 +151,7 @@ index fd1fcf236d81..958d3f699ffd 100644
CXXFLAGS += ["-Werror=switch"]
diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build
index 2bbd00415cae..f66bd37695d4 100644
index 2396210428ee..092baac6f79c 100644
--- intl/unicharutil/util/moz.build
+++ intl/unicharutil/util/moz.build
@@ -24,6 +24,9 @@ UNIFIED_SOURCES += [
@ -165,10 +165,10 @@ index 2bbd00415cae..f66bd37695d4 100644
GeneratedFile(
diff --git netwerk/dns/moz.build netwerk/dns/moz.build
index c926d14707d1..35a3f33e2885 100644
index 1bb0430f01aa..0360e0f468c0 100644
--- netwerk/dns/moz.build
+++ netwerk/dns/moz.build
@@ -112,6 +112,9 @@ GeneratedFile(
@@ -111,6 +111,9 @@ GeneratedFile(
"etld_data.inc", script="prepare_tlds.py", inputs=["effective_tld_names.dat"]
)
@ -179,10 +179,10 @@ index c926d14707d1..35a3f33e2885 100644
LOCAL_INCLUDES += [
"/netwerk/base",
diff --git old-configure.in old-configure.in
index 2ca88a20a4b3..88bc9b873eff 100644
index 1af75c496b15..f1c7d7c48d28 100644
--- old-configure.in
+++ old-configure.in
@@ -1067,6 +1067,27 @@ fi
@@ -167,6 +167,27 @@ fi
AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
AC_SUBST(MOZ_MACBUNDLE_ID)
@ -210,11 +210,24 @@ index 2ca88a20a4b3..88bc9b873eff 100644
dnl ========================================================
dnl = Child Process Name for IPC
dnl ========================================================
diff --git security/rlbox/moz.build security/rlbox/moz.build
index 7ad8d076f0f1..835b9d905e03 100644
--- security/rlbox/moz.build
+++ security/rlbox/moz.build
@@ -47,6 +47,8 @@ if CONFIG["MOZ_WASM_SANDBOXING_GRAPHITE"]:
for k, v in graphite_defines:
WASM_DEFINES[k] = v
LOCAL_INCLUDES += ["/gfx/graphite2/src"]
+ if CONFIG["MOZ_SYSTEM_GRAPHITE2"]:
+ WASM_CXXFLAGS += CONFIG["MOZ_GRAPHITE2_CFLAGS"]
if CONFIG["MOZ_WASM_SANDBOXING_OGG"]:
include("/media/libogg/sources.mozbuild")
diff --git toolkit/library/moz.build toolkit/library/moz.build
index 76746f308011..f6844f4c400b 100644
index ee6051567c8e..c24a5a513bbc 100644
--- toolkit/library/moz.build
+++ toolkit/library/moz.build
@@ -292,6 +292,12 @@ if CONFIG["MOZ_SYSTEM_PNG"]:
@@ -298,6 +298,12 @@ if CONFIG["MOZ_SYSTEM_PNG"]:
if CONFIG["MOZ_SYSTEM_WEBP"]:
OS_LIBS += CONFIG["MOZ_WEBP_LIBS"]
@ -228,10 +241,10 @@ index 76746f308011..f6844f4c400b 100644
OS_LIBS += CONFIG["MOZ_LIBEVENT_LIBS"]
diff --git toolkit/moz.configure toolkit/moz.configure
index a060a59f728f..f0778d1ae2d6 100644
index 1f85d2831f2f..04ce56e2cc0b 100644
--- toolkit/moz.configure
+++ toolkit/moz.configure
@@ -1218,6 +1218,26 @@ def enable_cairo_ft(target, tree_freetype, freetype2_info):
@@ -1397,6 +1397,26 @@ def enable_cairo_ft(target, tree_freetype, freetype2_info):
set_config("MOZ_ENABLE_CAIRO_FT", True, when=enable_cairo_ft)
set_config("CAIRO_FT_CFLAGS", ft2_info.cflags, when=enable_cairo_ft)

View file

@ -1,13 +1,13 @@
commit cb7967f55ab2f34635a10da523f277083ebd97a5
Author: Christoph Moench-Tegeder <cmt@FreeBSD.org>
commit e884ff2873b6ef8f3c8ee0a09e7651f46b3add95
Author: Christoph Moench-Tegeder <cmt@burggraben.net>
chase gn_processor.py changes
chase gn_processor.py move
diff --git python/mozbuild/mozbuild/gn_processor.py python/mozbuild/mozbuild/gn_processor.py
index 3a9b9e7f3b..656a28ae6a 100644
--- python/mozbuild/mozbuild/gn_processor.py
+++ python/mozbuild/mozbuild/gn_processor.py
@@ -185,6 +185,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target):
diff --git build/gn_processor.py build/gn_processor.py
index 2ba8b92c27..962479b228 100644
--- build/gn_processor.py
+++ build/gn_processor.py
@@ -186,6 +186,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target):
}
oses = {
"android": "Android",
@ -15,7 +15,7 @@ index 3a9b9e7f3b..656a28ae6a 100644
"linux": "Linux",
"mac": "Darwin",
"openbsd": "OpenBSD",
@@ -742,17 +743,17 @@ def main():
@@ -780,17 +781,17 @@ def main():
vars_set = []
for is_debug in (True, False):
@ -31,14 +31,14 @@ index 3a9b9e7f3b..656a28ae6a 100644
+ if target_os in ("android", "freebsd", "linux", "win"):
target_cpus.append("x86")
- if target_os in ("linux", "openbsd"):
+ if target_os in ("freebsd", "linux", "openbsd"):
+ if target_os in ("linux", "freebsd", "openbsd"):
target_cpus.append("riscv64")
- if target_os == "linux":
+ if target_os in ("freebsd", "linux"):
target_cpus.extend(["ppc64", "mipsel", "mips64el"])
target_cpus.extend(["loong64", "ppc64", "mipsel", "mips64el"])
for target_cpu in target_cpus:
vars = {
@@ -761,7 +762,7 @@ def main():
@@ -799,7 +800,7 @@ def main():
"target_cpu": target_cpu,
"target_os": target_os,
}

View file

@ -1,13 +0,0 @@
diff --git gfx/skia/skia/src/core/SkRasterPipeline.h gfx/skia/skia/src/core/SkRasterPipeline.h
index 2475ea0d398d..67967483656d 100644
--- gfx/skia/skia/src/core/SkRasterPipeline.h
+++ gfx/skia/skia/src/core/SkRasterPipeline.h
@@ -27,7 +27,7 @@ struct SkImageInfo;
struct skcms_TransferFunction;
#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \
- !defined(SK_CPU_LOONGARCH)
+ !defined(SK_CPU_LOONGARCH) && !defined(__powerpc__)
#define SK_HAS_MUSTTAIL 1
#else
#define SK_HAS_MUSTTAIL 0

File diff suppressed because it is too large Load diff

View file

@ -1,30 +1,17 @@
commit 6e6860b4ecb7cea4ecbc07f45f491c562d1a83e7
commit 79334dba3e5be4a7bb17a22b2fde70933991d6f4
Author: Christoph Moench-Tegeder <cmt@FreeBSD.org>
enable pipewire on bsd
diff --git third_party/libwebrtc/BUILD.gn third_party/libwebrtc/BUILD.gn
index 85ead4162f..7dc64543dc 100644
--- third_party/libwebrtc/BUILD.gn
+++ third_party/libwebrtc/BUILD.gn
@@ -107,7 +107,7 @@ if (!build_with_chromium && !build_with_mozilla) {
"tools_webrtc/perf:webrtc_dashboard_upload",
]
}
- if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
deps += [ "modules/desktop_capture:shared_screencast_stream_test" ]
}
}
diff --git third_party/libwebrtc/build/config/BUILDCONFIG.gn third_party/libwebrtc/build/config/BUILDCONFIG.gn
index 571ae5f0d6..863d428fc6 100644
--- third_party/libwebrtc/build/config/BUILDCONFIG.gn
+++ third_party/libwebrtc/build/config/BUILDCONFIG.gn
diff --git third_party/chromium/build/config/BUILDCONFIG.gn third_party/chromium/build/config/BUILDCONFIG.gn
index 889bdb9235..1566833175 100644
--- third_party/chromium/build/config/BUILDCONFIG.gn
+++ third_party/chromium/build/config/BUILDCONFIG.gn
@@ -132,6 +132,7 @@ declare_args() {
# Set to true when compiling with the Clang compiler.
is_clang = current_os != "linux" || current_os == "openbsd" ||
+ current_os == "freebsd" ||
+ current_os != "freebsd" ||
(current_cpu != "s390x" && current_cpu != "s390" &&
current_cpu != "ppc64" && current_cpu != "ppc" &&
current_cpu != "mips" && current_cpu != "mips64" &&
@ -35,17 +22,17 @@ index 571ae5f0d6..863d428fc6 100644
- if (host_os == "linux" || host_os == "openbsd") {
+ if (host_os == "linux" || host_os == "openbsd" || host_os == "freebsd") {
if (target_os != "linux") {
host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
host_toolchain = "//chromium/build/toolchain/linux:clang_$host_cpu"
} else if (is_clang) {
@@ -222,7 +223,7 @@ if (target_os == "android") {
assert(host_os == "linux" || host_os == "mac",
"Android builds are only supported on Linux and Mac hosts.")
_default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
_default_toolchain = "//chromium/build/toolchain/android:android_clang_$target_cpu"
-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
+} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd" || target_os == "freebsd") {
# See comments in build/toolchain/cros/BUILD.gn about board compiles.
if (is_clang) {
_default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
_default_toolchain = "//chromium/build/toolchain/linux:clang_$target_cpu"
@@ -288,7 +289,7 @@ is_chromeos = current_os == "chromeos"
is_fuchsia = current_os == "fuchsia"
is_ios = current_os == "ios"
@ -55,11 +42,24 @@ index 571ae5f0d6..863d428fc6 100644
is_mac = current_os == "mac"
is_nacl = current_os == "nacl"
is_win = current_os == "win" || current_os == "winuwp"
diff --git third_party/libwebrtc/BUILD.gn third_party/libwebrtc/BUILD.gn
index 14c47ef2be..31a86a41c0 100644
--- third_party/libwebrtc/BUILD.gn
+++ third_party/libwebrtc/BUILD.gn
@@ -110,7 +110,7 @@ if (!build_with_chromium && !build_with_mozilla) {
"tools_webrtc/perf:webrtc_dashboard_upload",
]
}
- if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
deps += [ "modules/desktop_capture:shared_screencast_stream_test" ]
}
}
diff --git third_party/libwebrtc/modules/desktop_capture/BUILD.gn third_party/libwebrtc/modules/desktop_capture/BUILD.gn
index 0634e0e9c4..d5deba7ee7 100644
index 2f99e3f75f..7dc6c36aab 100644
--- third_party/libwebrtc/modules/desktop_capture/BUILD.gn
+++ third_party/libwebrtc/modules/desktop_capture/BUILD.gn
@@ -75,7 +75,7 @@ if (rtc_include_tests) {
@@ -74,7 +74,7 @@ if (rtc_include_tests) {
"window_finder_unittest.cc",
]
@ -68,7 +68,7 @@ index 0634e0e9c4..d5deba7ee7 100644
configs += [ "../portal:gio" ]
}
@@ -87,7 +87,7 @@ if (rtc_include_tests) {
@@ -86,7 +86,7 @@ if (rtc_include_tests) {
}
}
@ -77,7 +77,7 @@ index 0634e0e9c4..d5deba7ee7 100644
rtc_test("shared_screencast_stream_test") {
testonly = true
@@ -146,7 +146,7 @@ if (rtc_include_tests) {
@@ -145,7 +145,7 @@ if (rtc_include_tests) {
"test_utils_unittest.cc",
]
@ -86,16 +86,7 @@ index 0634e0e9c4..d5deba7ee7 100644
configs += [ "../portal:gio" ]
}
@@ -255,7 +255,7 @@ if (rtc_include_tests) {
"mock_desktop_capturer_callback.h",
]
- if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
configs += [ "../portal:gio" ]
}
@@ -268,7 +268,7 @@ if (rtc_include_tests) {
@@ -267,7 +267,7 @@ if (rtc_include_tests) {
}
# TODO(bugs.webrtc.org/14187): remove when all users are gone
@ -104,7 +95,7 @@ index 0634e0e9c4..d5deba7ee7 100644
config("pipewire_config") {
configs = [ "../portal:pipewire_config" ]
}
@@ -326,7 +326,7 @@ rtc_library("desktop_capture") {
@@ -329,7 +329,7 @@ rtc_library("desktop_capture") {
"window_finder.cc",
"window_finder.h",
]
@ -114,10 +105,10 @@ index 0634e0e9c4..d5deba7ee7 100644
}
if (is_mac) {
diff --git third_party/libwebrtc/modules/portal/BUILD.gn third_party/libwebrtc/modules/portal/BUILD.gn
index d7768b2323..3593a69592 100644
index 6828388b31..7e1857d861 100644
--- third_party/libwebrtc/modules/portal/BUILD.gn
+++ third_party/libwebrtc/modules/portal/BUILD.gn
@@ -10,7 +10,7 @@ import("//build/config/linux/pkg_config.gni")
@@ -10,7 +10,7 @@ import("//chromium/build/config/linux/pkg_config.gni")
import("//tools/generate_stubs/rules.gni")
import("../../webrtc.gni")
@ -127,10 +118,10 @@ index d7768b2323..3593a69592 100644
pkg_config("gio") {
packages = [
diff --git third_party/libwebrtc/webrtc.gni third_party/libwebrtc/webrtc.gni
index e1273475b9..9bdbd7ec5e 100644
index 7155b1db72..22ed06166a 100644
--- third_party/libwebrtc/webrtc.gni
+++ third_party/libwebrtc/webrtc.gni
@@ -157,7 +157,7 @@ declare_args() {
@@ -151,7 +151,7 @@ declare_args() {
# By default it's only enabled on desktop Linux (excludes ChromeOS) and
# only when using the sysroot as PipeWire is not available in older and
# supported Ubuntu and Debian distributions.

View file

@ -1,104 +0,0 @@
diff --git toolkit/components/processtools/ProcInfo_bsd.cpp toolkit/components/processtools/ProcInfo_bsd.cpp
index a6ff4881940c..f041ed5e50ce 100644
--- toolkit/components/processtools/ProcInfo_bsd.cpp
+++ toolkit/components/processtools/ProcInfo_bsd.cpp
@@ -18,6 +18,9 @@
#include <cstdio>
#include <cstring>
#include <unistd.h>
+#ifdef __FreeBSD__
+#include <sys/user.h>
+#endif
namespace mozilla {
@@ -50,25 +53,39 @@ ProcInfoPromise::ResolveOrRejectValue GetProcInfoSync(
}
for (const auto& request : aRequests) {
size_t size;
+#ifdef __FreeBSD__
+ int mib[4];
+ int mibsize = 4;
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_PROC;
+ mib[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD;
+ mib[3] = request.pid;
+#else
int mib[6];
+ int mibsize = 6;
mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID | KERN_PROC_SHOW_THREADS;
mib[3] = request.pid;
mib[4] = sizeof(kinfo_proc);
mib[5] = 0;
- if (sysctl(mib, 6, nullptr, &size, nullptr, 0) == -1) {
+#endif
+ if (sysctl(mib, mibsize, nullptr, &size, nullptr, 0) == -1) {
// Can't get info for this process. Skip it.
continue;
}
+#ifdef __FreeBSD__
+ auto procs = MakeUniqueFallible<kinfo_proc[]>(size / sizeof(kinfo_proc));
+#else
mib[5] = size / sizeof(kinfo_proc);
auto procs = MakeUniqueFallible<kinfo_proc[]>(mib[5]);
+#endif
if (!procs) {
result.SetReject(NS_ERROR_OUT_OF_MEMORY);
return result;
}
- if (sysctl(mib, 6, procs.get(), &size, nullptr, 0) == -1 &&
+ if (sysctl(mib, mibsize, procs.get(), &size, nullptr, 0) == -1 &&
errno != ENOMEM) {
continue;
}
@@ -84,19 +101,34 @@ ProcInfoPromise::ResolveOrRejectValue GetProcInfoSync(
bool found = false;
for (size_t i = 0; i < size / sizeof(kinfo_proc); i++) {
const auto& p = procs[i];
+#ifdef __FreeBSD__
+ if (i == 0) {
+#else
if (p.p_tid == -1) {
+#endif
// This is the process.
found = true;
+#ifdef __FreeBSD__
+ info.cpuTime = uint64_t(p.ki_runtime) * 1'000u;
+ info.memory = (p.ki_tsize + p.ki_dsize + p.ki_ssize) * getpagesize();
+#else
info.cpuTime = uint64_t(p.p_rtime_sec) * 1'000'000'000u +
uint64_t(p.p_rtime_usec) * 1'000u;
info.memory =
(p.p_vm_tsize + p.p_vm_dsize + p.p_vm_ssize) * getpagesize();
+#endif
+
} else {
// This is one of its threads.
ThreadInfo threadInfo;
+#ifdef __FreeBSD__
+ threadInfo.tid = p.ki_tid;
+ threadInfo.cpuTime = uint64_t(p.ki_runtime) * 1'000u;
+#else
threadInfo.tid = p.p_tid;
threadInfo.cpuTime = uint64_t(p.p_rtime_sec) * 1'000'000'000u +
uint64_t(p.p_rtime_usec) * 1'000u;
+#endif
info.threads.AppendElement(threadInfo);
}
}
diff --git toolkit/components/processtools/moz.build toolkit/components/processtools/moz.build
index b7c164c1b0ac..a41dad52c343 100644
--- toolkit/components/processtools/moz.build
+++ toolkit/components/processtools/moz.build
@@ -39,7 +39,7 @@ BROWSER_CHROME_MANIFESTS += ["tests/browser/browser.ini"]
# Platform-specific implementations of `ProcInfo`.
toolkit = CONFIG["MOZ_WIDGET_TOOLKIT"]
if toolkit == "gtk" or toolkit == "android":
- if CONFIG["OS_TARGET"] == "OpenBSD":
+ if CONFIG["OS_TARGET"] == "FreeBSD" or CONFIG["OS_TARGET"] == "OpenBSD":
UNIFIED_SOURCES += ["ProcInfo_bsd.cpp"]
else:
UNIFIED_SOURCES += ["ProcInfo_linux.cpp"]