sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (c547a4dc16637403cba97d3f2e3500d907a76a92)
- From: Ismael Luceno <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org, sm-commit AT lists.sourcemage.org
- Subject: [[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (c547a4dc16637403cba97d3f2e3500d907a76a92)
- Date: Tue, 13 Oct 2026 00:49:03 +0000
GIT changes to master grimoire by Ismael Luceno <ismael AT sourcemage.org>:
http/firefox/BUILD
| 4
http/firefox/HISTORY
| 16
http/firefox/PRE_BUILD
| 4
http/firefox/patches-for-musl/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
| 35
http/firefox/patches-for-musl/0004-musl-Fix-syscall-wrappers.patch
| 42 -
http/firefox/patches-for-musl/0005-musl-Only-use-system-heap-reporter-with-glibc.patch
| 33
http/firefox/patches-for-musl/0006-musl-Set-pthread-name-for-non-glibc-systems.patch
| 29
http/firefox/patches-for-musl/0009-bgo-748849-RUST_TARGET_override.patch
| 61 -
http/firefox/patches-for-musl/0011-bgo-929967-fix-pgo-on-musl.patch
| 14
http/firefox/patches-for-musl/0013-bmo-1657849-musl-sandbox-sched_setscheduler.patch
| 48 -
http/firefox/patches-for-musl/0018-bgo-967694-musl-prctrl-exception-on-musl.patch
| 14
http/firefox/patches-for-musl/0019-bgo-970694-fix-missing-stdint.h-on-musl.patch
| 12
http/firefox/patches-for-musl/0020-bgo-970537-add-missing-header-for-musl.patch
| 12
http/firefox/patches-for-musl/0025-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
| 9
http/firefox/patches-for-musl/0027-bmo-2071536-audio_thread_priority-musl-fix.patch
| 395 ----------
http/firefox/patches-for-musl/0028-bmo-2074346-musl-fix-parakeet-cpp.patch
| 11
http/firefox/patches/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
| 35
http/firefox/patches/0010-bgo-748849-RUST_TARGET_override.patch
| 61 +
http/firefox/patches/0012-bgo-929967-fix-pgo-on-musl.patch
| 14
http/firefox/patches/0014-bmo-1657849-musl-sandbox-sched_setscheduler.patch
| 48 +
http/firefox/patches/0019-bgo-967694-musl-prctrl-exception-on-musl.patch
| 14
http/firefox/patches/0020-bgo-970694-fix-missing-stdint.h-on-musl.patch
| 12
http/firefox/patches/0021-bgo-970537-add-missing-header-for-musl.patch
| 12
http/firefox/patches/0026-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
| 9
http/firefox/patches/0028-bmo-2071536-audio_thread_priority-musl-fix.patch
| 395 ++++++++++
http/firefox/patches/0029-bmo-2074346-musl-fix-parakeet-cpp.patch
| 11
http/firefox/patches/0100-alpine-lfs64-no-stat64-on-musl.patch
| 42 +
http/firefox/patches/0101-alpine-time64-rust-timespec.patch
| 57 +
28 files changed, 730 insertions(+), 719 deletions(-)
New commits:
commit c547a4dc16637403cba97d3f2e3500d907a76a92
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
firefox: Tell configure the rust triplet
configure gives up otherwise.
commit f578153d8e1ecf10ab3783f74b909f514680e1bc
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
firefox: Stop passing --disable-gold
154 turns the deprecated option into a configure error.
commit d262aa5e40491b164550457d4372606017ee608c
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
firefox: Take Alpine's two 32-bit musl patches
commit 903485d40248f2a53c0f31fc3e492e520c3da914
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
firefox: Refresh musl patches & apply unconditionally
diff --git a/http/firefox/BUILD b/http/firefox/BUILD
index 78cbf86..908395b 100755
--- a/http/firefox/BUILD
+++ b/http/firefox/BUILD
@@ -17,6 +17,10 @@ export MOZ_NOSPAM=1 &&
# System rustc has no debuginfo
export RUSTFLAGS="-C debuginfo=0" &&
+# rustc knows no "pc" vendor for linux, so its triplet has to be asked
+# for rather than derived from ours (see the RUST_TARGET patch)
+export RUST_TARGET=$(rustc -vV | sed -n "s/^host: //p") &&
+
export MOZBUILD_STATE_PATH="${SOURCE_DIRECTORY}/mozbuild" &&
#
diff --git a/http/firefox/HISTORY b/http/firefox/HISTORY
index dc2eaf2..e79f6cf 100644
--- a/http/firefox/HISTORY
+++ b/http/firefox/HISTORY
@@ -1,3 +1,19 @@
+2026-10-13 Ismael Luceno <ismael AT sourcemage.org>
+ * PRE_BUILD, patches-for-musl/*: moved into patches/ and applied
+ unconditionally, all are libc-agnostic
+ * patches-for-musl/0004-musl-Fix-syscall-wrappers.patch,
+
patches-for-musl/0005-musl-Only-use-system-heap-reporter-with-glibc.patch,
+
patches-for-musl/0006-musl-Set-pthread-name-for-non-glibc-systems.patch:
+ dropped, not needed anymore
+ * patches/0014-bmo-1657849-musl-sandbox-sched_setscheduler.patch:
+ fixed, keyed on __GLIBC__, LIBC_GLIBC is not in scope
+ * patches/0100-alpine-lfs64-no-stat64-on-musl.patch,
+ patches/0101-alpine-time64-rust-timespec.patch: taken from Alpine
+ * PRE_BUILD: dropped --disable-gold, it is deprecated and clang
+ picks lld by itself anyway
+ * BUILD: export RUST_TARGET, our vendor field means nothing to
+ rustc and configure cannot guess past it
+
2026-10-12 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 158.0, SECURITY_PATCH++
* DEPENDS: nss >= 3.130
diff --git a/http/firefox/PRE_BUILD b/http/firefox/PRE_BUILD
index d0f76ff..d739268 100755
--- a/http/firefox/PRE_BUILD
+++ b/http/firefox/PRE_BUILD
@@ -50,16 +50,12 @@ case "$HOST" in
ac_add_options --disable-elf-hack
# jemalloc depends on PTHREAD_MUTEX_ADAPTIVE_NP
ac_add_options --disable-jemalloc
- # gold causes build failures
- ac_add_options --disable-gold
!
;;
esac &&
apply_patch_dir patches &&
-apply_patch_dir "patches-for-${HOST##*-}" &&
-
# clearing all checksums so the patches wouldn't cause troubles
find third_party/rust -name .cargo-checksum.json \
-exec sed -i -e 's/\("files":{\)[^}]*/\1/' {} \; &&
diff --git
a/http/firefox/patches-for-musl/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
b/http/firefox/patches-for-musl/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
deleted file mode 100644
index 300846f..0000000
---
a/http/firefox/patches-for-musl/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d8ec0bd6f3b0ad2dfd8a97a864f08decaafdea69 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel AT sholland.org>
-Date: Sun, 8 Jan 2017 19:16:38 -0600
-Subject: [PATCH 10/30] musl: Add alternate name for private siginfo struct
- member
-
-musl does not provide a macro for detecting its presence. For now,
-assume that it is the only non-glibc-based libc on Linux systems.
-
-Signed-off-by: Samuel Holland <samuel AT sholland.org>
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
-index 9884be8bb2..86d8f88e30 100644
---- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
-+++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
-@@ -174,7 +174,11 @@ void Trap::SigSys(int nr, LinuxSigInfo* info,
ucontext_t* ctx) {
- // If the version of glibc doesn't include this information in
- // siginfo_t (older than 2.17), we need to explicitly copy it
- // into an arch_sigsys structure.
-- memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
-+#if defined(__GLIBC__)
-+ memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
-+#else
-+ memcpy(&sigsys, &info->__si_fields, sizeof(sigsys));
-+#endif
- #endif
-
- #if defined(__mips__)
---
-2.34.1
-
diff --git
a/http/firefox/patches-for-musl/0004-musl-Fix-syscall-wrappers.patch
b/http/firefox/patches-for-musl/0004-musl-Fix-syscall-wrappers.patch
deleted file mode 100644
index d9dda49..0000000
--- a/http/firefox/patches-for-musl/0004-musl-Fix-syscall-wrappers.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 1b46c0fc085fe93c36320d7ac1004c83efccdccc Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel AT sholland.org>
-Date: Sun, 8 Jan 2017 19:19:23 -0600
-Subject: [PATCH 11/30] musl: Fix syscall wrappers
-
-musl defines p{read,write}64 to their non-suffixed equivalents to avoid
-duplication in its syscall wrappers. This breaks macro expansion here,
-leading to errors such as:
-
-In function size_t sys_pread64(int, void*, size_t, off_t):
- error: '__NR_pread' was not declared in this scope
-
-The fix here is to undefine the p{read,write}64 macros, so the syscall
-expands to (e.g.) __NR_pread64 instead.
-
-Signed-off-by: Samuel Holland <samuel AT sholland.org>
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- .../src/third_party/lss/linux_syscall_support.h | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git
a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-index 1abe0ba5b0..d6087a1674 100644
----
a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-+++
b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-@@ -173,6 +173,13 @@ extern "C" {
- # undef __NR_waitpid
- #endif
-
-+#ifdef pread64
-+#undef pread64
-+#endif
-+#ifdef pwrite64
-+#undef pwrite64
-+#endif
-+
- /* As glibc often provides subtly incompatible data structures (and implicit
- * wrapper functions that convert them), we provide our own kernel data
- * structures for use by the system calls.
---
-2.34.1
-
diff --git
a/http/firefox/patches-for-musl/0005-musl-Only-use-system-heap-reporter-with-glibc.patch
b/http/firefox/patches-for-musl/0005-musl-Only-use-system-heap-reporter-with-glibc.patch
deleted file mode 100644
index 08f0214..0000000
---
a/http/firefox/patches-for-musl/0005-musl-Only-use-system-heap-reporter-with-glibc.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 68dd87a3dc06cf59396dccc3e031761f7237656e Mon Sep 17 00:00:00 2001
-From: "Jory A. Pratt" <anarchy AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:09:26 +0200
-Subject: [PATCH 12/30] musl: Only use system heap reporter with glibc
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- xpcom/base/nsMemoryReporterManager.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/xpcom/base/nsMemoryReporterManager.cpp
b/xpcom/base/nsMemoryReporterManager.cpp
-index bd4629c785..b513f81216 100644
---- a/xpcom/base/nsMemoryReporterManager.cpp
-+++ b/xpcom/base/nsMemoryReporterManager.cpp
-@@ -647,6 +647,7 @@ static bool InSharedRegion(mach_vm_address_t aAddr,
cpu_type_t aType) {
- return NS_OK;
- }
-
-+#ifdef __GLIBC__
- # define HAVE_SYSTEM_HEAP_REPORTER 1
- // Windows can have multiple separate heaps, but we should not touch
non-default
- // heaps because they may be destroyed at anytime while we hold a handle.
So we
-@@ -679,6 +680,7 @@ static bool InSharedRegion(mach_vm_address_t aAddr,
cpu_type_t aType) {
- *aSizeOut = heapSize;
- return NS_OK;
- }
-+#endif
-
- struct SegmentKind {
- DWORD mState;
---
-2.34.1
-
diff --git
a/http/firefox/patches-for-musl/0006-musl-Set-pthread-name-for-non-glibc-systems.patch
b/http/firefox/patches-for-musl/0006-musl-Set-pthread-name-for-non-glibc-systems.patch
deleted file mode 100644
index fe74bb1..0000000
---
a/http/firefox/patches-for-musl/0006-musl-Set-pthread-name-for-non-glibc-systems.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 70d47d18420fe9e3de8f896c08f97ef2596c9c84 Mon Sep 17 00:00:00 2001
-From: "Jory A. Pratt" <anarchy AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:10:03 +0200
-Subject: [PATCH 13/30] musl: Set pthread name for non glibc systems
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- js/src/threading/posix/PosixThread.cpp | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/js/src/threading/posix/PosixThread.cpp
b/js/src/threading/posix/PosixThread.cpp
-index 35532e375b..983da45326 100644
---- a/js/src/threading/posix/PosixThread.cpp
-+++ b/js/src/threading/posix/PosixThread.cpp
-@@ -115,8 +115,10 @@ void ThisThread::SetName(const char* name) {
- rv = 0;
- #elif defined(__NetBSD__)
- rv = pthread_setname_np(pthread_self(), "%s", (void*)name);
--#else
-+#elif defined(__GLIBC__)
- rv = pthread_setname_np(pthread_self(), name);
-+#else
-+ rv = 0;
- #endif
- MOZ_RELEASE_ASSERT(!rv);
- }
---
-2.34.1
-
diff --git
a/http/firefox/patches-for-musl/0009-bgo-748849-RUST_TARGET_override.patch
b/http/firefox/patches-for-musl/0009-bgo-748849-RUST_TARGET_override.patch
deleted file mode 100644
index b159cb5..0000000
--- a/http/firefox/patches-for-musl/0009-bgo-748849-RUST_TARGET_override.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From: Sam James <sam AT gentoo.org>
-Subject: Allow RUST_TARGET override for detected Rust triplet (fixes musl
build)
-
-Respect RUST_TARGET from the environment to override Mozilla's
-own triplet detection.
-
-If the variable is unset, the old logic is used.
-
-The issue is that Gentoo supports both, say:
-- x86_64-unknown-linux-musl, and
-- x86-64-gentoo-linux-musl
-
-Our Rust is built to understand
--gentoo- as a vendor target, but
-our Rust only actually includes
--unknown-.
-
-Mozilla's configure sees -gentoo-
-in CHOST and that Rust _understands_
--gentoo- and tries to use it, without
-verifying that we actually have
--gentoo- installed as a Rust target.
-
-This requires exporting RUST_TARGET
-in the ebuild, possibly like:
-````
-inherit rust-toolchain
-
-src_configure() {
- [...]
- export RUST_TARGET=$(rust_abi)
- [...]
-}
-````
-
-Inspired by Alpine's patch at
-https://git.alpinelinux.org/aports/tree/community/firefox/fix-rust-target.patch?id=740922900cf8042be6751fcfcccdd3fc11bd77d3.
-
-Bug: https://bugs.gentoo.org/748849
-Bug: https://bugs.gentoo.org/779178
-Bug: https://bugs.gentoo.org/836226
-Thanks-to: Georgy Yakovlev <gyakovlev AT gentoo.org>
---- a/build/moz.configure/rust.configure
-+++ b/build/moz.configure/rust.configure
-@@ -278,6 +278,7 @@ def rust_supported_targets(rustc):
- return data
-
-
-+@imports('os')
- def detect_rustc_target(host_or_target, arm_target, rust_supported_targets):
- # Rust's --target options are similar to, but not exactly the same
- # as, the autoconf-derived targets we use. An example would be that
-@@ -431,7 +432,7 @@ def detect_rustc_target(host_or_target, arm_target,
rust_supported_targets):
-
- return None
-
-- rustc_target = find_candidate(candidates)
-+ rustc_target = os.environ.get('RUST_TARGET', find_candidate(candidates))
-
- if rustc_target is None:
- die("Don't know how to translate {} for
rustc".format(host_or_target.alias))
diff --git
a/http/firefox/patches-for-musl/0011-bgo-929967-fix-pgo-on-musl.patch
b/http/firefox/patches-for-musl/0011-bgo-929967-fix-pgo-on-musl.patch
deleted file mode 100644
index 3c8457e..0000000
--- a/http/firefox/patches-for-musl/0011-bgo-929967-fix-pgo-on-musl.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py
-index 7354714..0385792 100755
---- a/build/pgo/profileserver.py
-+++ b/build/pgo/profileserver.py
-@@ -171,6 +171,9 @@ if __name__ == "__main__":
- env["UPLOAD_PATH"], "profile-run-1.log"
- )
-
-+ # Workaround for https://bugs.gentoo.org/929967
-+ env["LD_LIBRARY_PATH"] = os.path.join(os.getcwd(), "dist", "bin")
-+
- # Run Firefox a first time to initialize its profile
- runner = FirefoxRunner(
- profile=profile,
diff --git
a/http/firefox/patches-for-musl/0013-bmo-1657849-musl-sandbox-sched_setscheduler.patch
b/http/firefox/patches-for-musl/0013-bmo-1657849-musl-sandbox-sched_setscheduler.patch
deleted file mode 100644
index 4107656..0000000
---
a/http/firefox/patches-for-musl/0013-bmo-1657849-musl-sandbox-sched_setscheduler.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/security/sandbox/linux/SandboxFilter.cpp
b/security/sandbox/linux/SandboxFilter.cpp
---- a/security/sandbox/linux/SandboxFilter.cpp
-+++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -1924,12 +1924,20 @@ class GMPSandboxPolicy : public SandboxPolicyCommon {
- // bug 2071378.
- case __NR_sched_getaffinity:
- case __NR_sched_getparam:
-- case __NR_sched_getscheduler:
-- case __NR_sched_setscheduler: {
-+#if defined(LIBC_GLIBC)
-+ case __NR_sched_setscheduler:
-+#endif
-+ case __NR_sched_getscheduler: {
- Arg<pid_t> pid(0);
- return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
- }
-
-+#if !defined(LIBC_GLIBC)
-+ // For pthread_create(3) on musl; bug 1657849.
-+ case __NR_sched_setscheduler:
-+ return Allow();
-+#endif
-+
- // For clock(3) on older glibcs; bug 1304220.
- case __NR_times:
- return Allow();
-@@ -2209,13 +2217,21 @@ class RDDSandboxPolicy final : public
SandboxPolicyCommon {
- case __NR_sched_getparam:
- case __NR_sched_setparam:
- case __NR_sched_getscheduler:
-+#if defined(LIBC_GLIBC)
- case __NR_sched_setscheduler:
-+#endif
- case __NR_sched_getattr:
- case __NR_sched_setattr: {
- Arg<pid_t> pid(0);
- return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
- }
-
-+#if !defined(LIBC_GLIBC)
-+ // For pthread_create(3) on musl; bug 1657849.
-+ case __NR_sched_setscheduler:
-+ return Allow();
-+#endif
-+
- // The priority bounds are also used, sometimes (bug 1838675):
- case __NR_sched_get_priority_min:
- case __NR_sched_get_priority_max:
diff --git
a/http/firefox/patches-for-musl/0018-bgo-967694-musl-prctrl-exception-on-musl.patch
b/http/firefox/patches-for-musl/0018-bgo-967694-musl-prctrl-exception-on-musl.patch
deleted file mode 100644
index 94a4f5b..0000000
---
a/http/firefox/patches-for-musl/0018-bgo-967694-musl-prctrl-exception-on-musl.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Including linux/prrctl.h and sys/prctl.h with musl results in the
redifinition
-of `struct prctl_mm_map`.
---- a/third_party/libwebrtc/rtc_base/platform_thread_types.cc
-+++ b/third_party/libwebrtc/rtc_base/platform_thread_types.cc
-@@ -12,7 +12,9 @@
-
- // IWYU pragma: begin_keep
- #if defined(WEBRTC_LINUX)
-+#if defined(__GLIBC__)
- #include <linux/prctl.h>
-+#endif
- #include <sys/prctl.h>
- #include <sys/syscall.h>
-
diff --git
a/http/firefox/patches-for-musl/0019-bgo-970694-fix-missing-stdint.h-on-musl.patch
b/http/firefox/patches-for-musl/0019-bgo-970694-fix-missing-stdint.h-on-musl.patch
deleted file mode 100644
index 6155f06..0000000
---
a/http/firefox/patches-for-musl/0019-bgo-970694-fix-missing-stdint.h-on-musl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/xpcom/base/nsVersionComparator.h
b/xpcom/base/nsVersionComparator.h
-index 1e16bcb..a5a19e3 100644
---- a/xpcom/base/nsVersionComparator.h
-+++ b/xpcom/base/nsVersionComparator.h
-@@ -9,6 +9,7 @@
- #define nsVersionComparator_h_
-
- #include <assert.h>
-+#include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
- #if defined(XP_WIN) && !defined(UPDATER_NO_STRING_GLUE_STL)
diff --git
a/http/firefox/patches-for-musl/0020-bgo-970537-add-missing-header-for-musl.patch
b/http/firefox/patches-for-musl/0020-bgo-970537-add-missing-header-for-musl.patch
deleted file mode 100644
index 59716d8..0000000
---
a/http/firefox/patches-for-musl/0020-bgo-970537-add-missing-header-for-musl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git
a/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
b/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
-index 9b1efa0..a2dbee2 100644
---- a/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
-+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
-@@ -17,6 +17,7 @@
- #include <string>
- #include <type_traits>
- #include <vector>
-+#include <sys/types.h>
-
- // TODO(alcooper): Update include usage in downstream consumers and then
change
- // this to a forward declaration.
diff --git
a/http/firefox/patches-for-musl/0025-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
b/http/firefox/patches-for-musl/0025-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
deleted file mode 100644
index 3590e71..0000000
---
a/http/firefox/patches-for-musl/0025-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/dom/base/PrefetchCandidates.h 2026-08-24 16:18:13.000000000 -0400
-+++ b/dom/base/PrefetchCandidates.h 2026-09-04 08:15:11.208426255 -0400
-@@ -5,6 +5,7 @@
- #ifndef mozilla_dom_PrefetchCandidates_h
- #define mozilla_dom_PrefetchCandidates_h
-
-+#include <stdint.h>
- #include "mozilla/UniquePtr.h"
- #include "nsTArrayForwardDeclare.h"
diff --git
a/http/firefox/patches-for-musl/0027-bmo-2071536-audio_thread_priority-musl-fix.patch
b/http/firefox/patches-for-musl/0027-bmo-2071536-audio_thread_priority-musl-fix.patch
deleted file mode 100644
index 5568ec9..0000000
---
a/http/firefox/patches-for-musl/0027-bmo-2071536-audio_thread_priority-musl-fix.patch
+++ /dev/null
@@ -1,395 +0,0 @@
-From 81443b2080eba962852906534a2b205ee11d5ad5 Mon Sep 17 00:00:00 2001
-From: Paul Adenot <paul AT paul.cx>
-Date: Wed, 7 Oct 2026 12:45:26 +0000
-Subject: [PATCH] Bug 2071536 - Fix the build on musl.
- r=cubeb-reviewers,supply-chain-reviewers,pehrsons
-
-audio_thread_priority didn't compile on musl, this has been fixed
-upstream. audioipc is also updated, the tree now only uses 0.38.
-
-Differential Revision: https://phabricator.services.mozilla.com/D327331
----
- .cargo/config.toml.in | 4 +--
- Cargo.lock | 10 +++---
- supply-chain/imports.lock | 4 +--
- .../.cargo-checksum.json | 2 +-
- .../.cargo_vcs_info.json | 2 +-
- .../.github/workflows/rust.yml | 36 +++++++++++++++++++
- .../rust/audio_thread_priority/Cargo.lock | 2 +-
- .../rust/audio_thread_priority/Cargo.toml | 2 +-
- .../audio_thread_priority/Cargo.toml.orig | 2 +-
- .../audio_thread_priority/src/rt_linux.rs | 6 ++--
- .../src/rt_linux_native.rs | 32 +++++++++++++----
- .../audioipc2-client/.cargo-checksum.json | 2 +-
- third_party/rust/audioipc2-client/Cargo.toml | 2 +-
- .../audioipc2-server/.cargo-checksum.json | 2 +-
- third_party/rust/audioipc2-server/Cargo.toml | 2 +-
- .../rust/audioipc2/.cargo-checksum.json | 2 +-
- third_party/rust/audioipc2/Cargo.toml | 2 +-
- toolkit/library/rust/shared/Cargo.toml | 6 ++--
- 18 files changed, 89 insertions(+), 31 deletions(-)
-
-diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in
-index a903b00463844..8b4f608287727 100644
---- a/.cargo/config.toml.in
-+++ b/.cargo/config.toml.in
-@@ -65,9 +65,9 @@ git = "https://github.com/martinthomson/ohttp"
- rev = "600931b5a1e947776cbaad931ed78f1e89005352"
- replace-with = "vendored-sources"
-
--[source."git+https://github.com/mozilla/audioipc?rev=d3c9825"]
-+[source."git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8"]
- git = "https://github.com/mozilla/audioipc"
--rev = "d3c9825"
-+rev = "ef46a7bd05032d1577208ff048d444cc7412c7b8"
- replace-with = "vendored-sources"
-
- [source."git+https://github.com/mozilla/authenticator-rs?tag=v0.6.0"]
-diff --git a/Cargo.lock b/Cargo.lock
-index 02c727c6a2241..5ecd60bee9daa 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -336,9 +336,9 @@ dependencies = [
-
- [[package]]
- name = "audio_thread_priority"
--version = "0.37.0"
-+version = "0.38.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum =
"e58c7a923538aa84eef9947d81924fb9f34d7db6004e179218ab57a7bb7700b6"
-+checksum =
"e0b30b2f3d2da482d0faeaafd8f88a38fbc62abb58d3b402cfa195793f4c92ab"
- dependencies = [
- "cfg-if",
- "dbus",
-@@ -351,7 +351,7 @@ dependencies = [
- [[package]]
- name = "audioipc2"
- version = "0.6.0"
--source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
-+source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
- dependencies = [
- "arrayvec",
- "ashmem",
-@@ -377,7 +377,7 @@ dependencies = [
- [[package]]
- name = "audioipc2-client"
- version = "0.6.0"
--source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
-+source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
- dependencies = [
- "audio_thread_priority",
- "audioipc2",
-@@ -388,7 +388,7 @@ dependencies = [
- [[package]]
- name = "audioipc2-server"
- version = "0.6.0"
--source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
-+source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
- dependencies = [
- "audio_thread_priority",
- "audioipc2",
-diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock
-index 3ee5c35efa206..1f8eb40c6c31c 100644
---- a/supply-chain/imports.lock
-+++ b/supply-chain/imports.lock
-@@ -30,8 +30,8 @@ user-login = "Amanieu"
- user-name = "Amanieu d'Antras"
-
- [[publisher.audio_thread_priority]]
--version = "0.37.0"
--when = "2026-08-10"
-+version = "0.38.0"
-+when = "2026-09-17"
- user-id = 1258
- user-login = "padenot"
- user-name = "Paul Adenot"
-diff --git a/third_party/rust/audio_thread_priority/.cargo-checksum.json
b/third_party/rust/audio_thread_priority/.cargo-checksum.json
-index 9690a6292e384..e1e8974824974 100644
---- a/third_party/rust/audio_thread_priority/.cargo-checksum.json
-+++ b/third_party/rust/audio_thread_priority/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{".cargo_vcs_info.json":"13629c1e0aabfcffbae3bddf6a472231b10f973817c0bd549f5e2782036184dd",".github/workflows/rust.yml":"f1ff0376f6d30c204620d50af9c60c4374b7e5001ad290e3bf3595925923f8f2","Cargo.lock":"fff166a1e4746a81e6b2b060692ed73790e8472e7c0526f60f2870baf5edb480","Cargo.toml":"ada29a3c844b5aaa099cea6854b1ca73cf98795ab52b8085c196c2931d08688d","Cargo.toml.orig":"6bdedb288e992ab55fb7d728a7941b1c85fb430c75c72fae685126b87c5f9372","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"c32ac62eaa6b9482e5a56c407a47ec470ccadcdc8c95b06d38bd593987975a74","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"6e384fb8103be42882a162f22f5f7350a427ef797d895f662f54953dd9aea59b","src/rt_android.rs":"2e54e3ac527bef0c11790013c9399e1f388752a952af667c85da0f6f53eeb7c9","src/rt_linux.rs":"53204f6aa158b270a22b4099cde58558ec5ff96292ac8955581b4bcfbf3443d3","src/rt_linux_native.rs":"283ba4e200a1de707a4c336cae5d7f2fec9fc9c7a5a0794c286b4228bfe926b4","src/rt_mach.rs":"723e29ee7392b10c30f803b90a23ec6cd7a8aaaf6e81fe711e86cb6588a13ff0","src/rt_win.rs":"1743f579aea1b29940fee2f0652e23f76e08153ec7cbca621e5720d526e25b96"},"package":"e58c7a923538aa84eef9947d81924fb9f34d7db6004e179218ab57a7bb7700b6"}
-\ No newline at end of file
-+{"files":{".cargo_vcs_info.json":"941d7dd364a5ca6de04e5a1129197df302d661f809bab3d5ba6d63eb63e364e6",".github/workflows/rust.yml":"0b36b48d6f1976ae3a089596945ef398e02cfcb584a8dd04cb1fc2f16d2fd45f","Cargo.lock":"338d7d500e7cd330949216e3e9e7242cf91439b3eec90a5a75812df7f1fa4108","Cargo.toml":"8f76e327c4ac3c0e333491e7d35c52053574c7ec403b0cc4344893459eaadef8","Cargo.toml.orig":"0f774ee30569ad64f6de4affb15469b240f91086ef2e02320d60e248c853938f","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"c32ac62eaa6b9482e5a56c407a47ec470ccadcdc8c95b06d38bd593987975a74","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"6e384fb8103be42882a162f22f5f7350a427ef797d895f662f54953dd9aea59b","src/rt_android.rs":"2e54e3ac527bef0c11790013c9399e1f388752a952af667c85da0f6f53eeb7c9","src/rt_linux.rs":"6bfb616de5a089279aaa306ca408433c873fe66812b144750f77f9d975cc166d","src/rt_linux_native.rs":"0634c3bc9ad4f4cf86f30735b3234fbd1d544ce28009305fede08ca27e745538","src/rt_mach.rs":"723e29ee7392b10c30f803b90a23ec6cd7a8aaaf6e81fe711e86cb6588a13ff0","src/rt_win.rs":"1743f579aea1b29940fee2f0652e23f76e08153ec7cbca621e5720d526e25b96"},"package":"e0b30b2f3d2da482d0faeaafd8f88a38fbc62abb58d3b402cfa195793f4c92ab"}
-\ No newline at end of file
-diff --git a/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
b/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
-index 7daddfc03701d..c818c1ab58f09 100644
---- a/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
-+++ b/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
-@@ -1,6 +1,6 @@
- {
- "git": {
-- "sha1": "0aa1ecd7719b582b54f7648eec1f76e9f18cdd3c"
-+ "sha1": "f7823feae23ac705d09156eaa84a4deea75fa55e"
- },
- "path_in_vcs": ""
- }
-\ No newline at end of file
-diff --git
a/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
b/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
-index 8c71d5acb1919..916a27cb5b3a5 100644
---- a/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
-+++ b/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
-@@ -91,3 +91,39 @@ jobs:
- sudo prlimit --pid $$ --rtprio=10:10
- echo "RLIMIT_RTPRIO soft=$(ulimit -Sr) hard=$(ulimit -Hr)"
- rustup run ${{ matrix.rust }} cargo test --no-default-features
-+
-+ # musl defines pthread_t as a pointer instead of an integer, unlike glibc.
-+ build-musl:
-+ runs-on: ubuntu-24.04
-+ strategy:
-+ matrix:
-+ rust: [stable, nightly]
-+
-+ steps:
-+ - uses: actions/checkout@v2
-+
-+ - name: Install Rust (musl target)
-+ run: |
-+ rustup toolchain install ${{ matrix.rust }} --profile minimal
-+ rustup target add x86_64-unknown-linux-musl --toolchain ${{
matrix.rust }}
-+
-+ - name: Install Dependencies
-+ run: sudo apt-get update && sudo apt-get install libdbus-1-dev
-+
-+ - name: Build (musl, with dbus)
-+ shell: bash
-+ # The crate is a staticlib/rlib, so this doesn't link, and hence
needs no musl libdbus: only
-+ # the headers, which pkg-config finds for the host.
-+ run: PKG_CONFIG_ALLOW_CROSS=1 rustup run ${{ matrix.rust }} cargo
build --target x86_64-unknown-linux-musl --features dbus
-+
-+ - name: Build (musl, without dbus)
-+ shell: bash
-+ run: rustup run ${{ matrix.rust }} cargo build --target
x86_64-unknown-linux-musl --no-default-features
-+
-+ - name: Test (musl, without dbus)
-+ shell: bash
-+ # Statically linked musl test binaries run fine on the glibc runner.
As in the fallback job,
-+ # the native promotion path needs permission to request real-time
scheduling.
-+ run: |
-+ sudo prlimit --pid $$ --rtprio=10:10
-+ rustup run ${{ matrix.rust }} cargo test --target
x86_64-unknown-linux-musl --no-default-features -- --nocapture
-diff --git a/third_party/rust/audio_thread_priority/Cargo.lock
b/third_party/rust/audio_thread_priority/Cargo.lock
-index fa8f0b5f0a7a1..de676cf7f087e 100644
---- a/third_party/rust/audio_thread_priority/Cargo.lock
-+++ b/third_party/rust/audio_thread_priority/Cargo.lock
-@@ -4,7 +4,7 @@ version = 4
-
- [[package]]
- name = "audio_thread_priority"
--version = "0.37.0"
-+version = "0.38.0"
- dependencies = [
- "cfg-if",
- "dbus",
-diff --git a/third_party/rust/audio_thread_priority/Cargo.toml
b/third_party/rust/audio_thread_priority/Cargo.toml
-index 8456277e7ed7f..fa1177ffeccf5 100644
---- a/third_party/rust/audio_thread_priority/Cargo.toml
-+++ b/third_party/rust/audio_thread_priority/Cargo.toml
-@@ -12,7 +12,7 @@
- [package]
- edition = "2018"
- name = "audio_thread_priority"
--version = "0.37.0"
-+version = "0.38.0"
- authors = ["Paul Adenot <paul AT paul.cx>"]
- build = false
- autolib = false
-diff --git a/third_party/rust/audio_thread_priority/Cargo.toml.orig
b/third_party/rust/audio_thread_priority/Cargo.toml.orig
-index 1d96d3d8e7a7a..cab6972721335 100644
---- a/third_party/rust/audio_thread_priority/Cargo.toml.orig
-+++ b/third_party/rust/audio_thread_priority/Cargo.toml.orig
-@@ -1,6 +1,6 @@
- [package]
- name = "audio_thread_priority"
--version = "0.37.0"
-+version = "0.38.0"
- authors = ["Paul Adenot <paul AT paul.cx>"]
- description = "Bump a thread to real-time priority, for audio work, on
Linux, Android, Windows and macOS"
- license = "MPL-2.0"
-diff --git a/third_party/rust/audio_thread_priority/src/rt_linux.rs
b/third_party/rust/audio_thread_priority/src/rt_linux.rs
-index 982803c3242d5..82f9bff22a499 100644
---- a/third_party/rust/audio_thread_priority/src/rt_linux.rs
-+++ b/third_party/rust/audio_thread_priority/src/rt_linux.rs
-@@ -62,7 +62,9 @@ impl RtPriorityThreadInfoInternal {
- /// struct, so no uninitialized padding bytes are ever read. Any
trailing padding stays zero.
- pub fn serialize(&self) -> [u8; std::mem::size_of::<Self>()] {
- let thread_id = self.thread_id.to_ne_bytes();
-- let pthread_id = self.pthread_id.to_ne_bytes();
-+ // `pthread_t` is an integer with glibc but a pointer with musl: go
through `usize`, which
-+ // is as wide as both.
-+ let pthread_id = (self.pthread_id as usize).to_ne_bytes();
- let pid = self.pid.to_ne_bytes();
- let policy = self.policy.to_ne_bytes();
- let priority = self.priority.to_ne_bytes();
-@@ -91,7 +93,7 @@ impl RtPriorityThreadInfoInternal {
- let mut src = bytes.iter().copied();
- RtPriorityThreadInfoInternal {
- thread_id: kernel_pid_t::from_ne_bytes(take(&mut src)),
-- pthread_id: libc::pthread_t::from_ne_bytes(take(&mut src)),
-+ pthread_id: usize::from_ne_bytes(take(&mut src)) as
libc::pthread_t,
- pid: libc::pid_t::from_ne_bytes(take(&mut src)),
- policy: libc::c_int::from_ne_bytes(take(&mut src)),
- priority: libc::c_int::from_ne_bytes(take(&mut src)),
-diff --git a/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
b/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
-index def33b09f14ea..9420e89fe6e3f 100644
---- a/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
-+++ b/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
-@@ -78,7 +78,9 @@ impl RtPriorityThreadInfoInternal {
- /// struct, so no uninitialized padding bytes are ever read. Any
trailing padding stays zero.
- pub fn serialize(&self) -> [u8; std::mem::size_of::<Self>()] {
- let thread_id = self.thread_id.to_ne_bytes();
-- let pthread_id = self.pthread_id.to_ne_bytes();
-+ // `pthread_t` is an integer with glibc but a pointer with musl: go
through `usize`, which
-+ // is as wide as both.
-+ let pthread_id = (self.pthread_id as usize).to_ne_bytes();
- let pid = self.pid.to_ne_bytes();
- let policy = self.policy.to_ne_bytes();
- let priority = self.priority.to_ne_bytes();
-@@ -107,7 +109,7 @@ impl RtPriorityThreadInfoInternal {
- let mut src = bytes.iter().copied();
- RtPriorityThreadInfoInternal {
- thread_id: kernel_pid_t::from_ne_bytes(take(&mut src)),
-- pthread_id: libc::pthread_t::from_ne_bytes(take(&mut src)),
-+ pthread_id: usize::from_ne_bytes(take(&mut src)) as
libc::pthread_t,
- pid: libc::pid_t::from_ne_bytes(take(&mut src)),
- policy: libc::c_int::from_ne_bytes(take(&mut src)),
- priority: libc::c_int::from_ne_bytes(take(&mut src)),
-@@ -140,6 +142,26 @@ fn sched_error(context: &str) ->
AudioThreadPriorityError {
- AudioThreadPriorityError::new(&format!("{}: {}", context,
OSError::last_os_error()))
- }
-
-+/// Set the scheduling policy and priority of the thread with tid `tid`.
-+///
-+/// This goes through the syscall directly because musl's
`sched_setscheduler` is a stub that always
-+/// fails with `ENOSYS`: POSIX specifies it as process-scoped, which Linux
does not provide. The
-+/// syscall is per-thread, which is what is needed here.
-+fn sched_setscheduler(
-+ tid: libc::pid_t,
-+ policy: libc::c_int,
-+ param: &libc::sched_param,
-+) -> libc::c_long {
-+ unsafe {
-+ libc::syscall(
-+ libc::SYS_sched_setscheduler,
-+ tid,
-+ policy,
-+ param as *const libc::sched_param,
-+ )
-+ }
-+}
-+
- /// A thread's system-wide tid narrowed to `pid_t` for the scheduler
syscalls. A tid always fits in
- /// `pid_t` (it is a pid), but convert defensively rather than truncating.
- fn scheduler_tid(thread_id: kernel_pid_t) -> Result<libc::pid_t,
AudioThreadPriorityError> {
-@@ -236,8 +258,7 @@ pub fn promote_thread_to_real_time_internal(
- let mut param = unsafe { std::mem::zeroed::<libc::sched_param>() };
- param.sched_priority = requested_priority();
-
-- let rc =
-- unsafe { libc::sched_setscheduler(tid, libc::SCHED_FIFO |
SCHED_RESET_ON_FORK, ¶m) };
-+ let rc = sched_setscheduler(tid, libc::SCHED_FIFO |
SCHED_RESET_ON_FORK, ¶m);
- if rc < 0 {
- return Err(sched_error("could not promote thread"));
- }
-@@ -254,8 +275,7 @@ pub fn demote_thread_from_real_time_internal(
- let tid = scheduler_tid(thread_info.thread_id)?;
- let mut param = unsafe { std::mem::zeroed::<libc::sched_param>() };
- param.sched_priority = thread_info.priority;
-- let rc =
-- unsafe { libc::sched_setscheduler(tid, thread_info.policy |
SCHED_RESET_ON_FORK, ¶m) };
-+ let rc = sched_setscheduler(tid, thread_info.policy |
SCHED_RESET_ON_FORK, ¶m);
- if rc < 0 {
- return Err(sched_error("could not demote thread"));
- }
-diff --git a/third_party/rust/audioipc2-client/.cargo-checksum.json
b/third_party/rust/audioipc2-client/.cargo-checksum.json
-index d1b5b396f9b6b..d223c59ba80f7 100644
---- a/third_party/rust/audioipc2-client/.cargo-checksum.json
-+++ b/third_party/rust/audioipc2-client/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"e16f57291b3e7be5e035f2b1793b5864ae091d573df060ff032d484ca608c6a8","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/context.rs":"c351b782e9bb83a1fbc5127e07a4d06c59978256bb0dc265df256eb948a6cf4e","src/lib.rs":"0322bba9529c81c891bc2c033d402590058014da0df0730dbf9532380c2dabe8","src/send_recv.rs":"cd396a704f205d4ef680f484461a065aa29f624603d5031f9973779826fb3c19","src/stream.rs":"d7d4967c8ef760a58592aff23157357646528c1c83c9de394e1f9c8043f72a81"},"package":null}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"b74876a8e35719161990b55d3b83127d883efcdddce79c866044ba59ab17e849","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/context.rs":"c351b782e9bb83a1fbc5127e07a4d06c59978256bb0dc265df256eb948a6cf4e","src/lib.rs":"0322bba9529c81c891bc2c033d402590058014da0df0730dbf9532380c2dabe8","src/send_recv.rs":"cd396a704f205d4ef680f484461a065aa29f624603d5031f9973779826fb3c19","src/stream.rs":"d7d4967c8ef760a58592aff23157357646528c1c83c9de394e1f9c8043f72a81"},"package":null}
-\ No newline at end of file
-diff --git a/third_party/rust/audioipc2-client/Cargo.toml
b/third_party/rust/audioipc2-client/Cargo.toml
-index 19c71182ce6fb..c0abc1f74e091 100644
---- a/third_party/rust/audioipc2-client/Cargo.toml
-+++ b/third_party/rust/audioipc2-client/Cargo.toml
-@@ -36,7 +36,7 @@ cubeb-backend = "0.34"
- log = "0.4"
-
- [dependencies.audio_thread_priority]
--version = "0.37"
-+version = "0.38"
- default-features = false
-
- [dependencies.audioipc]
-diff --git a/third_party/rust/audioipc2-server/.cargo-checksum.json
b/third_party/rust/audioipc2-server/.cargo-checksum.json
-index d7bab1720f7c1..931775e6ec78b 100644
---- a/third_party/rust/audioipc2-server/.cargo-checksum.json
-+++ b/third_party/rust/audioipc2-server/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"80d2db99b52346498fbdfd082fa294bf962d2442eefaaeb001ef04b009e5100b","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/lib.rs":"a19c1bad94e16a0cfcd1e93c25b97bf58cc00e9666b5c31652d8a2242decb36c","src/server.rs":"28d494e2d4a6ad673f77912578179eb7b1b8b927d7fd63048d099284d03aeda7"},"package":null}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"7169f1242e389376f935ea01e29d17d7ebe52fcac3631c332357e1272fab1ba0","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/lib.rs":"a19c1bad94e16a0cfcd1e93c25b97bf58cc00e9666b5c31652d8a2242decb36c","src/server.rs":"28d494e2d4a6ad673f77912578179eb7b1b8b927d7fd63048d099284d03aeda7"},"package":null}
-\ No newline at end of file
-diff --git a/third_party/rust/audioipc2-server/Cargo.toml
b/third_party/rust/audioipc2-server/Cargo.toml
-index 7e00b45c32106..dc16be95944ea 100644
---- a/third_party/rust/audioipc2-server/Cargo.toml
-+++ b/third_party/rust/audioipc2-server/Cargo.toml
-@@ -38,7 +38,7 @@ once_cell = "1.2.0"
- slab = "0.4"
-
- [dependencies.audio_thread_priority]
--version = "0.37"
-+version = "0.38"
- default-features = false
-
- [dependencies.audioipc]
-diff --git a/third_party/rust/audioipc2/.cargo-checksum.json
b/third_party/rust/audioipc2/.cargo-checksum.json
-index cae4359f76de7..a49135bb208bc 100644
---- a/third_party/rust/audioipc2/.cargo-checksum.json
-+++ b/third_party/rust/audioipc2/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"e5f446c16280d1294e630015be9bda06c489f20dde65c6d3c3b974325e676fdc","benches/serialization.rs":"495e9128fb7892c3460bf55c6dc56a3d9e8853331f566d43231e30fad2c00ff4","src/codec.rs":"49120cd77f09e4acace1629936157fc9afa0a846c9018ad2dd021b5f0e6577fd","src/errors.rs":"36fe5299aee55761366ddc5dcf2f6fb5d81d8a718c59394b6baeb4075fdfc1a7","src/ipccore.rs":"a06cf09aa600df1280538e7946223ab979f088848213fc9c1a394af312f81fbd","src/lib.rs":"98ba1fe514326d2ef374c9ccc3a7125836cdcc3abe62abcf9a4af0084205538a","src/messages.rs":"d294f24ce018603d2e141af3a06a983421a8da191275937bd2cfa8523064def1","src/rpccore.rs":"058477df2304b4d8c5d1a347663301bcdea3f772762f806963e63a0c8df9ea73","src/shm.rs":"61c9f5d158914cb0ed34d7ce898d1ab24d1a892c68ee0406ff03d01e5c172d32","src/sys/mod.rs":"e6fa1d260abf093e1f7b50185195e2d3aee0eb8c9774c6f253953b5896d838f3","src/sys/unix/cmsg.rs":"e7b7154d55ce57e16ba93d4982630077bf6c70fa56e572956f14ae15aa43cb4c","src/sys/unix/mod.rs":"de0cd5c7a44cfd7c1f5b8cd0260089dc7245373ff9baa0ce44acfdc2d407a9d1","src/sys/unix/msg.rs":"25244de3eba920fa42e032f8fa4ea4913a9fdeb5124ade61e707f6cc6dd946b0","src/sys/windows/mod.rs":"7eaabb76e62c6962b636320e2bbf79a78fce61659c799a798f7dd6d56b0be8a1"},"package":null}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"4381ef3bff9eb36cfb1f0ef7793f09204229d3f7260144a2501ae83ca40b70c1","benches/serialization.rs":"495e9128fb7892c3460bf55c6dc56a3d9e8853331f566d43231e30fad2c00ff4","src/codec.rs":"49120cd77f09e4acace1629936157fc9afa0a846c9018ad2dd021b5f0e6577fd","src/errors.rs":"36fe5299aee55761366ddc5dcf2f6fb5d81d8a718c59394b6baeb4075fdfc1a7","src/ipccore.rs":"a06cf09aa600df1280538e7946223ab979f088848213fc9c1a394af312f81fbd","src/lib.rs":"98ba1fe514326d2ef374c9ccc3a7125836cdcc3abe62abcf9a4af0084205538a","src/messages.rs":"d294f24ce018603d2e141af3a06a983421a8da191275937bd2cfa8523064def1","src/rpccore.rs":"058477df2304b4d8c5d1a347663301bcdea3f772762f806963e63a0c8df9ea73","src/shm.rs":"61c9f5d158914cb0ed34d7ce898d1ab24d1a892c68ee0406ff03d01e5c172d32","src/sys/mod.rs":"e6fa1d260abf093e1f7b50185195e2d3aee0eb8c9774c6f253953b5896d838f3","src/sys/unix/cmsg.rs":"e7b7154d55ce57e16ba93d4982630077bf6c70fa56e572956f14ae15aa43cb4c","src/sys/unix/mod.rs":"de0cd5c7a44cfd7c1f5b8cd0260089dc7245373ff9baa0ce44acfdc2d407a9d1","src/sys/unix/msg.rs":"25244de3eba920fa42e032f8fa4ea4913a9fdeb5124ade61e707f6cc6dd946b0","src/sys/windows/mod.rs":"7eaabb76e62c6962b636320e2bbf79a78fce61659c799a798f7dd6d56b0be8a1"},"package":null}
-\ No newline at end of file
-diff --git a/third_party/rust/audioipc2/Cargo.toml
b/third_party/rust/audioipc2/Cargo.toml
-index d9aba1e0d6c9e..c60630877f11e 100644
---- a/third_party/rust/audioipc2/Cargo.toml
-+++ b/third_party/rust/audioipc2/Cargo.toml
-@@ -68,7 +68,7 @@ features = ["html_reports"]
- ashmem = "0.1.2"
-
- [target.'cfg(target_os = "linux")'.dependencies.audio_thread_priority]
--version = "0.37"
-+version = "0.38"
- default-features = false
-
- [target."cfg(unix)".dependencies]
-diff --git a/toolkit/library/rust/shared/Cargo.toml
b/toolkit/library/rust/shared/Cargo.toml
-index 13f9259c2d5c5..a8cb59c7853eb 100644
---- a/toolkit/library/rust/shared/Cargo.toml
-+++ b/toolkit/library/rust/shared/Cargo.toml
-@@ -27,8 +27,8 @@ webrender_bindings = { path =
"../../../../gfx/webrender_bindings" }
- cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs",
rev = "840f69c1b3f95accd582555e10abcef8ee67514b", optional = true }
- cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs",
rev="88194f91c8778fa608a19af7b91306094525595d", optional = true,
features=["pulse-dlopen"] }
- cubeb-sys = { version = "0.34", optional = true, features=["gecko-in-tree"]
}
--audioipc2-client = { git = "https://github.com/mozilla/audioipc", rev =
"d3c9825", optional = true }
--audioipc2-server = { git = "https://github.com/mozilla/audioipc", rev =
"d3c9825", optional = true }
-+audioipc2-client = { git = "https://github.com/mozilla/audioipc", rev =
"ef46a7bd05032d1577208ff048d444cc7412c7b8", optional = true }
-+audioipc2-server = { git = "https://github.com/mozilla/audioipc", rev =
"ef46a7bd05032d1577208ff048d444cc7412c7b8", optional = true }
- encoding_glue = { path = "../../../../intl/encoding_glue" }
- locale_service_glue = { path =
"../../../../intl/locale/rust/locale_service_glue" }
- app_collator_glue = { path = "../../../../intl/app_collator_glue" }
-@@ -48,7 +48,7 @@ storage = { path = "../../../../storage/rust" }
- bookmark_sync = { path = "../../../components/places/bookmark_sync",
optional = true }
- buildid_reader_ffi = { path = "../../buildid_reader/ffi" }
- chardetng_c = "1.0.0"
--audio_thread_priority = { version = "0.37", default-features = false }
-+audio_thread_priority = { version = "0.38.0", default-features = false }
- mdns_service = {
path="../../../../dom/media/webrtc/transport/mdns_service", features =
["profiler"], optional = true }
- neqo_glue = { path = "../../../../netwerk/socket/neqo_glue" }
- wgpu_bindings = { path = "../../../../gfx/wgpu_bindings" }
-
diff --git
a/http/firefox/patches-for-musl/0028-bmo-2074346-musl-fix-parakeet-cpp.patch
b/http/firefox/patches-for-musl/0028-bmo-2074346-musl-fix-parakeet-cpp.patch
deleted file mode 100644
index 30b12ea..0000000
---
a/http/firefox/patches-for-musl/0028-bmo-2074346-musl-fix-parakeet-cpp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/third_party/parakeet.cpp/src/backend.hpp
b/third_party/parakeet.cpp/src/backend.hpp
-index d534ec9..f17ec23 100644
---- a/third_party/parakeet.cpp/src/backend.hpp
-+++ b/third_party/parakeet.cpp/src/backend.hpp
-@@ -1,5 +1,6 @@
- #pragma once
- #include <cstddef>
-+#include <cstdint>
- #include <functional>
- #include <string>
- #include <vector>
diff --git
a/http/firefox/patches/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
b/http/firefox/patches/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
new file mode 100644
index 0000000..300846f
--- /dev/null
+++
b/http/firefox/patches/0003-musl-Add-alternate-name-for-private-siginfo-struct-m.patch
@@ -0,0 +1,35 @@
+From d8ec0bd6f3b0ad2dfd8a97a864f08decaafdea69 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel AT sholland.org>
+Date: Sun, 8 Jan 2017 19:16:38 -0600
+Subject: [PATCH 10/30] musl: Add alternate name for private siginfo struct
+ member
+
+musl does not provide a macro for detecting its presence. For now,
+assume that it is the only non-glibc-based libc on Linux systems.
+
+Signed-off-by: Samuel Holland <samuel AT sholland.org>
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
+index 9884be8bb2..86d8f88e30 100644
+--- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
++++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc
+@@ -174,7 +174,11 @@ void Trap::SigSys(int nr, LinuxSigInfo* info,
ucontext_t* ctx) {
+ // If the version of glibc doesn't include this information in
+ // siginfo_t (older than 2.17), we need to explicitly copy it
+ // into an arch_sigsys structure.
+- memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
++#if defined(__GLIBC__)
++ memcpy(&sigsys, &info->_sifields, sizeof(sigsys));
++#else
++ memcpy(&sigsys, &info->__si_fields, sizeof(sigsys));
++#endif
+ #endif
+
+ #if defined(__mips__)
+--
+2.34.1
+
diff --git a/http/firefox/patches/0010-bgo-748849-RUST_TARGET_override.patch
b/http/firefox/patches/0010-bgo-748849-RUST_TARGET_override.patch
new file mode 100644
index 0000000..b159cb5
--- /dev/null
+++ b/http/firefox/patches/0010-bgo-748849-RUST_TARGET_override.patch
@@ -0,0 +1,61 @@
+From: Sam James <sam AT gentoo.org>
+Subject: Allow RUST_TARGET override for detected Rust triplet (fixes musl
build)
+
+Respect RUST_TARGET from the environment to override Mozilla's
+own triplet detection.
+
+If the variable is unset, the old logic is used.
+
+The issue is that Gentoo supports both, say:
+- x86_64-unknown-linux-musl, and
+- x86-64-gentoo-linux-musl
+
+Our Rust is built to understand
+-gentoo- as a vendor target, but
+our Rust only actually includes
+-unknown-.
+
+Mozilla's configure sees -gentoo-
+in CHOST and that Rust _understands_
+-gentoo- and tries to use it, without
+verifying that we actually have
+-gentoo- installed as a Rust target.
+
+This requires exporting RUST_TARGET
+in the ebuild, possibly like:
+````
+inherit rust-toolchain
+
+src_configure() {
+ [...]
+ export RUST_TARGET=$(rust_abi)
+ [...]
+}
+````
+
+Inspired by Alpine's patch at
+https://git.alpinelinux.org/aports/tree/community/firefox/fix-rust-target.patch?id=740922900cf8042be6751fcfcccdd3fc11bd77d3.
+
+Bug: https://bugs.gentoo.org/748849
+Bug: https://bugs.gentoo.org/779178
+Bug: https://bugs.gentoo.org/836226
+Thanks-to: Georgy Yakovlev <gyakovlev AT gentoo.org>
+--- a/build/moz.configure/rust.configure
++++ b/build/moz.configure/rust.configure
+@@ -278,6 +278,7 @@ def rust_supported_targets(rustc):
+ return data
+
+
++@imports('os')
+ def detect_rustc_target(host_or_target, arm_target, rust_supported_targets):
+ # Rust's --target options are similar to, but not exactly the same
+ # as, the autoconf-derived targets we use. An example would be that
+@@ -431,7 +432,7 @@ def detect_rustc_target(host_or_target, arm_target,
rust_supported_targets):
+
+ return None
+
+- rustc_target = find_candidate(candidates)
++ rustc_target = os.environ.get('RUST_TARGET', find_candidate(candidates))
+
+ if rustc_target is None:
+ die("Don't know how to translate {} for
rustc".format(host_or_target.alias))
diff --git a/http/firefox/patches/0012-bgo-929967-fix-pgo-on-musl.patch
b/http/firefox/patches/0012-bgo-929967-fix-pgo-on-musl.patch
new file mode 100644
index 0000000..3c8457e
--- /dev/null
+++ b/http/firefox/patches/0012-bgo-929967-fix-pgo-on-musl.patch
@@ -0,0 +1,14 @@
+diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py
+index 7354714..0385792 100755
+--- a/build/pgo/profileserver.py
++++ b/build/pgo/profileserver.py
+@@ -171,6 +171,9 @@ if __name__ == "__main__":
+ env["UPLOAD_PATH"], "profile-run-1.log"
+ )
+
++ # Workaround for https://bugs.gentoo.org/929967
++ env["LD_LIBRARY_PATH"] = os.path.join(os.getcwd(), "dist", "bin")
++
+ # Run Firefox a first time to initialize its profile
+ runner = FirefoxRunner(
+ profile=profile,
diff --git
a/http/firefox/patches/0014-bmo-1657849-musl-sandbox-sched_setscheduler.patch
b/http/firefox/patches/0014-bmo-1657849-musl-sandbox-sched_setscheduler.patch
new file mode 100644
index 0000000..704e837
--- /dev/null
+++
b/http/firefox/patches/0014-bmo-1657849-musl-sandbox-sched_setscheduler.patch
@@ -0,0 +1,48 @@
+diff --git a/security/sandbox/linux/SandboxFilter.cpp
b/security/sandbox/linux/SandboxFilter.cpp
+--- a/security/sandbox/linux/SandboxFilter.cpp
++++ b/security/sandbox/linux/SandboxFilter.cpp
+@@ -1924,12 +1924,20 @@ class GMPSandboxPolicy : public SandboxPolicyCommon {
+ // bug 2071378.
+ case __NR_sched_getaffinity:
+ case __NR_sched_getparam:
+- case __NR_sched_getscheduler:
+- case __NR_sched_setscheduler: {
++#if defined(__GLIBC__)
++ case __NR_sched_setscheduler:
++#endif
++ case __NR_sched_getscheduler: {
+ Arg<pid_t> pid(0);
+ return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
+ }
+
++#if !defined(__GLIBC__)
++ // For pthread_create(3) on musl; bug 1657849.
++ case __NR_sched_setscheduler:
++ return Allow();
++#endif
++
+ // For clock(3) on older glibcs; bug 1304220.
+ case __NR_times:
+ return Allow();
+@@ -2209,13 +2217,21 @@ class RDDSandboxPolicy final : public
SandboxPolicyCommon {
+ case __NR_sched_getparam:
+ case __NR_sched_setparam:
+ case __NR_sched_getscheduler:
++#if defined(__GLIBC__)
+ case __NR_sched_setscheduler:
++#endif
+ case __NR_sched_getattr:
+ case __NR_sched_setattr: {
+ Arg<pid_t> pid(0);
+ return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
+ }
+
++#if !defined(__GLIBC__)
++ // For pthread_create(3) on musl; bug 1657849.
++ case __NR_sched_setscheduler:
++ return Allow();
++#endif
++
+ // The priority bounds are also used, sometimes (bug 1838675):
+ case __NR_sched_get_priority_min:
+ case __NR_sched_get_priority_max:
diff --git
a/http/firefox/patches/0019-bgo-967694-musl-prctrl-exception-on-musl.patch
b/http/firefox/patches/0019-bgo-967694-musl-prctrl-exception-on-musl.patch
new file mode 100644
index 0000000..94a4f5b
--- /dev/null
+++ b/http/firefox/patches/0019-bgo-967694-musl-prctrl-exception-on-musl.patch
@@ -0,0 +1,14 @@
+Including linux/prrctl.h and sys/prctl.h with musl results in the
redifinition
+of `struct prctl_mm_map`.
+--- a/third_party/libwebrtc/rtc_base/platform_thread_types.cc
++++ b/third_party/libwebrtc/rtc_base/platform_thread_types.cc
+@@ -12,7 +12,9 @@
+
+ // IWYU pragma: begin_keep
+ #if defined(WEBRTC_LINUX)
++#if defined(__GLIBC__)
+ #include <linux/prctl.h>
++#endif
+ #include <sys/prctl.h>
+ #include <sys/syscall.h>
+
diff --git
a/http/firefox/patches/0020-bgo-970694-fix-missing-stdint.h-on-musl.patch
b/http/firefox/patches/0020-bgo-970694-fix-missing-stdint.h-on-musl.patch
new file mode 100644
index 0000000..6155f06
--- /dev/null
+++ b/http/firefox/patches/0020-bgo-970694-fix-missing-stdint.h-on-musl.patch
@@ -0,0 +1,12 @@
+diff --git a/xpcom/base/nsVersionComparator.h
b/xpcom/base/nsVersionComparator.h
+index 1e16bcb..a5a19e3 100644
+--- a/xpcom/base/nsVersionComparator.h
++++ b/xpcom/base/nsVersionComparator.h
+@@ -9,6 +9,7 @@
+ #define nsVersionComparator_h_
+
+ #include <assert.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #if defined(XP_WIN) && !defined(UPDATER_NO_STRING_GLUE_STL)
diff --git
a/http/firefox/patches/0021-bgo-970537-add-missing-header-for-musl.patch
b/http/firefox/patches/0021-bgo-970537-add-missing-header-for-musl.patch
new file mode 100644
index 0000000..59716d8
--- /dev/null
+++ b/http/firefox/patches/0021-bgo-970537-add-missing-header-for-musl.patch
@@ -0,0 +1,12 @@
+diff --git
a/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
b/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
+index 9b1efa0..a2dbee2 100644
+--- a/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
++++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capturer.h
+@@ -17,6 +17,7 @@
+ #include <string>
+ #include <type_traits>
+ #include <vector>
++#include <sys/types.h>
+
+ // TODO(alcooper): Update include usage in downstream consumers and then
change
+ // this to a forward declaration.
diff --git
a/http/firefox/patches/0026-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
b/http/firefox/patches/0026-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
new file mode 100644
index 0000000..3590e71
--- /dev/null
+++
b/http/firefox/patches/0026-bgo-981931-musl-unkwown-type-name-uint32_t-fix.patch
@@ -0,0 +1,9 @@
+--- a/dom/base/PrefetchCandidates.h 2026-08-24 16:18:13.000000000 -0400
++++ b/dom/base/PrefetchCandidates.h 2026-09-04 08:15:11.208426255 -0400
+@@ -5,6 +5,7 @@
+ #ifndef mozilla_dom_PrefetchCandidates_h
+ #define mozilla_dom_PrefetchCandidates_h
+
++#include <stdint.h>
+ #include "mozilla/UniquePtr.h"
+ #include "nsTArrayForwardDeclare.h"
diff --git
a/http/firefox/patches/0028-bmo-2071536-audio_thread_priority-musl-fix.patch
b/http/firefox/patches/0028-bmo-2071536-audio_thread_priority-musl-fix.patch
new file mode 100644
index 0000000..5568ec9
--- /dev/null
+++
b/http/firefox/patches/0028-bmo-2071536-audio_thread_priority-musl-fix.patch
@@ -0,0 +1,395 @@
+From 81443b2080eba962852906534a2b205ee11d5ad5 Mon Sep 17 00:00:00 2001
+From: Paul Adenot <paul AT paul.cx>
+Date: Wed, 7 Oct 2026 12:45:26 +0000
+Subject: [PATCH] Bug 2071536 - Fix the build on musl.
+ r=cubeb-reviewers,supply-chain-reviewers,pehrsons
+
+audio_thread_priority didn't compile on musl, this has been fixed
+upstream. audioipc is also updated, the tree now only uses 0.38.
+
+Differential Revision: https://phabricator.services.mozilla.com/D327331
+---
+ .cargo/config.toml.in | 4 +--
+ Cargo.lock | 10 +++---
+ supply-chain/imports.lock | 4 +--
+ .../.cargo-checksum.json | 2 +-
+ .../.cargo_vcs_info.json | 2 +-
+ .../.github/workflows/rust.yml | 36 +++++++++++++++++++
+ .../rust/audio_thread_priority/Cargo.lock | 2 +-
+ .../rust/audio_thread_priority/Cargo.toml | 2 +-
+ .../audio_thread_priority/Cargo.toml.orig | 2 +-
+ .../audio_thread_priority/src/rt_linux.rs | 6 ++--
+ .../src/rt_linux_native.rs | 32 +++++++++++++----
+ .../audioipc2-client/.cargo-checksum.json | 2 +-
+ third_party/rust/audioipc2-client/Cargo.toml | 2 +-
+ .../audioipc2-server/.cargo-checksum.json | 2 +-
+ third_party/rust/audioipc2-server/Cargo.toml | 2 +-
+ .../rust/audioipc2/.cargo-checksum.json | 2 +-
+ third_party/rust/audioipc2/Cargo.toml | 2 +-
+ toolkit/library/rust/shared/Cargo.toml | 6 ++--
+ 18 files changed, 89 insertions(+), 31 deletions(-)
+
+diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in
+index a903b00463844..8b4f608287727 100644
+--- a/.cargo/config.toml.in
++++ b/.cargo/config.toml.in
+@@ -65,9 +65,9 @@ git = "https://github.com/martinthomson/ohttp"
+ rev = "600931b5a1e947776cbaad931ed78f1e89005352"
+ replace-with = "vendored-sources"
+
+-[source."git+https://github.com/mozilla/audioipc?rev=d3c9825"]
++[source."git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8"]
+ git = "https://github.com/mozilla/audioipc"
+-rev = "d3c9825"
++rev = "ef46a7bd05032d1577208ff048d444cc7412c7b8"
+ replace-with = "vendored-sources"
+
+ [source."git+https://github.com/mozilla/authenticator-rs?tag=v0.6.0"]
+diff --git a/Cargo.lock b/Cargo.lock
+index 02c727c6a2241..5ecd60bee9daa 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -336,9 +336,9 @@ dependencies = [
+
+ [[package]]
+ name = "audio_thread_priority"
+-version = "0.37.0"
++version = "0.38.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum =
"e58c7a923538aa84eef9947d81924fb9f34d7db6004e179218ab57a7bb7700b6"
++checksum =
"e0b30b2f3d2da482d0faeaafd8f88a38fbc62abb58d3b402cfa195793f4c92ab"
+ dependencies = [
+ "cfg-if",
+ "dbus",
+@@ -351,7 +351,7 @@ dependencies = [
+ [[package]]
+ name = "audioipc2"
+ version = "0.6.0"
+-source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
++source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
+ dependencies = [
+ "arrayvec",
+ "ashmem",
+@@ -377,7 +377,7 @@ dependencies = [
+ [[package]]
+ name = "audioipc2-client"
+ version = "0.6.0"
+-source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
++source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
+ dependencies = [
+ "audio_thread_priority",
+ "audioipc2",
+@@ -388,7 +388,7 @@ dependencies = [
+ [[package]]
+ name = "audioipc2-server"
+ version = "0.6.0"
+-source =
"git+https://github.com/mozilla/audioipc?rev=d3c9825#d3c9825a876a5fc7b54101bd40d685acfc542917"
++source =
"git+https://github.com/mozilla/audioipc?rev=ef46a7bd05032d1577208ff048d444cc7412c7b8#ef46a7bd05032d1577208ff048d444cc7412c7b8"
+ dependencies = [
+ "audio_thread_priority",
+ "audioipc2",
+diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock
+index 3ee5c35efa206..1f8eb40c6c31c 100644
+--- a/supply-chain/imports.lock
++++ b/supply-chain/imports.lock
+@@ -30,8 +30,8 @@ user-login = "Amanieu"
+ user-name = "Amanieu d'Antras"
+
+ [[publisher.audio_thread_priority]]
+-version = "0.37.0"
+-when = "2026-08-10"
++version = "0.38.0"
++when = "2026-09-17"
+ user-id = 1258
+ user-login = "padenot"
+ user-name = "Paul Adenot"
+diff --git a/third_party/rust/audio_thread_priority/.cargo-checksum.json
b/third_party/rust/audio_thread_priority/.cargo-checksum.json
+index 9690a6292e384..e1e8974824974 100644
+--- a/third_party/rust/audio_thread_priority/.cargo-checksum.json
++++ b/third_party/rust/audio_thread_priority/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{".cargo_vcs_info.json":"13629c1e0aabfcffbae3bddf6a472231b10f973817c0bd549f5e2782036184dd",".github/workflows/rust.yml":"f1ff0376f6d30c204620d50af9c60c4374b7e5001ad290e3bf3595925923f8f2","Cargo.lock":"fff166a1e4746a81e6b2b060692ed73790e8472e7c0526f60f2870baf5edb480","Cargo.toml":"ada29a3c844b5aaa099cea6854b1ca73cf98795ab52b8085c196c2931d08688d","Cargo.toml.orig":"6bdedb288e992ab55fb7d728a7941b1c85fb430c75c72fae685126b87c5f9372","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"c32ac62eaa6b9482e5a56c407a47ec470ccadcdc8c95b06d38bd593987975a74","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"6e384fb8103be42882a162f22f5f7350a427ef797d895f662f54953dd9aea59b","src/rt_android.rs":"2e54e3ac527bef0c11790013c9399e1f388752a952af667c85da0f6f53eeb7c9","src/rt_linux.rs":"53204f6aa158b270a22b4099cde58558ec5ff96292ac8955581b4bcfbf3443d3","src/rt_linux_native.rs":"283ba4e200a1de707a4c336cae5d7f2fec9fc9c7a5a0794c286b4228bfe926b4","src/rt_mach.rs":"723e29ee7392b10c30f803b90a23ec6cd7a8aaaf6e81fe711e86cb6588a13ff0","src/rt_win.rs":"1743f579aea1b29940fee2f0652e23f76e08153ec7cbca621e5720d526e25b96"},"package":"e58c7a923538aa84eef9947d81924fb9f34d7db6004e179218ab57a7bb7700b6"}
+\ No newline at end of file
++{"files":{".cargo_vcs_info.json":"941d7dd364a5ca6de04e5a1129197df302d661f809bab3d5ba6d63eb63e364e6",".github/workflows/rust.yml":"0b36b48d6f1976ae3a089596945ef398e02cfcb584a8dd04cb1fc2f16d2fd45f","Cargo.lock":"338d7d500e7cd330949216e3e9e7242cf91439b3eec90a5a75812df7f1fa4108","Cargo.toml":"8f76e327c4ac3c0e333491e7d35c52053574c7ec403b0cc4344893459eaadef8","Cargo.toml.orig":"0f774ee30569ad64f6de4affb15469b240f91086ef2e02320d60e248c853938f","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"c32ac62eaa6b9482e5a56c407a47ec470ccadcdc8c95b06d38bd593987975a74","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"6e384fb8103be42882a162f22f5f7350a427ef797d895f662f54953dd9aea59b","src/rt_android.rs":"2e54e3ac527bef0c11790013c9399e1f388752a952af667c85da0f6f53eeb7c9","src/rt_linux.rs":"6bfb616de5a089279aaa306ca408433c873fe66812b144750f77f9d975cc166d","src/rt_linux_native.rs":"0634c3bc9ad4f4cf86f30735b3234fbd1d544ce28009305fede08ca27e745538","src/rt_mach.rs":"723e29ee7392b10c30f803b90a23ec6cd7a8aaaf6e81fe711e86cb6588a13ff0","src/rt_win.rs":"1743f579aea1b29940fee2f0652e23f76e08153ec7cbca621e5720d526e25b96"},"package":"e0b30b2f3d2da482d0faeaafd8f88a38fbc62abb58d3b402cfa195793f4c92ab"}
+\ No newline at end of file
+diff --git a/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
b/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
+index 7daddfc03701d..c818c1ab58f09 100644
+--- a/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
++++ b/third_party/rust/audio_thread_priority/.cargo_vcs_info.json
+@@ -1,6 +1,6 @@
+ {
+ "git": {
+- "sha1": "0aa1ecd7719b582b54f7648eec1f76e9f18cdd3c"
++ "sha1": "f7823feae23ac705d09156eaa84a4deea75fa55e"
+ },
+ "path_in_vcs": ""
+ }
+\ No newline at end of file
+diff --git
a/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
b/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
+index 8c71d5acb1919..916a27cb5b3a5 100644
+--- a/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
++++ b/third_party/rust/audio_thread_priority/.github/workflows/rust.yml
+@@ -91,3 +91,39 @@ jobs:
+ sudo prlimit --pid $$ --rtprio=10:10
+ echo "RLIMIT_RTPRIO soft=$(ulimit -Sr) hard=$(ulimit -Hr)"
+ rustup run ${{ matrix.rust }} cargo test --no-default-features
++
++ # musl defines pthread_t as a pointer instead of an integer, unlike glibc.
++ build-musl:
++ runs-on: ubuntu-24.04
++ strategy:
++ matrix:
++ rust: [stable, nightly]
++
++ steps:
++ - uses: actions/checkout@v2
++
++ - name: Install Rust (musl target)
++ run: |
++ rustup toolchain install ${{ matrix.rust }} --profile minimal
++ rustup target add x86_64-unknown-linux-musl --toolchain ${{
matrix.rust }}
++
++ - name: Install Dependencies
++ run: sudo apt-get update && sudo apt-get install libdbus-1-dev
++
++ - name: Build (musl, with dbus)
++ shell: bash
++ # The crate is a staticlib/rlib, so this doesn't link, and hence
needs no musl libdbus: only
++ # the headers, which pkg-config finds for the host.
++ run: PKG_CONFIG_ALLOW_CROSS=1 rustup run ${{ matrix.rust }} cargo
build --target x86_64-unknown-linux-musl --features dbus
++
++ - name: Build (musl, without dbus)
++ shell: bash
++ run: rustup run ${{ matrix.rust }} cargo build --target
x86_64-unknown-linux-musl --no-default-features
++
++ - name: Test (musl, without dbus)
++ shell: bash
++ # Statically linked musl test binaries run fine on the glibc runner.
As in the fallback job,
++ # the native promotion path needs permission to request real-time
scheduling.
++ run: |
++ sudo prlimit --pid $$ --rtprio=10:10
++ rustup run ${{ matrix.rust }} cargo test --target
x86_64-unknown-linux-musl --no-default-features -- --nocapture
+diff --git a/third_party/rust/audio_thread_priority/Cargo.lock
b/third_party/rust/audio_thread_priority/Cargo.lock
+index fa8f0b5f0a7a1..de676cf7f087e 100644
+--- a/third_party/rust/audio_thread_priority/Cargo.lock
++++ b/third_party/rust/audio_thread_priority/Cargo.lock
+@@ -4,7 +4,7 @@ version = 4
+
+ [[package]]
+ name = "audio_thread_priority"
+-version = "0.37.0"
++version = "0.38.0"
+ dependencies = [
+ "cfg-if",
+ "dbus",
+diff --git a/third_party/rust/audio_thread_priority/Cargo.toml
b/third_party/rust/audio_thread_priority/Cargo.toml
+index 8456277e7ed7f..fa1177ffeccf5 100644
+--- a/third_party/rust/audio_thread_priority/Cargo.toml
++++ b/third_party/rust/audio_thread_priority/Cargo.toml
+@@ -12,7 +12,7 @@
+ [package]
+ edition = "2018"
+ name = "audio_thread_priority"
+-version = "0.37.0"
++version = "0.38.0"
+ authors = ["Paul Adenot <paul AT paul.cx>"]
+ build = false
+ autolib = false
+diff --git a/third_party/rust/audio_thread_priority/Cargo.toml.orig
b/third_party/rust/audio_thread_priority/Cargo.toml.orig
+index 1d96d3d8e7a7a..cab6972721335 100644
+--- a/third_party/rust/audio_thread_priority/Cargo.toml.orig
++++ b/third_party/rust/audio_thread_priority/Cargo.toml.orig
+@@ -1,6 +1,6 @@
+ [package]
+ name = "audio_thread_priority"
+-version = "0.37.0"
++version = "0.38.0"
+ authors = ["Paul Adenot <paul AT paul.cx>"]
+ description = "Bump a thread to real-time priority, for audio work, on
Linux, Android, Windows and macOS"
+ license = "MPL-2.0"
+diff --git a/third_party/rust/audio_thread_priority/src/rt_linux.rs
b/third_party/rust/audio_thread_priority/src/rt_linux.rs
+index 982803c3242d5..82f9bff22a499 100644
+--- a/third_party/rust/audio_thread_priority/src/rt_linux.rs
++++ b/third_party/rust/audio_thread_priority/src/rt_linux.rs
+@@ -62,7 +62,9 @@ impl RtPriorityThreadInfoInternal {
+ /// struct, so no uninitialized padding bytes are ever read. Any
trailing padding stays zero.
+ pub fn serialize(&self) -> [u8; std::mem::size_of::<Self>()] {
+ let thread_id = self.thread_id.to_ne_bytes();
+- let pthread_id = self.pthread_id.to_ne_bytes();
++ // `pthread_t` is an integer with glibc but a pointer with musl: go
through `usize`, which
++ // is as wide as both.
++ let pthread_id = (self.pthread_id as usize).to_ne_bytes();
+ let pid = self.pid.to_ne_bytes();
+ let policy = self.policy.to_ne_bytes();
+ let priority = self.priority.to_ne_bytes();
+@@ -91,7 +93,7 @@ impl RtPriorityThreadInfoInternal {
+ let mut src = bytes.iter().copied();
+ RtPriorityThreadInfoInternal {
+ thread_id: kernel_pid_t::from_ne_bytes(take(&mut src)),
+- pthread_id: libc::pthread_t::from_ne_bytes(take(&mut src)),
++ pthread_id: usize::from_ne_bytes(take(&mut src)) as
libc::pthread_t,
+ pid: libc::pid_t::from_ne_bytes(take(&mut src)),
+ policy: libc::c_int::from_ne_bytes(take(&mut src)),
+ priority: libc::c_int::from_ne_bytes(take(&mut src)),
+diff --git a/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
b/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
+index def33b09f14ea..9420e89fe6e3f 100644
+--- a/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
++++ b/third_party/rust/audio_thread_priority/src/rt_linux_native.rs
+@@ -78,7 +78,9 @@ impl RtPriorityThreadInfoInternal {
+ /// struct, so no uninitialized padding bytes are ever read. Any
trailing padding stays zero.
+ pub fn serialize(&self) -> [u8; std::mem::size_of::<Self>()] {
+ let thread_id = self.thread_id.to_ne_bytes();
+- let pthread_id = self.pthread_id.to_ne_bytes();
++ // `pthread_t` is an integer with glibc but a pointer with musl: go
through `usize`, which
++ // is as wide as both.
++ let pthread_id = (self.pthread_id as usize).to_ne_bytes();
+ let pid = self.pid.to_ne_bytes();
+ let policy = self.policy.to_ne_bytes();
+ let priority = self.priority.to_ne_bytes();
+@@ -107,7 +109,7 @@ impl RtPriorityThreadInfoInternal {
+ let mut src = bytes.iter().copied();
+ RtPriorityThreadInfoInternal {
+ thread_id: kernel_pid_t::from_ne_bytes(take(&mut src)),
+- pthread_id: libc::pthread_t::from_ne_bytes(take(&mut src)),
++ pthread_id: usize::from_ne_bytes(take(&mut src)) as
libc::pthread_t,
+ pid: libc::pid_t::from_ne_bytes(take(&mut src)),
+ policy: libc::c_int::from_ne_bytes(take(&mut src)),
+ priority: libc::c_int::from_ne_bytes(take(&mut src)),
+@@ -140,6 +142,26 @@ fn sched_error(context: &str) ->
AudioThreadPriorityError {
+ AudioThreadPriorityError::new(&format!("{}: {}", context,
OSError::last_os_error()))
+ }
+
++/// Set the scheduling policy and priority of the thread with tid `tid`.
++///
++/// This goes through the syscall directly because musl's
`sched_setscheduler` is a stub that always
++/// fails with `ENOSYS`: POSIX specifies it as process-scoped, which Linux
does not provide. The
++/// syscall is per-thread, which is what is needed here.
++fn sched_setscheduler(
++ tid: libc::pid_t,
++ policy: libc::c_int,
++ param: &libc::sched_param,
++) -> libc::c_long {
++ unsafe {
++ libc::syscall(
++ libc::SYS_sched_setscheduler,
++ tid,
++ policy,
++ param as *const libc::sched_param,
++ )
++ }
++}
++
+ /// A thread's system-wide tid narrowed to `pid_t` for the scheduler
syscalls. A tid always fits in
+ /// `pid_t` (it is a pid), but convert defensively rather than truncating.
+ fn scheduler_tid(thread_id: kernel_pid_t) -> Result<libc::pid_t,
AudioThreadPriorityError> {
+@@ -236,8 +258,7 @@ pub fn promote_thread_to_real_time_internal(
+ let mut param = unsafe { std::mem::zeroed::<libc::sched_param>() };
+ param.sched_priority = requested_priority();
+
+- let rc =
+- unsafe { libc::sched_setscheduler(tid, libc::SCHED_FIFO |
SCHED_RESET_ON_FORK, ¶m) };
++ let rc = sched_setscheduler(tid, libc::SCHED_FIFO |
SCHED_RESET_ON_FORK, ¶m);
+ if rc < 0 {
+ return Err(sched_error("could not promote thread"));
+ }
+@@ -254,8 +275,7 @@ pub fn demote_thread_from_real_time_internal(
+ let tid = scheduler_tid(thread_info.thread_id)?;
+ let mut param = unsafe { std::mem::zeroed::<libc::sched_param>() };
+ param.sched_priority = thread_info.priority;
+- let rc =
+- unsafe { libc::sched_setscheduler(tid, thread_info.policy |
SCHED_RESET_ON_FORK, ¶m) };
++ let rc = sched_setscheduler(tid, thread_info.policy |
SCHED_RESET_ON_FORK, ¶m);
+ if rc < 0 {
+ return Err(sched_error("could not demote thread"));
+ }
+diff --git a/third_party/rust/audioipc2-client/.cargo-checksum.json
b/third_party/rust/audioipc2-client/.cargo-checksum.json
+index d1b5b396f9b6b..d223c59ba80f7 100644
+--- a/third_party/rust/audioipc2-client/.cargo-checksum.json
++++ b/third_party/rust/audioipc2-client/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"e16f57291b3e7be5e035f2b1793b5864ae091d573df060ff032d484ca608c6a8","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/context.rs":"c351b782e9bb83a1fbc5127e07a4d06c59978256bb0dc265df256eb948a6cf4e","src/lib.rs":"0322bba9529c81c891bc2c033d402590058014da0df0730dbf9532380c2dabe8","src/send_recv.rs":"cd396a704f205d4ef680f484461a065aa29f624603d5031f9973779826fb3c19","src/stream.rs":"d7d4967c8ef760a58592aff23157357646528c1c83c9de394e1f9c8043f72a81"},"package":null}
+\ No newline at end of file
++{"files":{"Cargo.toml":"b74876a8e35719161990b55d3b83127d883efcdddce79c866044ba59ab17e849","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/context.rs":"c351b782e9bb83a1fbc5127e07a4d06c59978256bb0dc265df256eb948a6cf4e","src/lib.rs":"0322bba9529c81c891bc2c033d402590058014da0df0730dbf9532380c2dabe8","src/send_recv.rs":"cd396a704f205d4ef680f484461a065aa29f624603d5031f9973779826fb3c19","src/stream.rs":"d7d4967c8ef760a58592aff23157357646528c1c83c9de394e1f9c8043f72a81"},"package":null}
+\ No newline at end of file
+diff --git a/third_party/rust/audioipc2-client/Cargo.toml
b/third_party/rust/audioipc2-client/Cargo.toml
+index 19c71182ce6fb..c0abc1f74e091 100644
+--- a/third_party/rust/audioipc2-client/Cargo.toml
++++ b/third_party/rust/audioipc2-client/Cargo.toml
+@@ -36,7 +36,7 @@ cubeb-backend = "0.34"
+ log = "0.4"
+
+ [dependencies.audio_thread_priority]
+-version = "0.37"
++version = "0.38"
+ default-features = false
+
+ [dependencies.audioipc]
+diff --git a/third_party/rust/audioipc2-server/.cargo-checksum.json
b/third_party/rust/audioipc2-server/.cargo-checksum.json
+index d7bab1720f7c1..931775e6ec78b 100644
+--- a/third_party/rust/audioipc2-server/.cargo-checksum.json
++++ b/third_party/rust/audioipc2-server/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"80d2db99b52346498fbdfd082fa294bf962d2442eefaaeb001ef04b009e5100b","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/lib.rs":"a19c1bad94e16a0cfcd1e93c25b97bf58cc00e9666b5c31652d8a2242decb36c","src/server.rs":"28d494e2d4a6ad673f77912578179eb7b1b8b927d7fd63048d099284d03aeda7"},"package":null}
+\ No newline at end of file
++{"files":{"Cargo.toml":"7169f1242e389376f935ea01e29d17d7ebe52fcac3631c332357e1272fab1ba0","cbindgen.toml":"fb6abe1671497f432a06e40b1db7ed7cd2cceecbd9a2382193ad7534e8855e34","src/lib.rs":"a19c1bad94e16a0cfcd1e93c25b97bf58cc00e9666b5c31652d8a2242decb36c","src/server.rs":"28d494e2d4a6ad673f77912578179eb7b1b8b927d7fd63048d099284d03aeda7"},"package":null}
+\ No newline at end of file
+diff --git a/third_party/rust/audioipc2-server/Cargo.toml
b/third_party/rust/audioipc2-server/Cargo.toml
+index 7e00b45c32106..dc16be95944ea 100644
+--- a/third_party/rust/audioipc2-server/Cargo.toml
++++ b/third_party/rust/audioipc2-server/Cargo.toml
+@@ -38,7 +38,7 @@ once_cell = "1.2.0"
+ slab = "0.4"
+
+ [dependencies.audio_thread_priority]
+-version = "0.37"
++version = "0.38"
+ default-features = false
+
+ [dependencies.audioipc]
+diff --git a/third_party/rust/audioipc2/.cargo-checksum.json
b/third_party/rust/audioipc2/.cargo-checksum.json
+index cae4359f76de7..a49135bb208bc 100644
+--- a/third_party/rust/audioipc2/.cargo-checksum.json
++++ b/third_party/rust/audioipc2/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"e5f446c16280d1294e630015be9bda06c489f20dde65c6d3c3b974325e676fdc","benches/serialization.rs":"495e9128fb7892c3460bf55c6dc56a3d9e8853331f566d43231e30fad2c00ff4","src/codec.rs":"49120cd77f09e4acace1629936157fc9afa0a846c9018ad2dd021b5f0e6577fd","src/errors.rs":"36fe5299aee55761366ddc5dcf2f6fb5d81d8a718c59394b6baeb4075fdfc1a7","src/ipccore.rs":"a06cf09aa600df1280538e7946223ab979f088848213fc9c1a394af312f81fbd","src/lib.rs":"98ba1fe514326d2ef374c9ccc3a7125836cdcc3abe62abcf9a4af0084205538a","src/messages.rs":"d294f24ce018603d2e141af3a06a983421a8da191275937bd2cfa8523064def1","src/rpccore.rs":"058477df2304b4d8c5d1a347663301bcdea3f772762f806963e63a0c8df9ea73","src/shm.rs":"61c9f5d158914cb0ed34d7ce898d1ab24d1a892c68ee0406ff03d01e5c172d32","src/sys/mod.rs":"e6fa1d260abf093e1f7b50185195e2d3aee0eb8c9774c6f253953b5896d838f3","src/sys/unix/cmsg.rs":"e7b7154d55ce57e16ba93d4982630077bf6c70fa56e572956f14ae15aa43cb4c","src/sys/unix/mod.rs":"de0cd5c7a44cfd7c1f5b8cd0260089dc7245373ff9baa0ce44acfdc2d407a9d1","src/sys/unix/msg.rs":"25244de3eba920fa42e032f8fa4ea4913a9fdeb5124ade61e707f6cc6dd946b0","src/sys/windows/mod.rs":"7eaabb76e62c6962b636320e2bbf79a78fce61659c799a798f7dd6d56b0be8a1"},"package":null}
+\ No newline at end of file
++{"files":{"Cargo.toml":"4381ef3bff9eb36cfb1f0ef7793f09204229d3f7260144a2501ae83ca40b70c1","benches/serialization.rs":"495e9128fb7892c3460bf55c6dc56a3d9e8853331f566d43231e30fad2c00ff4","src/codec.rs":"49120cd77f09e4acace1629936157fc9afa0a846c9018ad2dd021b5f0e6577fd","src/errors.rs":"36fe5299aee55761366ddc5dcf2f6fb5d81d8a718c59394b6baeb4075fdfc1a7","src/ipccore.rs":"a06cf09aa600df1280538e7946223ab979f088848213fc9c1a394af312f81fbd","src/lib.rs":"98ba1fe514326d2ef374c9ccc3a7125836cdcc3abe62abcf9a4af0084205538a","src/messages.rs":"d294f24ce018603d2e141af3a06a983421a8da191275937bd2cfa8523064def1","src/rpccore.rs":"058477df2304b4d8c5d1a347663301bcdea3f772762f806963e63a0c8df9ea73","src/shm.rs":"61c9f5d158914cb0ed34d7ce898d1ab24d1a892c68ee0406ff03d01e5c172d32","src/sys/mod.rs":"e6fa1d260abf093e1f7b50185195e2d3aee0eb8c9774c6f253953b5896d838f3","src/sys/unix/cmsg.rs":"e7b7154d55ce57e16ba93d4982630077bf6c70fa56e572956f14ae15aa43cb4c","src/sys/unix/mod.rs":"de0cd5c7a44cfd7c1f5b8cd0260089dc7245373ff9baa0ce44acfdc2d407a9d1","src/sys/unix/msg.rs":"25244de3eba920fa42e032f8fa4ea4913a9fdeb5124ade61e707f6cc6dd946b0","src/sys/windows/mod.rs":"7eaabb76e62c6962b636320e2bbf79a78fce61659c799a798f7dd6d56b0be8a1"},"package":null}
+\ No newline at end of file
+diff --git a/third_party/rust/audioipc2/Cargo.toml
b/third_party/rust/audioipc2/Cargo.toml
+index d9aba1e0d6c9e..c60630877f11e 100644
+--- a/third_party/rust/audioipc2/Cargo.toml
++++ b/third_party/rust/audioipc2/Cargo.toml
+@@ -68,7 +68,7 @@ features = ["html_reports"]
+ ashmem = "0.1.2"
+
+ [target.'cfg(target_os = "linux")'.dependencies.audio_thread_priority]
+-version = "0.37"
++version = "0.38"
+ default-features = false
+
+ [target."cfg(unix)".dependencies]
+diff --git a/toolkit/library/rust/shared/Cargo.toml
b/toolkit/library/rust/shared/Cargo.toml
+index 13f9259c2d5c5..a8cb59c7853eb 100644
+--- a/toolkit/library/rust/shared/Cargo.toml
++++ b/toolkit/library/rust/shared/Cargo.toml
+@@ -27,8 +27,8 @@ webrender_bindings = { path =
"../../../../gfx/webrender_bindings" }
+ cubeb-coreaudio = { git = "https://github.com/mozilla/cubeb-coreaudio-rs",
rev = "840f69c1b3f95accd582555e10abcef8ee67514b", optional = true }
+ cubeb-pulse = { git = "https://github.com/mozilla/cubeb-pulse-rs",
rev="88194f91c8778fa608a19af7b91306094525595d", optional = true,
features=["pulse-dlopen"] }
+ cubeb-sys = { version = "0.34", optional = true, features=["gecko-in-tree"]
}
+-audioipc2-client = { git = "https://github.com/mozilla/audioipc", rev =
"d3c9825", optional = true }
+-audioipc2-server = { git = "https://github.com/mozilla/audioipc", rev =
"d3c9825", optional = true }
++audioipc2-client = { git = "https://github.com/mozilla/audioipc", rev =
"ef46a7bd05032d1577208ff048d444cc7412c7b8", optional = true }
++audioipc2-server = { git = "https://github.com/mozilla/audioipc", rev =
"ef46a7bd05032d1577208ff048d444cc7412c7b8", optional = true }
+ encoding_glue = { path = "../../../../intl/encoding_glue" }
+ locale_service_glue = { path =
"../../../../intl/locale/rust/locale_service_glue" }
+ app_collator_glue = { path = "../../../../intl/app_collator_glue" }
+@@ -48,7 +48,7 @@ storage = { path = "../../../../storage/rust" }
+ bookmark_sync = { path = "../../../components/places/bookmark_sync",
optional = true }
+ buildid_reader_ffi = { path = "../../buildid_reader/ffi" }
+ chardetng_c = "1.0.0"
+-audio_thread_priority = { version = "0.37", default-features = false }
++audio_thread_priority = { version = "0.38.0", default-features = false }
+ mdns_service = {
path="../../../../dom/media/webrtc/transport/mdns_service", features =
["profiler"], optional = true }
+ neqo_glue = { path = "../../../../netwerk/socket/neqo_glue" }
+ wgpu_bindings = { path = "../../../../gfx/wgpu_bindings" }
+
diff --git
a/http/firefox/patches/0029-bmo-2074346-musl-fix-parakeet-cpp.patch
b/http/firefox/patches/0029-bmo-2074346-musl-fix-parakeet-cpp.patch
new file mode 100644
index 0000000..30b12ea
--- /dev/null
+++ b/http/firefox/patches/0029-bmo-2074346-musl-fix-parakeet-cpp.patch
@@ -0,0 +1,11 @@
+diff --git a/third_party/parakeet.cpp/src/backend.hpp
b/third_party/parakeet.cpp/src/backend.hpp
+index d534ec9..f17ec23 100644
+--- a/third_party/parakeet.cpp/src/backend.hpp
++++ b/third_party/parakeet.cpp/src/backend.hpp
+@@ -1,5 +1,6 @@
+ #pragma once
+ #include <cstddef>
++#include <cstdint>
+ #include <functional>
+ #include <string>
+ #include <vector>
diff --git a/http/firefox/patches/0100-alpine-lfs64-no-stat64-on-musl.patch
b/http/firefox/patches/0100-alpine-lfs64-no-stat64-on-musl.patch
new file mode 100644
index 0000000..d9c6739
--- /dev/null
+++ b/http/firefox/patches/0100-alpine-lfs64-no-stat64-on-musl.patch
@@ -0,0 +1,42 @@
+musl dropped the LFS64 interfaces in 1.2.4, so the stat64 paths cannot be
+built there. From Alpine's community/firefox lfs64.patch, except that the
+conditions are keyed on __GLIBC__ rather than switched off outright: 32-bit
+glibc still needs stat64 for large files, and the sandbox broker still needs
+the matching struct layout.
+
+--- a/xpcom/io/nsLocalFileUnix.h
++++ b/xpcom/io/nsLocalFileUnix.h
+@@ -19,7 +19,8 @@
+
+ // stat64 and lstat64 are deprecated on OS X. Normal stat and lstat are
+ // 64-bit by default on OS X 10.6+.
+-#if defined(HAVE_STAT64) && defined(HAVE_LSTAT64) && !defined(XP_DARWIN)
++#if defined(__GLIBC__) && defined(HAVE_STAT64) && \
++ defined(HAVE_LSTAT64) && !defined(XP_DARWIN)
+ # define STAT stat64
+ # define LSTAT lstat64
+ # define HAVE_STATS64 1
+--- a/mozglue/baseprofiler/core/shared-libraries-linux.cc
++++ b/mozglue/baseprofiler/core/shared-libraries-linux.cc
+@@ -177,7 +177,8 @@
+ return false;
+ }
+
+-#if defined(__x86_64__) || defined(__aarch64__) || \
++#if !defined(__GLIBC__) || defined(__x86_64__) || \
++ defined(__aarch64__) || \
+ (defined(__mips__) && _MIPS_SIM == _ABI64) || \
+ !(defined(GP_OS_linux) || defined(GP_OS_android))
+
+--- a/security/sandbox/linux/broker/SandboxBrokerUtils.h
++++ b/security/sandbox/linux/broker/SandboxBrokerUtils.h
+@@ -14,7 +14,8 @@
+ // calls. We'll intercept those and handle them in the stat functions
+ // but must be sure to use the right structure layout.
+
+-#if defined(__NR_stat64) || defined(__NR_fstatat64)
++#if defined(__GLIBC__) && \
++ (defined(__NR_stat64) || defined(__NR_fstatat64))
+ typedef struct stat64 statstruct;
+ # define statsyscall stat64
+ # define lstatsyscall lstat64
diff --git a/http/firefox/patches/0101-alpine-time64-rust-timespec.patch
b/http/firefox/patches/0101-alpine-time64-rust-timespec.patch
new file mode 100644
index 0000000..ff73ac3
--- /dev/null
+++ b/http/firefox/patches/0101-alpine-time64-rust-timespec.patch
@@ -0,0 +1,57 @@
+32-bit musl with a 64-bit time_t pads struct timespec, so the field-by-field
+literals do not compile there. From Alpine's community/firefox time64.patch
+by Aelin <aelin AT postmarketos.org>, minus the wgpu-hal hunk, which upstream
+has taken. libc derives Default for timespec on every target, so this needs
+no guard.
+
+--- a/third_party/rust/alsa/src/pcm.rs
++++ b/third_party/rust/alsa/src/pcm.rs
+@@ -1110,19 +1110,19 @@
+ fn ptr(&self) -> *mut alsa::snd_pcm_status_t { self.0.as_ptr() as
*const _ as *mut alsa::snd_pcm_status_t }
+
+ pub fn get_htstamp(&self) -> timespec {
+- let mut h = timespec {tv_sec: 0, tv_nsec: 0};
++ let mut h = timespec::default();
+ unsafe { alsa::snd_pcm_status_get_htstamp(self.ptr(), &mut h) };
+ h
+ }
+
+ pub fn get_trigger_htstamp(&self) -> timespec {
+- let mut h = timespec {tv_sec: 0, tv_nsec: 0};
++ let mut h = timespec::default();
+ unsafe { alsa::snd_pcm_status_get_trigger_htstamp(self.ptr(), &mut
h) };
+ h
+ }
+
+ pub fn get_audio_htstamp(&self) -> timespec {
+- let mut h = timespec {tv_sec: 0, tv_nsec: 0};
++ let mut h = timespec::default();
+ unsafe { alsa::snd_pcm_status_get_audio_htstamp(self.ptr(), &mut h)
};
+ h
+ }
+--- a/third_party/rust/zeitstempel/src/unix.rs
++++ b/third_party/rust/zeitstempel/src/unix.rs
+@@ -12,10 +12,7 @@
+ ///
+ /// [`clock_gettime`]:
https://manpages.debian.org/buster/manpages-dev/clock_gettime.3.en.html
+ pub fn now_including_suspend() -> u64 {
+- let mut ts = libc::timespec {
+- tv_sec: 0,
+- tv_nsec: 0,
+- };
++ let mut ts = libc::timespec::default();
+ unsafe {
+ libc::clock_gettime(libc::CLOCK_BOOTTIME, &mut ts);
+ }
+@@ -32,10 +29,7 @@
+ /// [`clock_gettime`]:
https://manpages.debian.org/buster/manpages-dev/clock_gettime.3.en.html
+ /// [`FreeBSD clock_gettime`]:
https://man.freebsd.org/cgi/man.cgi?query=clock_gettime&manpath=FreeBSD+15.0-RELEASE
+ pub fn now_awake() -> u64 {
+- let mut ts = libc::timespec {
+- tv_sec: 0,
+- tv_nsec: 0,
+- };
++ let mut ts = libc::timespec::default();
+ #[cfg(any(target_os = "linux", target_os = "android"))]
+ let clock = libc::CLOCK_MONOTONIC;
+ #[cfg(target_os = "freebsd")]
- [[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (c547a4dc16637403cba97d3f2e3500d907a76a92), Ismael Luceno, 10/12/2026
Archive powered by MHonArc 2.6.24.