diff --git a/www-client/librewolf/additional-files/mozconfig b/www-client/librewolf/additional-files/mozconfig
index 6157d33a7..0c9b9aaab 100644
--- a/www-client/librewolf/additional-files/mozconfig
+++ b/www-client/librewolf/additional-files/mozconfig
@@ -36,10 +36,6 @@ mk_add_options MOZ_TELEMETRY_REPORTING=0
# Enable
ac_add_options --enable-webrtc
-# Linker
-export LD="lld"
-export LDFLAGS="-fuse-ld=lld -Wl,--no-keep-memory -Wl,--undefined-version"
-
# Optimize
ac_add_options --enable-jit
ac_add_options --enable-optimize=-O3
diff --git a/www-client/librewolf/librewolf-139.0.1.recipe b/www-client/librewolf/librewolf-141.0.recipe
similarity index 95%
rename from www-client/librewolf/librewolf-139.0.1.recipe
rename to www-client/librewolf/librewolf-141.0.recipe
index 8ac16c700..cf08dfb40 100644
--- a/www-client/librewolf/librewolf-139.0.1.recipe
+++ b/www-client/librewolf/librewolf-141.0.recipe
@@ -12,7 +12,7 @@ COPYRIGHT="1995-2025 Mozilla Developers and Contributors"
LICENSE="MPL v2.0"
REVISION="1"
SOURCE_URI="https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/${portVersion}-1/librewolf-${portVersion}-1.source.tar.gz"
-CHECKSUM_SHA256="6979d506d7dba9644e285151f57dc682b4bfa771ae926a4762774f9972405c18"
+CHECKSUM_SHA256="59bbd2e298e56c96dd8879df2b2220d385f40d9e49d7aa843f036e9bdff61e1f"
SOURCE_DIR="librewolf-${portVersion}-1"
PATCHES="
librewolf-$portVersion.patchset
@@ -24,12 +24,15 @@ ADDITIONAL_FILES="
mozconfig
"
-ARCHITECTURES="!x86_64"
+ARCHITECTURES="x86_64"
PROVIDES="
librewolf= $portVersion
app:LibreWolf= $portVersion
"
+CONFLICTS="
+ librewolf_bin
+ "
REQUIRES="
haiku
lib:libatk_1.0
@@ -44,6 +47,7 @@ REQUIRES="
lib:libharfbuzz
lib:libintl
lib:libmediahelpers
+ lib:libnotify
lib:libnspr4
lib:libnss3
lib:libpango_1.0
@@ -60,6 +64,7 @@ BUILD_REQUIRES="
devel:libglib_2.0
devel:libgtk_3
devel:libmediahelpers
+ devel:libnotify
devel:libnspr4
devel:libnss3
devel:libpng16
@@ -147,7 +152,7 @@ INSTALL()
local APP_SIGNATURE="application/x-vnd.librewolf"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
- local MINOR="`echo "$portVersion" | cut -d. -f3`"
+ local MINOR="0"
local LONG_INFO="$SUMMARY"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
diff --git a/www-client/librewolf/patches/librewolf-139.0.1.patchset b/www-client/librewolf/patches/librewolf-141.0.patchset
similarity index 94%
rename from www-client/librewolf/patches/librewolf-139.0.1.patchset
rename to www-client/librewolf/patches/librewolf-141.0.patchset
index bd22a549f..eb6b1e5dc 100644
--- a/www-client/librewolf/patches/librewolf-139.0.1.patchset
+++ b/www-client/librewolf/patches/librewolf-141.0.patchset
@@ -13,20 +13,8 @@ Based on patches sourced from https://github.com/kenz-gelsoft/gecko-dev/
- Made additional modifications for Haiku compatibility.
- Implement remote server
-diff --git a/Cargo.lock b/Cargo.lock
-index b2d1ec6..798cffd 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -3743,7 +3743,6 @@ dependencies = [
- name = "lmdb-rkv-sys"
- version = "0.11.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "61b9ce6b3be08acefa3003c57b7565377432a89ec24476bbe72e11d101f852fe"
- dependencies = [
- "cc",
- "libc",
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index beced80..80002cd 100644
+index 4050c00..817df25 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -15,7 +15,9 @@
@@ -40,7 +28,7 @@ index beced80..80002cd 100644
#endif
#endif
-@@ -268,7 +270,7 @@ pref("browser.fixup.domainsuffixwhitelist.local", true);
+@@ -264,7 +266,7 @@ pref("browser.fixup.domainsuffixwhitelist.local", true);
// search string, that may contain a valid host, to a search engine.
pref("browser.fixup.dns_first_for_single_words", false);
@@ -49,7 +37,7 @@ index beced80..80002cd 100644
pref("general.autoScroll", false);
#else
pref("general.autoScroll", true);
-@@ -1082,7 +1084,7 @@ pref("security.allow_parent_unrestricted_js_loads", false);
+@@ -1034,7 +1036,7 @@ pref("security.allow_parent_unrestricted_js_loads", false);
pref("browser.tabs.min_inactive_duration_before_unload", 600000);
// Does middleclick paste of clipboard to new tab button
@@ -59,7 +47,7 @@ index beced80..80002cd 100644
#else
pref("browser.tabs.searchclipboardfor.middleclick", false);
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
-index 2f46cce..40092ff 100644
+index 2e76540..e3bc0dd 100644
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -6,6 +6,12 @@
@@ -75,7 +63,7 @@ index 2f46cce..40092ff 100644
#endif
#endif
-@@ -200,7 +206,7 @@
+@@ -201,7 +207,7 @@
@@ -84,7 +72,7 @@ index 2f46cce..40092ff 100644
#else
-@@ -345,10 +351,14 @@
+@@ -346,10 +352,14 @@
#ifdef XP_GNOME
@@ -127,7 +115,7 @@ index af2fc4f..e61403a 100644
LIBRARY_DEFINES["MOZ_HAS_MOZGLUE"] = True
if not CONFIG["MOZ_GLUE_IN_PROGRAM"]:
diff --git a/build/gn_processor.py b/build/gn_processor.py
-index 44c48eb..6bf9116 100644
+index 7da0a7b..684f454 100644
--- a/build/gn_processor.py
+++ b/build/gn_processor.py
@@ -184,6 +184,7 @@ def filter_gn_config(path, gn_result, sandbox_vars, input_vars, gn_target):
@@ -138,7 +126,7 @@ index 44c48eb..6bf9116 100644
"android": "Android",
"linux": "Linux",
"mac": "Darwin",
-@@ -809,7 +810,7 @@ def main():
+@@ -800,7 +801,7 @@ def main():
vars_set = []
for is_debug in (True, False):
@@ -147,7 +135,7 @@ index 44c48eb..6bf9116 100644
target_cpus = ["x64"]
if target_os in ("android", "linux", "mac", "win", "openbsd"):
target_cpus.append("arm64")
-@@ -826,7 +827,7 @@ def main():
+@@ -817,7 +818,7 @@ def main():
"host_cpu": "x64",
"is_debug": is_debug,
"target_cpu": target_cpu,
@@ -156,7 +144,7 @@ index 44c48eb..6bf9116 100644
}
if target_os == "linux":
for use_x11 in (True, False):
-@@ -835,6 +836,10 @@ def main():
+@@ -826,6 +827,10 @@ def main():
else:
if target_os == "openbsd":
vars["use_x11"] = True
@@ -166,7 +154,38 @@ index 44c48eb..6bf9116 100644
+
vars_set.append(vars)
- preprocessor = load_preprocessor(config.get("preprocessing_script", None))
+ gn_configs = []
+diff --git a/build/gyp_includes/common.gypi b/build/gyp_includes/common.gypi
+index 8acb326..a50a782 100644
+--- a/build/gyp_includes/common.gypi
++++ b/build/gyp_includes/common.gypi
+@@ -685,7 +685,7 @@
+
+ # Default to enabled PIE; this is important for ASLR but we may need to be
+ # able to turn it off for various reasons.
+- 'linux_disable_pie%': 0,
++ 'linux_disable_pie%': 1,
+
+ # The release channel that this build targets. This is used to restrict
+ # channel-specific build options, like which installer packages to create.
+@@ -2557,7 +2557,7 @@
+ 'target_conditions': [
+ ['_type=="executable"', {
+ 'ldflags': [
+- '-pie',
++ '-fPIC',
+ ],
+ }],
+ ],
+@@ -3169,7 +3169,7 @@
+ # understand slide, and get rid of the Valgrind check.
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+- '-Wl,-pie', # Position-independent executable (MH_PIE)
++ '-Wl,-fPIC', # Position-independent executable (MH_PIE)
+ ],
+ },
+ }],
diff --git a/build/moz.configure/bindgen.configure b/build/moz.configure/bindgen.configure
index af5a0cd..1d6be80 100644
--- a/build/moz.configure/bindgen.configure
@@ -194,10 +213,10 @@ index f0f4d7a..297718d 100644
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 0cc8d70..bd8899d 100644
+index 6162d68..3b8adad 100644
--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
-@@ -500,6 +500,8 @@ def split_triplet(triplet, allow_wasi=False):
+@@ -507,6 +507,8 @@ def split_triplet(triplet, allow_wasi=False):
canonical_os = canonical_kernel = "DragonFly"
elif os.startswith("freebsd"):
canonical_os = canonical_kernel = "FreeBSD"
@@ -206,7 +225,7 @@ index 0cc8d70..bd8899d 100644
elif os.startswith("netbsd"):
canonical_os = canonical_kernel = "NetBSD"
elif os.startswith("openbsd"):
-@@ -928,6 +930,15 @@ def target_is_freebsd(target):
+@@ -935,6 +937,15 @@ def target_is_freebsd(target):
set_define("XP_FREEBSD", target_is_freebsd)
@@ -223,10 +242,10 @@ index 0cc8d70..bd8899d 100644
def target_is_solaris(target):
if target.kernel == "SunOS":
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
-index 3100bc0..4f775c3 100644
+index cc42c12..c3fda1b 100644
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
-@@ -2951,7 +2951,7 @@ def security_hardening_cflags(
+@@ -2961,7 +2961,7 @@ def security_hardening_cflags(
if (
c_compiler.type == "clang"
and c_compiler.version >= "11.0.1"
@@ -236,7 +255,7 @@ index 3100bc0..4f775c3 100644
):
flags.append("-fstack-clash-protection")
diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
-index 49fbe0d..1d0531d 100644
+index ba024e8..1479348 100644
--- a/config/makefiles/rust.mk
+++ b/config/makefiles/rust.mk
@@ -134,6 +134,10 @@ ifdef DEVELOPER_OPTIONS
@@ -658,7 +677,7 @@ index d28abbc..af56adf 100644
}
diff --git a/ipc/chromium/src/base/process_util_posix.cc b/ipc/chromium/src/base/process_util_posix.cc
-index c622c58..d6cb21b 100644
+index 23b8807..aec9dc4 100644
--- a/ipc/chromium/src/base/process_util_posix.cc
+++ b/ipc/chromium/src/base/process_util_posix.cc
@@ -129,7 +129,7 @@ void CloseSuperfluousFds(void* aCtx, bool (*aShouldPreserve)(void*, int)) {
@@ -704,10 +723,10 @@ index 085e570..c7bae19 100644
}
}
diff --git a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
-index 1ff12f6..b49b16a 100644
+index 0cfd739..439aed9 100644
--- a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
+++ b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
-@@ -36,7 +36,7 @@
+@@ -37,7 +37,7 @@
# error Unsupported OS
#endif
@@ -717,10 +736,10 @@ index 1ff12f6..b49b16a 100644
# define HAVE_PIPE2 1
#endif
diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp
-index 7e41545..14c520c 100644
+index c1b1c52..5d1cefd 100644
--- a/ipc/glue/GeckoChildProcessHost.cpp
+++ b/ipc/glue/GeckoChildProcessHost.cpp
-@@ -1121,7 +1121,7 @@ Result BaseProcessLauncher::DoSetup() {
+@@ -1125,7 +1125,7 @@ Result BaseProcessLauncher::DoSetup() {
#if defined(MOZ_WIDGET_COCOA) || defined(XP_WIN)
geckoargs::sCrashReporter.Put(CrashReporter::GetChildNotificationPipe(),
mChildArgs);
@@ -730,10 +749,10 @@ index 7e41545..14c520c 100644
if (!childCrashFd) {
return Err(LaunchError("DuplicateFileHandle failed"));
diff --git a/js/src/moz.build b/js/src/moz.build
-index b6a3ccf..b196a9a 100644
+index 01fa3cb..3e15ce7 100644
--- a/js/src/moz.build
+++ b/js/src/moz.build
-@@ -507,6 +507,11 @@ elif CONFIG["OS_ARCH"] == "WASI":
+@@ -508,6 +508,11 @@ elif CONFIG["OS_ARCH"] == "WASI":
"threading/noop/NoopThread.cpp",
]
else:
@@ -775,7 +794,7 @@ index 4e4189d..37dc13a 100644
// Since we rearrange the layout for wasi via --stack-first flag for the linker
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
-index 4115b3e..2a2dfa3 100644
+index 06954b3..f9dd019 100644
--- a/js/src/wasm/WasmSignalHandlers.cpp
+++ b/js/src/wasm/WasmSignalHandlers.cpp
@@ -232,6 +232,17 @@ using namespace js::wasm;
@@ -1804,7 +1823,7 @@ index 0000000..d2385d7
+ return CUBEB_OK;
+}
diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build
-index fd6c684..92f7eb2 100644
+index 7ab524b..4c5fef4 100644
--- a/media/libcubeb/src/moz.build
+++ b/media/libcubeb/src/moz.build
@@ -30,6 +30,7 @@ if CONFIG['MOZ_SUNAUDIO']:
@@ -1853,10 +1872,10 @@ index 82a2ee5..ade709b 100644
# define MOZ_REALLY_CRASH(line) __builtin_trap()
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
-index 308f3d4..89dd6bc 100644
+index f689389..9fd2377 100644
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
-@@ -11192,6 +11192,8 @@
+@@ -11309,6 +11309,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1865,7 +1884,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11236,6 +11238,8 @@
+@@ -11353,6 +11355,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1874,7 +1893,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11269,6 +11273,8 @@
+@@ -11386,6 +11390,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1883,7 +1902,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11288,6 +11294,8 @@
+@@ -11405,6 +11411,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1892,7 +1911,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11307,6 +11315,8 @@
+@@ -11424,6 +11432,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1901,7 +1920,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11326,6 +11336,8 @@
+@@ -11443,6 +11453,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1910,7 +1929,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -11354,6 +11366,8 @@
+@@ -11471,6 +11483,8 @@
value: true
#elif defined(XP_SOLARIS)
value: true
@@ -1919,7 +1938,7 @@ index 308f3d4..89dd6bc 100644
#else
value: false
#endif
-@@ -12345,6 +12359,8 @@
+@@ -12423,6 +12437,8 @@
type: bool
#if defined(MOZ_WIDGET_ANDROID)
value: true
@@ -1929,10 +1948,10 @@ index 308f3d4..89dd6bc 100644
value: false
#endif
diff --git a/moz.configure b/moz.configure
-index 8a11d55..4db32ce 100755
+index 323b48f..5455491 100755
--- a/moz.configure
+++ b/moz.configure
-@@ -862,6 +862,8 @@ def strip_flags(flags, profiling, target):
+@@ -866,6 +866,8 @@ def strip_flags(flags, profiling, target):
# On Darwin, it tries to strip things it can't, so we need to limit its scope.
elif target.kernel == "Darwin":
return ["-x", "-S"]
@@ -2030,7 +2049,7 @@ index ac5459c..d014d11 100644
void* platformData_[6];
#endif
diff --git a/mozglue/misc/TimeStamp_posix.cpp b/mozglue/misc/TimeStamp_posix.cpp
-index 6f87118..d26267d 100644
+index c24cfac..bc22455 100644
--- a/mozglue/misc/TimeStamp_posix.cpp
+++ b/mozglue/misc/TimeStamp_posix.cpp
@@ -13,7 +13,9 @@
@@ -2221,10 +2240,10 @@ index f9fa0f6..7bb78a9 100644
long pageSize = sysconf(_SC_PAGESIZE);
long pageCount = sysconf(_SC_PHYS_PAGES);
diff --git a/python/mach/mach/site.py b/python/mach/mach/site.py
-index bbcbc44..f6107aa 100644
+index cb469db..4c047f5 100644
--- a/python/mach/mach/site.py
+++ b/python/mach/mach/site.py
-@@ -1466,6 +1466,14 @@ def _create_venv_with_pthfile(
+@@ -1509,6 +1509,14 @@ def _create_venv_with_pthfile(
_ensure_python_exe(Path(target_venv.python_path).parent)
@@ -2253,10 +2272,10 @@ index f40c9ec..09eec7d 100644
elif version:
print("Your version of Rust (%s) is too old." % version)
diff --git a/python/mozboot/mozboot/bootstrap.py b/python/mozboot/mozboot/bootstrap.py
-index 86ae1e0..bb353af 100644
+index 7460eb1..f0ca764 100644
--- a/python/mozboot/mozboot/bootstrap.py
+++ b/python/mozboot/mozboot/bootstrap.py
-@@ -35,6 +35,7 @@ from mozboot.centosfedora import CentOSFedoraBootstrapper
+@@ -33,6 +33,7 @@ from mozboot.centosfedora import CentOSFedoraBootstrapper
from mozboot.debian import DebianBootstrapper
from mozboot.freebsd import FreeBSDBootstrapper
from mozboot.gentoo import GentooBootstrapper
@@ -2264,7 +2283,7 @@ index 86ae1e0..bb353af 100644
from mozboot.mozconfig import MozconfigBuilder
from mozboot.mozillabuild import MozillaBuildBootstrapper
from mozboot.openbsd import OpenBSDBootstrapper
-@@ -331,6 +332,10 @@ class Bootstrapper:
+@@ -308,6 +309,10 @@ class Bootstrapper:
args["version"] = platform.release()
args["flavor"] = platform.system()
@@ -2383,10 +2402,10 @@ index ca05c3b..c9bf842 100644
unsigned char certFingerprint[SHA256_LENGTH];
srv = PK11_HashBuf(SEC_OID_SHA256, certFingerprint, cert->derCert.data,
diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml
-index c295360..89efcad 100644
+index 43415b9..4205288 100644
--- a/supply-chain/audits.toml
+++ b/supply-chain/audits.toml
-@@ -2546,6 +2546,12 @@ criteria = "safe-to-deploy"
+@@ -2635,6 +2635,12 @@ criteria = "safe-to-deploy"
delta = "6.0.1 -> 6.0.2"
notes = "I'm the author of the changes in this version of the crate."
@@ -2399,7 +2418,7 @@ index c295360..89efcad 100644
[[audits.goblin]]
who = "Jan-Erik Rediger "
criteria = "safe-to-deploy"
-@@ -3227,6 +3233,12 @@ criteria = "safe-to-deploy"
+@@ -3327,6 +3333,12 @@ criteria = "safe-to-deploy"
version = "0.14.0"
notes = "Victor and Myk developed this crate at Mozilla."
@@ -2413,10 +2432,10 @@ index c295360..89efcad 100644
who = "Mike Hommey "
criteria = "safe-to-deploy"
diff --git a/supply-chain/config.toml b/supply-chain/config.toml
-index cb611b3..bc8788f 100644
+index 37f99fc..9a99f8f 100644
--- a/supply-chain/config.toml
+++ b/supply-chain/config.toml
-@@ -76,6 +76,10 @@ notes = "Used for testing."
+@@ -72,6 +72,10 @@ notes = "Used for testing."
dependency-criteria = { tokio-reactor = [], tokio-threadpool = [] }
notes = "The dependencies on tokio-reactor and tokio-threadpools are just a hack to pin the version used by audioipc-{client,server}. Suppress vetting on those for the same reasons behind the policy entries."
@@ -2427,7 +2446,7 @@ index cb611b3..bc8788f 100644
[policy.gluesmith]
criteria = "safe-to-run"
notes = "Used for fuzzing."
-@@ -100,6 +104,10 @@ notes = "This crate has two testing-only dependencies which are specified as reg
+@@ -96,6 +100,10 @@ notes = "This crate has two testing-only dependencies which are specified as reg
audit-as-crates-io = false
notes = "This override is an api-compatible fork with an orthogonal implementation."
@@ -2439,7 +2458,7 @@ index cb611b3..bc8788f 100644
audit-as-crates-io = false
notes = "This was originally servo code which Bobby Holley put on crates.io some years ago and that was moved in-tree as first-party code later on."
diff --git a/testing/mozbase/mozinfo/mozinfo/mozinfo.py b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
-index ee7f8a6..972b0f3 100755
+index b3fb9d1..f226b4b 100755
--- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
+++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
@@ -104,7 +104,7 @@ elif system == "Linux":
@@ -2576,7 +2595,7 @@ index 9f3dac4..e5ef5a8 100644
*handle = dlopen(lib_name, flags);
if (!*handle) {
diff --git a/third_party/libwebrtc/BUILD.gn b/third_party/libwebrtc/BUILD.gn
-index f0f6d6a..bece87e 100644
+index 3add82d..d874ebe 100644
--- a/third_party/libwebrtc/BUILD.gn
+++ b/third_party/libwebrtc/BUILD.gn
@@ -211,7 +211,7 @@ config("common_inherited_config") {
@@ -2608,7 +2627,7 @@ index f0f6d6a..bece87e 100644
defines += [ "WEBRTC_WIN" ]
}
diff --git a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
-index 5b66f2c..57d0d45 100644
+index 2703ab2..27fb24c 100644
--- a/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
+++ b/third_party/libwebrtc/modules/desktop_capture/BUILD.gn
@@ -354,6 +354,19 @@ rtc_library("desktop_capture") {
@@ -3007,10 +3026,10 @@ index 0000000..a89b4a1
+
+} // namespace webrtc
diff --git a/third_party/libwebrtc/modules/video_capture/BUILD.gn b/third_party/libwebrtc/modules/video_capture/BUILD.gn
-index 294ef9f..02a5355 100644
+index 8a54710..514d244 100644
--- a/third_party/libwebrtc/modules/video_capture/BUILD.gn
+++ b/third_party/libwebrtc/modules/video_capture/BUILD.gn
-@@ -137,6 +137,20 @@ if (!build_with_chromium || is_linux || is_chromeos) {
+@@ -138,6 +138,20 @@ if (!build_with_chromium || is_linux || is_chromeos) {
if (is_fuchsia) {
sources += [ "video_capture_factory_null.cc" ]
}
@@ -3584,10 +3603,10 @@ index 0d12966..1fef378 100644
#else
return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo(options);
diff --git a/third_party/libwebrtc/rtc_base/BUILD.gn b/third_party/libwebrtc/rtc_base/BUILD.gn
-index d849418..8b9b761 100644
+index 90218b6..1cf17a2 100644
--- a/third_party/libwebrtc/rtc_base/BUILD.gn
+++ b/third_party/libwebrtc/rtc_base/BUILD.gn
-@@ -1146,6 +1146,10 @@ rtc_library("ifaddrs_converter") {
+@@ -1144,6 +1144,10 @@ rtc_library("ifaddrs_converter") {
"ifaddrs_converter.h",
]
}
@@ -3599,7 +3618,7 @@ index d849418..8b9b761 100644
rtc_library("rolling_accumulator") {
diff --git a/third_party/libwebrtc/rtc_base/logging.cc b/third_party/libwebrtc/rtc_base/logging.cc
-index 91bc47c..255dd1c 100644
+index ea33c3b..dac888a 100644
--- a/third_party/libwebrtc/rtc_base/logging.cc
+++ b/third_party/libwebrtc/rtc_base/logging.cc
@@ -116,7 +116,11 @@ std::string LogLineRef::DefaultLogLine() const {
@@ -3615,7 +3634,7 @@ index 91bc47c..255dd1c 100644
if (!filename_.empty()) {
#if defined(WEBRTC_ANDROID)
diff --git a/third_party/libwebrtc/rtc_base/physical_socket_server.cc b/third_party/libwebrtc/rtc_base/physical_socket_server.cc
-index 35aa5d7..90afb82 100644
+index fb0eb7e..8336381 100644
--- a/third_party/libwebrtc/rtc_base/physical_socket_server.cc
+++ b/third_party/libwebrtc/rtc_base/physical_socket_server.cc
@@ -75,7 +75,7 @@ typedef void* SockOptArg;
@@ -3627,7 +3646,7 @@ index 35aa5d7..90afb82 100644
#if defined(WEBRTC_LINUX)
#include
#endif
-@@ -374,7 +374,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+@@ -375,7 +375,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
ecn_ = value;
value = dscp_ + (ecn_ & kEcnMask);
}
@@ -3636,7 +3655,7 @@ index 35aa5d7..90afb82 100644
if (sopt == IPV6_TCLASS) {
// Set the IPv4 option in all cases to support dual-stack sockets.
// Don't bother checking the return code, as this is expected to fail if
-@@ -518,7 +518,7 @@ int PhysicalSocket::DoReadFromSocket(void* buffer,
+@@ -519,7 +519,7 @@ int PhysicalSocket::DoReadFromSocket(void* buffer,
socklen_t addr_len = sizeof(addr_storage);
sockaddr* addr = reinterpret_cast(&addr_storage);
@@ -3645,7 +3664,7 @@ index 35aa5d7..90afb82 100644
int received = 0;
iovec iov = {.iov_base = buffer, .iov_len = length};
msghdr msg = {.msg_name = nullptr, .msg_namelen = 0, .msg_iov = &iov, .msg_iovlen = 1};
-@@ -705,7 +705,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
+@@ -704,7 +704,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
return -1;
@@ -3654,7 +3673,7 @@ index 35aa5d7..90afb82 100644
*slevel = IPPROTO_IP;
*sopt = IP_MTU_DISCOVER;
break;
-@@ -723,7 +723,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
+@@ -722,7 +722,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
*sopt = TCP_NODELAY;
break;
case OPT_DSCP:
@@ -3663,7 +3682,7 @@ index 35aa5d7..90afb82 100644
if (family_ == AF_INET6) {
*slevel = IPPROTO_IPV6;
*sopt = IPV6_TCLASS;
-@@ -737,7 +737,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
+@@ -736,7 +736,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
return -1;
#endif
case OPT_SEND_ECN:
@@ -3672,7 +3691,7 @@ index 35aa5d7..90afb82 100644
if (family_ == AF_INET6) {
*slevel = IPPROTO_IPV6;
*sopt = IPV6_TCLASS;
-@@ -751,7 +751,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
+@@ -750,7 +750,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
return -1;
#endif
case OPT_RECV_ECN:
@@ -3681,7 +3700,7 @@ index 35aa5d7..90afb82 100644
if (family_ == AF_INET6) {
*slevel = IPPROTO_IPV6;
*sopt = IPV6_RECVTCLASS;
-@@ -770,22 +770,30 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
+@@ -769,22 +769,30 @@ int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
*slevel = SOL_SOCKET;
*sopt = SO_KEEPALIVE;
break;
@@ -3712,7 +3731,7 @@ index 35aa5d7..90afb82 100644
case OPT_TCP_USER_TIMEOUT:
#if defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)
*slevel = IPPROTO_TCP;
-@@ -834,7 +842,7 @@ bool SocketDispatcher::Initialize() {
+@@ -833,7 +841,7 @@ bool SocketDispatcher::Initialize() {
#if defined(WEBRTC_WIN)
u_long argp = 1;
ioctlsocket(s_, FIONBIO, &argp);
@@ -3792,10 +3811,10 @@ index 17306b7..bf3b62e 100644
###############################################################################
diff --git a/third_party/pipewire/pipewire/utils.h b/third_party/pipewire/pipewire/utils.h
-index b320db2..7e60d6f 100644
+index 528f676..8807d9c 100644
--- a/third_party/pipewire/pipewire/utils.h
+++ b/third_party/pipewire/pipewire/utils.h
-@@ -32,7 +32,7 @@ extern "C" {
+@@ -12,7 +12,7 @@ extern "C" {
#include
#include
#include
@@ -3803,7 +3822,7 @@ index b320db2..7e60d6f 100644
+#if !defined(_POSIX_C_SOURCE) && !defined(__HAIKU__)
# include
#endif
-
+ #include
diff --git a/third_party/rust/glslopt/.cargo-checksum.json b/third_party/rust/glslopt/.cargo-checksum.json
index ddd05da..d75a57c 100644
--- a/third_party/rust/glslopt/.cargo-checksum.json
@@ -4132,15 +4151,6 @@ index d1c92cd..e08b159 100644
}
} // extern "C"
-diff --git a/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json b/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json
-index 6ae8903..ae32d1c 100644
---- a/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json
-+++ b/third_party/rust/lmdb-rkv-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"497afaab87773f297aef19f09219b951afcbfe06d5b0cf0c22f44e7543a020b0","bindgen.rs":"4579cf8b217b9673fd08f8306bfe1b4bbac1b31cf11b2a395f81ddac04dfc10e","build.rs":"54abc550db966ce0479e1cf54ed992e3eca7e947357c54bf937b6048f0813c95","lmdb/libraries/liblmdb/CHANGES":"ba14b94dda8670db454275d2f5fb83510f810ccb3ccfca642176a0efef245e08","lmdb/libraries/liblmdb/COPYRIGHT":"fae797823b892c4b59913256b4d10b17d71f57d4bc45e46d901b84fd6dfc3d13","lmdb/libraries/liblmdb/Doxyfile":"5545f6b049040ce58e6d1a603eaea6b7fb8ae92459f2ab8d3bcbacabcce1014d","lmdb/libraries/liblmdb/LICENSE":"310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569","lmdb/libraries/liblmdb/Makefile":"60b5f574e6642602f692a95956da61c588a265ad50b8059960c230b9e6aaf4fd","lmdb/libraries/liblmdb/intro.doc":"9442e0db4fc9c70f058c43545e710476d8d5a80b959d20f4381240fd50c6b843","lmdb/libraries/liblmdb/lmdb.h":"05abf244b621b2d14e838b0643e72d5075ce77d8df856b6dccde74ee51c9cf22","lmdb/libraries/liblmdb/mdb.c":"9a4f14f3f7bf146715c01b1353b24ca9734ff1b2599c65ce4389f293ecda7015","lmdb/libraries/liblmdb/mdb_copy.1":"3a6a8a7a91e1bd42dc4d2a0188ff62d699ff2b3b097a670f30681decf63f22f3","lmdb/libraries/liblmdb/mdb_copy.c":"d3d412a770a5c3afeb88c44b4acdde0f0b985cde22497198e8f38296281cdddd","lmdb/libraries/liblmdb/mdb_dump.1":"9257be883c7fcfcbd61003cc730f7c0900fa8f6feba074c8c1e46634a257b13a","lmdb/libraries/liblmdb/mdb_dump.c":"b046cffcd997254e6daea47a2d7fb74f9d23282174cbb1e3bf9f5fb51a90fe64","lmdb/libraries/liblmdb/mdb_load.1":"ea927473245a4a7777ba687aa26baf7f0951fb620daf82b8d730a090185b2bbc","lmdb/libraries/liblmdb/mdb_load.c":"4f722613c65350315db23060be98584fb572978108885dab271101ba7187dca4","lmdb/libraries/liblmdb/mdb_stat.1":"c0a70d96b4b2d32e73301383d9d5620bc0bbbefb019bfd54f32088dfd4bc921a","lmdb/libraries/liblmdb/mdb_stat.c":"e6405fa191d784ecfa8eb8d1f153a58facc49a8f5a2c891a93802e67acc4861e","lmdb/libraries/liblmdb/midl.c":"e19143db51dd606396c7eba765832e4b66167c0975614e576b950349f8f6cdfd","lmdb/libraries/liblmdb/midl.h":"52066a085aa0fc90799113fb1cc60ca78a5e35ca6191f5f5cb29488d4bd66dba","lmdb/libraries/liblmdb/mtest.c":"89ab9ac8bf1e14a9f32a33757c4b3254e4984e0f24e5a302e2d126eb2c86f6db","lmdb/libraries/liblmdb/mtest2.c":"076b00395fe1461dd9577f7bb5567908ce50cf470efbf652787e6fe1dc2fb68c","lmdb/libraries/liblmdb/mtest3.c":"51b9a055e123bd0757ee3082cc6864c836969cf630e646a9cc34e01398c20634","lmdb/libraries/liblmdb/mtest4.c":"b0a725405d80bda6ab95b3ecf410ae330ab8df7a081ca81dd6ea1f8db87642e9","lmdb/libraries/liblmdb/mtest5.c":"7f3b06ca3833315ea4c70d5e91feb1b677f6949f105f4f89d96c3ac35e104f2f","lmdb/libraries/liblmdb/mtest6.c":"e4d7880c36547ebf33bc020046730bf2c075c53aaacd5c876152cc5ae7ab5e6c","lmdb/libraries/liblmdb/sample-bdb.txt":"153d84f8fc49a3abba53ed52d5a41c8d6d4698753a10bbe0689a9e65d3513513","lmdb/libraries/liblmdb/sample-mdb.txt":"1f77385786cffdf72b33da06a91a444fe2827673c3627f89110903a8fe012795","lmdb/libraries/liblmdb/tooltag":"4734c6dc1fa7aec8c2e9646bd04bc5218ef6a03ad83a3b18de2ac4069eb94120","src/bindings.rs":"ab64073ce4ec64282e8f67cd8f148c83661810a662cb804813b3add0d92a4bf6","src/lib.rs":"e0cf0afbab6dfded166e11d492b66d5701efe07ef978c386060054bd09f7e0c8","tests/fixtures/testdb-32/data.mdb":"74d09a30a020789631ef5c64d60d34f6913cf63ad73c82327bd605c5a37849bb","tests/fixtures/testdb-32/lock.mdb":"bbfd0f5aa3eea8421b0a2c277de69b105789dbc744391d9a08d0d3332ae91f70","tests/fixtures/testdb/data.mdb":"8a0cf8ad63473ae63d437a646042b0d64c112a8fa33d5c916f0678ce4d23189b","tests/fixtures/testdb/lock.mdb":"6ef7eea0c15b42835891c2d1d62905cfca7ae018572971610600196714858f53","tests/lmdb.rs":"5086cb43f3a7b6a8aaa257084c1e0bea664f279ff260b99a8ad0d3c598867a45","tests/simple.rs":"774a3edf589dd5fab3b90d5faabb8b8e06e51ec231a795ba17b1e35e65490848"},"package":"61b9ce6b3be08acefa3003c57b7565377432a89ec24476bbe72e11d101f852fe"}
-\ No newline at end of file
-+{"files":{".rustfmt.toml":"fbef9d8f2ff25a0b6c6f032f2b066aedfd7b1d34d8f75e0be811bc087bff5469","Cargo.toml":"a111b0e819d64bea0f117d2f1f25c58692b2cc2e70859881bf4cdf89817d9af3","bindgen.rs":"4579cf8b217b9673fd08f8306bfe1b4bbac1b31cf11b2a395f81ddac04dfc10e","build.rs":"54abc550db966ce0479e1cf54ed992e3eca7e947357c54bf937b6048f0813c95","lmdb/libraries/liblmdb/CHANGES":"ba14b94dda8670db454275d2f5fb83510f810ccb3ccfca642176a0efef245e08","lmdb/libraries/liblmdb/COPYRIGHT":"fae797823b892c4b59913256b4d10b17d71f57d4bc45e46d901b84fd6dfc3d13","lmdb/libraries/liblmdb/Doxyfile":"5545f6b049040ce58e6d1a603eaea6b7fb8ae92459f2ab8d3bcbacabcce1014d","lmdb/libraries/liblmdb/LICENSE":"310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569","lmdb/libraries/liblmdb/Makefile":"60b5f574e6642602f692a95956da61c588a265ad50b8059960c230b9e6aaf4fd","lmdb/libraries/liblmdb/intro.doc":"9442e0db4fc9c70f058c43545e710476d8d5a80b959d20f4381240fd50c6b843","lmdb/libraries/liblmdb/lmdb.h":"05abf244b621b2d14e838b0643e72d5075ce77d8df856b6dccde74ee51c9cf22","lmdb/libraries/liblmdb/mdb.c":"3b23059962db42311f6811f60ce19730da5b51e1d263fa2f63d1be6f6b5ff490","lmdb/libraries/liblmdb/mdb_copy.1":"3a6a8a7a91e1bd42dc4d2a0188ff62d699ff2b3b097a670f30681decf63f22f3","lmdb/libraries/liblmdb/mdb_copy.c":"d3d412a770a5c3afeb88c44b4acdde0f0b985cde22497198e8f38296281cdddd","lmdb/libraries/liblmdb/mdb_dump.1":"9257be883c7fcfcbd61003cc730f7c0900fa8f6feba074c8c1e46634a257b13a","lmdb/libraries/liblmdb/mdb_dump.c":"b046cffcd997254e6daea47a2d7fb74f9d23282174cbb1e3bf9f5fb51a90fe64","lmdb/libraries/liblmdb/mdb_load.1":"ea927473245a4a7777ba687aa26baf7f0951fb620daf82b8d730a090185b2bbc","lmdb/libraries/liblmdb/mdb_load.c":"4f722613c65350315db23060be98584fb572978108885dab271101ba7187dca4","lmdb/libraries/liblmdb/mdb_stat.1":"c0a70d96b4b2d32e73301383d9d5620bc0bbbefb019bfd54f32088dfd4bc921a","lmdb/libraries/liblmdb/mdb_stat.c":"e6405fa191d784ecfa8eb8d1f153a58facc49a8f5a2c891a93802e67acc4861e","lmdb/libraries/liblmdb/midl.c":"e19143db51dd606396c7eba765832e4b66167c0975614e576b950349f8f6cdfd","lmdb/libraries/liblmdb/midl.h":"52066a085aa0fc90799113fb1cc60ca78a5e35ca6191f5f5cb29488d4bd66dba","lmdb/libraries/liblmdb/mtest.c":"89ab9ac8bf1e14a9f32a33757c4b3254e4984e0f24e5a302e2d126eb2c86f6db","lmdb/libraries/liblmdb/mtest2.c":"076b00395fe1461dd9577f7bb5567908ce50cf470efbf652787e6fe1dc2fb68c","lmdb/libraries/liblmdb/mtest3.c":"51b9a055e123bd0757ee3082cc6864c836969cf630e646a9cc34e01398c20634","lmdb/libraries/liblmdb/mtest4.c":"b0a725405d80bda6ab95b3ecf410ae330ab8df7a081ca81dd6ea1f8db87642e9","lmdb/libraries/liblmdb/mtest5.c":"7f3b06ca3833315ea4c70d5e91feb1b677f6949f105f4f89d96c3ac35e104f2f","lmdb/libraries/liblmdb/mtest6.c":"e4d7880c36547ebf33bc020046730bf2c075c53aaacd5c876152cc5ae7ab5e6c","lmdb/libraries/liblmdb/sample-bdb.txt":"153d84f8fc49a3abba53ed52d5a41c8d6d4698753a10bbe0689a9e65d3513513","lmdb/libraries/liblmdb/sample-mdb.txt":"1f77385786cffdf72b33da06a91a444fe2827673c3627f89110903a8fe012795","lmdb/libraries/liblmdb/tooltag":"4734c6dc1fa7aec8c2e9646bd04bc5218ef6a03ad83a3b18de2ac4069eb94120","src/bindings.rs":"ab64073ce4ec64282e8f67cd8f148c83661810a662cb804813b3add0d92a4bf6","src/lib.rs":"e0cf0afbab6dfded166e11d492b66d5701efe07ef978c386060054bd09f7e0c8","tests/fixtures/testdb-32/data.mdb":"74d09a30a020789631ef5c64d60d34f6913cf63ad73c82327bd605c5a37849bb","tests/fixtures/testdb-32/lock.mdb":"bbfd0f5aa3eea8421b0a2c277de69b105789dbc744391d9a08d0d3332ae91f70","tests/fixtures/testdb/data.mdb":"8a0cf8ad63473ae63d437a646042b0d64c112a8fa33d5c916f0678ce4d23189b","tests/fixtures/testdb/lock.mdb":"6ef7eea0c15b42835891c2d1d62905cfca7ae018572971610600196714858f53","tests/lmdb.rs":"5086cb43f3a7b6a8aaa257084c1e0bea664f279ff260b99a8ad0d3c598867a45","tests/simple.rs":"774a3edf589dd5fab3b90d5faabb8b8e06e51ec231a795ba17b1e35e65490848"},"package":null}
-\ No newline at end of file
diff --git a/third_party/rust/lmdb-rkv-sys/.rustfmt.toml b/third_party/rust/lmdb-rkv-sys/.rustfmt.toml
new file mode 100644
index 0000000..fc441bb
@@ -4151,117 +4161,6 @@ index 0000000..fc441bb
+ "src/bindings.rs"
+]
\ No newline at end of file
-diff --git a/third_party/rust/lmdb-rkv-sys/Cargo.toml b/third_party/rust/lmdb-rkv-sys/Cargo.toml
-index e8f59d9..6843f92 100644
---- a/third_party/rust/lmdb-rkv-sys/Cargo.toml
-+++ b/third_party/rust/lmdb-rkv-sys/Cargo.toml
-@@ -9,36 +9,65 @@
- # will likely look very different (and much more reasonable).
- # See Cargo.toml.orig for the original contents.
-
-+bin = []
-+example = []
-+bench = []
-+
- [package]
- name = "lmdb-rkv-sys"
- version = "0.11.2"
--authors = ["Dan Burkert ", "Victor Porof "]
-+authors = [
-+ "Dan Burkert ",
-+ "Victor Porof ",
-+]
- build = "build.rs"
-+autobins = false
-+autoexamples = false
-+autotests = false
-+autobenches = false
- description = "Rust bindings for liblmdb."
- homepage = "https://github.com/mozilla/lmdb-rs"
- documentation = "https://docs.rs/lmdb-rkv-sys"
- readme = "../README.md"
--keywords = ["LMDB", "database", "storage-engine", "bindings", "library"]
--categories = ["database", "external-ffi-bindings"]
-+keywords = [
-+ "LMDB",
-+ "database",
-+ "storage-engine",
-+ "bindings",
-+ "library",
-+]
-+categories = [
-+ "database",
-+ "external-ffi-bindings",
-+]
- license = "Apache-2.0"
- repository = "https://github.com/mozilla/lmdb-rs.git"
-
- [lib]
- name = "lmdb_sys"
--[dependencies.libc]
--version = "0.2"
-+path = "src/lib.rs"
-+
-+[[test]]
-+name = "lmdb"
-+path = "tests/lmdb.rs"
-+
-+[[test]]
-+name = "simple"
-+path = "tests/simple.rs"
-+
-+[dependencies]
-+libc = "0.2"
-+
-+[build-dependencies]
-+cc = "1.0"
-+pkg-config = "0.3"
-+
- [build-dependencies.bindgen]
- version = "0.53.2"
- features = ["runtime"]
- optional = true
- default-features = false
-
--[build-dependencies.cc]
--version = "1.0"
--
--[build-dependencies.pkg-config]
--version = "0.3"
--
- [features]
- default = []
- mdb_idl_logn_10 = []
-@@ -52,6 +81,7 @@ mdb_idl_logn_9 = []
- with-asan = []
- with-fuzzer = []
- with-fuzzer-no-link = []
-+
- [badges.appveyor]
- repository = "mozilla/lmdb-rs"
-
-diff --git a/third_party/rust/lmdb-rkv-sys/lmdb/libraries/liblmdb/mdb.c b/third_party/rust/lmdb-rkv-sys/lmdb/libraries/liblmdb/mdb.c
-index 01741d0..ad4f34d 100644
---- a/third_party/rust/lmdb-rkv-sys/lmdb/libraries/liblmdb/mdb.c
-+++ b/third_party/rust/lmdb-rkv-sys/lmdb/libraries/liblmdb/mdb.c
-@@ -123,7 +123,7 @@ typedef SSIZE_T ssize_t;
- #include /* defines BYTE_ORDER on HPUX and Solaris */
- #endif
-
--#if defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__)
-+#if defined(__APPLE__) || defined (BSD) || defined(__FreeBSD_kernel__) || defined(__HAIKU__)
- # define MDB_USE_POSIX_SEM 1
- # define MDB_FDATASYNC fsync
- #elif defined(__ANDROID__)
-@@ -256,7 +256,7 @@ typedef SSIZE_T ssize_t;
- */
- #ifndef MDB_USE_ROBUST
- /* Android currently lacks Robust Mutex support. So does glibc < 2.4. */
--# if defined(MDB_USE_POSIX_MUTEX) && (defined(__ANDROID__) || \
-+# if defined(MDB_USE_POSIX_MUTEX) && (defined(__ANDROID__) || defined(__HAIKU__) || \
- (defined(__GLIBC__) && GLIBC_VER < 0x020004))
- # define MDB_USE_ROBUST 0
- # else
diff --git a/third_party/rust/mtu/.cargo-checksum.json b/third_party/rust/mtu/.cargo-checksum.json
index 599d7cd..a0fbf2f 100644
--- a/third_party/rust/mtu/.cargo-checksum.json
@@ -4573,7 +4472,7 @@ index d5c0aca..506a7b1 100644
UNIFIED_SOURCES += ["ProcInfo_linux.cpp"]
elif toolkit == "windows":
diff --git a/toolkit/components/remote/RemoteUtils.h b/toolkit/components/remote/RemoteUtils.h
-index c4c1bcd..2beb4ea 100644
+index 134ed34..fcad6db 100644
--- a/toolkit/components/remote/RemoteUtils.h
+++ b/toolkit/components/remote/RemoteUtils.h
@@ -13,7 +13,7 @@
@@ -4931,7 +4830,7 @@ index 34c94a1..56edb0a 100644
# We don't want to enable refcount logging during rusttests, since the
# relevant FFI symbols wouldn't be found.
diff --git a/toolkit/modules/ShortcutUtils.sys.mjs b/toolkit/modules/ShortcutUtils.sys.mjs
-index 360a7db..69b089f 100644
+index 3e796cb..005a31d 100644
--- a/toolkit/modules/ShortcutUtils.sys.mjs
+++ b/toolkit/modules/ShortcutUtils.sys.mjs
@@ -64,7 +64,7 @@ export var ShortcutUtils = {
@@ -5005,7 +4904,7 @@ index 360a7db..69b089f 100644
return elemString;
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
-index 5e66a89..b105a49 100644
+index e838e37..8dbb355 100644
--- a/toolkit/moz.configure
+++ b/toolkit/moz.configure
@@ -298,6 +298,8 @@ def audio_backends_default(target):
@@ -5046,7 +4945,7 @@ index 5e66a89..b105a49 100644
imply_option(
"--enable-jack", imply_jack, reason="--enable-audio-backends", when=use_pkg_config
)
-@@ -3105,6 +3115,7 @@ def forkserver_default(target, build_project):
+@@ -3107,6 +3117,7 @@ def forkserver_default(target, build_project):
(target.os == "GNU" and target.kernel == "Linux")
or target.os == "FreeBSD"
or target.os == "OpenBSD"
@@ -5054,7 +4953,7 @@ index 5e66a89..b105a49 100644
)
-@@ -3833,7 +3844,7 @@ with only_when(compile_environment):
+@@ -3834,7 +3845,7 @@ with only_when(compile_environment):
@depends(target)
def default_user_appdir(target):
@@ -5063,33 +4962,6 @@ index 5e66a89..b105a49 100644
return "Mozilla"
return ".mozilla"
-diff --git a/toolkit/moz.configure.orig b/toolkit/moz.configure.orig
-index e9fece9..5e66a89 100644
---- a/toolkit/moz.configure.orig
-+++ b/toolkit/moz.configure.orig
-@@ -22,19 +22,21 @@ def check_moz_app_id(moz_app_id, build_project):
-
- project_flag(
- env="MOZ_APP_VENDOR",
-+ default="LibreWolf",
- nargs=1,
- help='Used for application.ini\'s "Vendor" field, which also impacts profile location and user-visible fields',
- )
-
- project_flag(
- env="MOZ_APP_UA_NAME",
-- default="",
-+ default="Firefox",
- nargs=1,
- help="Application name in the User Agent string",
- )
-
- project_flag(
- "MOZ_APP_PROFILE",
-+ default="librewolf",
- nargs=1,
- help='Used for application.ini\'s "Profile" field, which controls profile location',
- )
diff --git a/toolkit/system/gnome/moz.build b/toolkit/system/gnome/moz.build
index aa2df2b..a42f897 100644
--- a/toolkit/system/gnome/moz.build
@@ -5109,10 +4981,10 @@ index aa2df2b..a42f897 100644
]
diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
-index fd173f9..839d9f4 100644
+index dcc07d8..cdc5eaf 100644
--- a/toolkit/system/gnome/nsGIOService.cpp
+++ b/toolkit/system/gnome/nsGIOService.cpp
-@@ -399,6 +399,32 @@ gboolean g_app_info_launch_default_for_uri_openbsd(const char* uri,
+@@ -470,6 +470,32 @@ gboolean g_app_info_launch_default_for_uri_openbsd(const char* uri,
}
#endif
@@ -5145,7 +5017,7 @@ index fd173f9..839d9f4 100644
static NS_IMETHODIMP LaunchWithURIImpl(RefPtr aInfo, nsIURI* aUri,
const char* aXDGToken = nullptr) {
GList uris = {0};
-@@ -412,6 +438,10 @@ static NS_IMETHODIMP LaunchWithURIImpl(RefPtr aInfo, nsIURI* aUri,
+@@ -483,6 +509,10 @@ static NS_IMETHODIMP LaunchWithURIImpl(RefPtr aInfo, nsIURI* aUri,
gboolean result = g_app_info_launch_uris_openbsd(
aInfo, spec.get(), GetLaunchContext(aXDGToken).get(),
getter_Transfers(error));
@@ -5156,7 +5028,7 @@ index fd173f9..839d9f4 100644
#else
gboolean result = g_app_info_launch_uris(
aInfo, &uris, GetLaunchContext(aXDGToken).get(), getter_Transfers(error));
-@@ -802,6 +832,9 @@ static nsresult ShowURIImpl(nsIURI* aURI, const char* aXDGToken = nullptr) {
+@@ -871,6 +901,9 @@ static nsresult ShowURIImpl(nsIURI* aURI, const char* aXDGToken = nullptr) {
#ifdef __OpenBSD__
if (!g_app_info_launch_default_for_uri_openbsd(
spec.get(), GetLaunchContext(aXDGToken).get(),
@@ -5166,7 +5038,7 @@ index fd173f9..839d9f4 100644
#else
if (!g_app_info_launch_default_for_uri(spec.get(),
GetLaunchContext(aXDGToken).get(),
-@@ -837,6 +870,9 @@ static nsresult LaunchPathImpl(const nsACString& aPath,
+@@ -906,6 +939,9 @@ static nsresult LaunchPathImpl(const nsACString& aPath,
#ifdef __OpenBSD__
g_app_info_launch_default_for_uri_openbsd(spec.get(),
GetLaunchContext(aXDGToken).get(),
@@ -5602,10 +5474,10 @@ index 0000000..d9ac4f3
+
+#endif
diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css
-index efc623e..66ed526 100644
+index 9533f5e..973cf1c 100644
--- a/toolkit/themes/shared/popup.css
+++ b/toolkit/themes/shared/popup.css
-@@ -43,6 +43,12 @@ panel {
+@@ -44,6 +44,12 @@ panel {
}
}
@@ -5619,10 +5491,10 @@ index efc623e..66ed526 100644
appearance: auto;
-moz-default-appearance: menupopup;
diff --git a/toolkit/toolkit.mozbuild b/toolkit/toolkit.mozbuild
-index 304c39a..c69f810 100644
+index e8399d2..f76e321 100644
--- a/toolkit/toolkit.mozbuild
+++ b/toolkit/toolkit.mozbuild
-@@ -144,6 +144,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
+@@ -148,6 +148,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
DIRS += [
"/media/mozva",
"/toolkit/system/gnome",
@@ -5631,7 +5503,7 @@ index 304c39a..c69f810 100644
if CONFIG["ENABLE_WEBDRIVER"]:
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 484a048..1d55a57 100644
+index 5156191..519c209 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -346,14 +346,16 @@ MOZ_CONSTINIT nsString gProcessStartupShortcut;
@@ -5653,7 +5525,7 @@ index 484a048..1d55a57 100644
MOZ_RUNINIT std::unique_ptr gWaylandProxy;
#endif
-@@ -433,6 +435,9 @@ static void UnexpectedExit() {
+@@ -435,6 +437,9 @@ static void UnexpectedExit() {
#if defined(MOZ_WAYLAND)
bool IsWaylandEnabled() {
@@ -5663,7 +5535,7 @@ index 484a048..1d55a57 100644
static bool isWaylandEnabled = []() {
const char* waylandDisplay = PR_GetEnv("WAYLAND_DISPLAY");
if (!waylandDisplay) {
-@@ -463,6 +468,7 @@ bool IsWaylandEnabled() {
+@@ -465,6 +470,7 @@ bool IsWaylandEnabled() {
return !gtk_check_version(3, 24, 30);
}();
return isWaylandEnabled;
@@ -5671,7 +5543,7 @@ index 484a048..1d55a57 100644
}
#else
bool IsWaylandEnabled() { return false; }
-@@ -3819,7 +3825,7 @@ class XREMain {
+@@ -3817,7 +3823,7 @@ class XREMain {
#endif
};
@@ -5680,7 +5552,7 @@ index 484a048..1d55a57 100644
static SmprintfPointer FormatUid(uid_t aId) {
if (const auto pw = getpwuid(aId)) {
return mozilla::Smprintf("%s", pw->pw_name);
-@@ -3868,7 +3874,7 @@ static bool CheckForUserMismatch() {
+@@ -3866,7 +3872,7 @@ static bool CheckForUserMismatch() {
}
return false;
}
@@ -5707,7 +5579,7 @@ index 484a048..1d55a57 100644
// We want to use proxy for main connection only so
// restore original Wayland display for next potential Wayland connections
// from gfx probe code and so on.
-@@ -6186,7 +6192,9 @@ int XREMain::XRE_main(int argc, char* argv[], const BootstrapConfig& aConfig) {
+@@ -6202,7 +6208,9 @@ int XREMain::XRE_main(int argc, char* argv[], const BootstrapConfig& aConfig) {
if (!gfxPlatform::IsHeadless()) {
# ifdef MOZ_WAYLAND
WaylandDisplayRelease();
@@ -5761,7 +5633,7 @@ index 146a586..10b7fb6 100644
"(%s) %s Proxy: %s",
mozilla::widget::GetDesktopEnvironmentIdentifier().get(),
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
-index dff7146..ebe8e94 100644
+index af2dbdb..0442e5b 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -80,6 +80,10 @@
@@ -5775,7 +5647,7 @@ index dff7146..ebe8e94 100644
#if defined(XP_MACOSX)
# define APP_REGISTRY_NAME "Application Registry"
-@@ -365,7 +369,7 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
+@@ -369,7 +373,7 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
} else if (!strcmp(aProperty, XRE_USER_NATIVE_MANIFESTS)) {
rv = GetUserDataDirectoryHome(getter_AddRefs(file), false);
NS_ENSURE_SUCCESS(rv, rv);
@@ -5784,7 +5656,7 @@ index dff7146..ebe8e94 100644
rv = file->AppendNative("LibreWolf"_ns);
# else // defined(XP_MACOSX)
rv = file->AppendNative(".librewolf"_ns);
-@@ -1075,6 +1079,12 @@ nsresult nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
+@@ -1088,6 +1092,12 @@ nsresult nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile,
NS_ENSURE_SUCCESS(rv, rv);
MOZ_TRY(NS_NewLocalFile(path, getter_AddRefs(localDir)));
@@ -5797,7 +5669,7 @@ index dff7146..ebe8e94 100644
#elif defined(XP_UNIX)
const char* homeDir = getenv("HOME");
if (!homeDir || !*homeDir) return NS_ERROR_FAILURE;
-@@ -1184,7 +1194,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
+@@ -1197,7 +1207,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
nsresult rv;
@@ -5806,7 +5678,7 @@ index dff7146..ebe8e94 100644
static const char* const sXR = "LibreWolf";
rv = aFile->AppendNative(nsDependentCString(sXR));
-@@ -1243,7 +1253,7 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile* aFile, bool aLocal) {
+@@ -1256,7 +1266,7 @@ nsresult nsXREDirProvider::AppendProfilePath(nsIFile* aFile, bool aLocal) {
}
NS_ENSURE_SUCCESS(rv, rv);
@@ -5836,7 +5708,7 @@ index 4c53061..76d3561 100644
# else
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
-index 71879f1..0b63df5 100644
+index 99882b6..d048aba 100644
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
@@ -27,7 +27,9 @@ if CONFIG["COMPILE_ENVIRONMENT"]:
@@ -5851,11 +5723,11 @@ index 71879f1..0b63df5 100644
if CONFIG["MOZ_ENABLE_VAAPI"]:
DIRS += ["vaapitest"]
diff --git a/widget/gtk/nsWaylandDisplay.cpp b/widget/gtk/nsWaylandDisplay.cpp
-index 052971c..664d95d 100644
+index d05dd41..fae45e8 100644
--- a/widget/gtk/nsWaylandDisplay.cpp
+++ b/widget/gtk/nsWaylandDisplay.cpp
-@@ -20,7 +20,9 @@
- #include "WidgetUtilsGtk.h"
+@@ -21,7 +21,9 @@
+ #include "mozilla/widget/xx-pip-v1-client-protocol.h"
#include "nsGtkKeyUtils.h"
#include "nsWindow.h"
-#include "wayland-proxy.h"
@@ -5865,7 +5737,7 @@ index 052971c..664d95d 100644
namespace mozilla::widget {
-@@ -247,6 +249,7 @@ static const struct moz_wl_pointer_listener pointer_listener = {
+@@ -253,6 +255,7 @@ static const struct moz_wl_pointer_listener pointer_listener = {
};
void nsWaylandDisplay::SetPointer(wl_pointer* aPointer) {
@@ -5873,7 +5745,7 @@ index 052971c..664d95d 100644
// Don't even try on such old interface
if (wl_proxy_get_version((struct wl_proxy*)aPointer) <
WL_POINTER_RELEASE_SINCE_VERSION) {
-@@ -271,6 +274,7 @@ void nsWaylandDisplay::SetPointer(wl_pointer* aPointer) {
+@@ -277,6 +280,7 @@ void nsWaylandDisplay::SetPointer(wl_pointer* aPointer) {
zwp_pointer_gesture_hold_v1_add_listener(mPointerGestureHold,
&gesture_hold_listener, this);
}
@@ -5881,7 +5753,7 @@ index 052971c..664d95d 100644
}
void nsWaylandDisplay::RemovePointer() {
-@@ -630,19 +634,22 @@ static void WlLogHandler(const char* format, va_list args) {
+@@ -674,19 +678,22 @@ static void WlLogHandler(const char* format, va_list args) {
if (strstr(error, "still attached")) {
return;
}
@@ -5906,10 +5778,10 @@ index 052971c..664d95d 100644
nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay)
diff --git a/xpcom/base/nsSystemInfo.cpp b/xpcom/base/nsSystemInfo.cpp
-index 6c2a1af..77e75dd 100644
+index bd3a68d..52dcddc 100644
--- a/xpcom/base/nsSystemInfo.cpp
+++ b/xpcom/base/nsSystemInfo.cpp
-@@ -83,6 +83,10 @@
+@@ -84,6 +84,10 @@
# include "mozilla/SandboxInfo.h"
#endif
@@ -5920,7 +5792,7 @@ index 6c2a1af..77e75dd 100644
// Slot for NS_InitXPCOM to pass information to nsSystemInfo::Init.
// Only set to nonzero (potentially) if XP_UNIX. On such systems, the
// system call to discover the appropriate value is not thread-safe,
-@@ -1455,7 +1459,15 @@ nsresult nsSystemInfo::Init() {
+@@ -1456,7 +1460,15 @@ nsresult nsSystemInfo::Init() {
SetInt32Property(u"pagesize"_ns, PR_GetPageSize());
SetInt32Property(u"pageshift"_ns, PR_GetPageShift());
SetInt32Property(u"memmapalign"_ns, PR_GetMemMapAlignment());
diff --git a/www-client/librewolf/patches/librewolf_launcher-139.0.1.patchset b/www-client/librewolf/patches/librewolf_launcher-141.0.patchset
similarity index 100%
rename from www-client/librewolf/patches/librewolf_launcher-139.0.1.patchset
rename to www-client/librewolf/patches/librewolf_launcher-141.0.patchset