git: b335b307e99e - main - www/tor-browser: Update to 13.5a9

From: Philippe Audeoud <jadawin_at_FreeBSD.org>
Date: Thu, 13 Jun 2024 07:22:09 UTC
The branch main has been updated by jadawin:

URL: https://cgit.FreeBSD.org/ports/commit/?id=b335b307e99eaad3d01656a1b4ebcedcace29426

commit b335b307e99eaad3d01656a1b4ebcedcace29426
Author:     Philippe Audeoud <jadawin@FreeBSD.org>
AuthorDate: 2024-06-13 06:19:38 +0000
Commit:     Philippe Audeoud <jadawin@FreeBSD.org>
CommitDate: 2024-06-13 06:21:54 +0000

    www/tor-browser: Update to 13.5a9
    
    changelog: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/main/projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt?ref_type=heads
    
    PR:     279693
---
 www/tor-browser/Makefile                    |   4 +-
 www/tor-browser/distinfo                    |   6 +-
 www/tor-browser/files/patch-llvm18          | 199 ++++++++++++++++++++++++++++
 www/tor-browser/files/patch-rust-1.78.0-arm |  64 ---------
 4 files changed, 204 insertions(+), 69 deletions(-)

diff --git a/www/tor-browser/Makefile b/www/tor-browser/Makefile
index 528cde7a3288..f6da165b5414 100644
--- a/www/tor-browser/Makefile
+++ b/www/tor-browser/Makefile
@@ -1,11 +1,11 @@
 PORTNAME=	tor-browser
-DISTVERSION=	13.5a8
+DISTVERSION=	13.5a9
 CATEGORIES=	www net security wayland
 MASTER_SITES=	TOR \
 		https://build-sources.tbb.torproject.org/:source1 \
 		LOCAL/jsm:source2
 MASTER_SITE_SUBDIR=	torbrowser/${DISTVERSION}
-DISTNAME=	src-firefox-tor-browser-115.11.0esr-13.5-1-build2
+DISTNAME=	src-firefox-tor-browser-115.12.0esr-13.5-1-build2
 DISTFILES=	${DISTNAME}.tar.xz \
 		manual_112141.zip:source1 \
 		firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar:source2
diff --git a/www/tor-browser/distinfo b/www/tor-browser/distinfo
index 19573ec93f4b..f8dded9a07c7 100644
--- a/www/tor-browser/distinfo
+++ b/www/tor-browser/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1716961934
-SHA256 (src-firefox-tor-browser-115.11.0esr-13.5-1-build2.tar.xz) = da56a1386c6779387f309e45287b799e2beca69d2c4ea44a9c6d2e01f1161121
-SIZE (src-firefox-tor-browser-115.11.0esr-13.5-1-build2.tar.xz) = 552025576
+TIMESTAMP = 1718132378
+SHA256 (src-firefox-tor-browser-115.12.0esr-13.5-1-build2.tar.xz) = 989d7c6f829ba33b7d908ecb74b437b423da8193c45f5e23050500810da8756c
+SIZE (src-firefox-tor-browser-115.12.0esr-13.5-1-build2.tar.xz) = 552055468
 SHA256 (manual_112141.zip) = f767bc5f655f1263623b7af588cfb045d3e41ee019dc7ecd713decc5c1a0ea9b
 SIZE (manual_112141.zip) = 26293073
 SHA256 (firefox-tor-browser-13.0.1-build2-firefox-1l0n-out.tar) = bbd290cd134e3a114241077ba82582617ab6c5117ff2226381943c504bd09775
diff --git a/www/tor-browser/files/patch-llvm18 b/www/tor-browser/files/patch-llvm18
new file mode 100644
index 000000000000..f88e1eb079a8
--- /dev/null
+++ b/www/tor-browser/files/patch-llvm18
@@ -0,0 +1,199 @@
+From cd10f3ba0d83f34ca978cc4c7a552b72fdd068aa Mon Sep 17 00:00:00 2001
+From: David Tolnay <dtolnay@gmail.com>
+Date: Tue, 28 Nov 2023 11:18:39 -0800
+Subject: [PATCH 1/2] Flatten cursor.kind() matching in Item::parse down to one
+ match
+
+---
+ bindgen/ir/item.rs | 84 ++++++++++++++++++++++------------------------
+ 1 file changed, 41 insertions(+), 43 deletions(-)
+
+diff --git bindgen/ir/item.rs bindgen/ir/item.rs
+index 0556452bfa..4f2d361e51 100644
+--- third_party/rust/bindgen/ir/item.rs
++++ third_party/rust/bindgen/ir/item.rs
+@@ -1427,53 +1427,52 @@
+             }
+         }
+ 
+-        // Guess how does clang treat extern "C" blocks?
+-        if cursor.kind() == CXCursor_UnexposedDecl {
+-            Err(ParseError::Recurse)
+-        } else {
++        match cursor.kind() {
++            // Guess how does clang treat extern "C" blocks?
++            CXCursor_UnexposedDecl => Err(ParseError::Recurse),
++
+             // We allowlist cursors here known to be unhandled, to prevent being
+             // too noisy about this.
+-            match cursor.kind() {
+-                CXCursor_MacroDefinition |
+-                CXCursor_MacroExpansion |
+-                CXCursor_UsingDeclaration |
+-                CXCursor_UsingDirective |
+-                CXCursor_StaticAssert |
+-                CXCursor_FunctionTemplate => {
+-                    debug!(
+-                        "Unhandled cursor kind {:?}: {:?}",
+-                        cursor.kind(),
+-                        cursor
+-                    );
+-                }
+-                CXCursor_InclusionDirective => {
+-                    let file = cursor.get_included_file_name();
+-                    match file {
+-                        None => {
+-                            warn!(
+-                                "Inclusion of a nameless file in {:?}",
+-                                cursor
+-                            );
+-                        }
+-                        Some(filename) => {
+-                            ctx.include_file(filename);
+-                        }
+-                    }
+-                }
+-                _ => {
+-                    // ignore toplevel operator overloads
+-                    let spelling = cursor.spelling();
+-                    if !spelling.starts_with("operator") {
++            CXCursor_MacroDefinition |
++            CXCursor_MacroExpansion |
++            CXCursor_UsingDeclaration |
++            CXCursor_UsingDirective |
++            CXCursor_StaticAssert |
++            CXCursor_FunctionTemplate => {
++                debug!(
++                    "Unhandled cursor kind {:?}: {:?}",
++                    cursor.kind(),
++                    cursor
++                );
++                Err(ParseError::Continue)
++            }
++            CXCursor_InclusionDirective => {
++                let file = cursor.get_included_file_name();
++                match file {
++                    None => {
+                         warn!(
+-                            "Unhandled cursor kind {:?}: {:?}",
+-                            cursor.kind(),
++                            "Inclusion of a nameless file in {:?}",
+                             cursor
+                         );
+                     }
++                    Some(filename) => {
++                        ctx.include_file(filename);
++                    }
+                 }
++                Err(ParseError::Continue)
++            }
++            _ => {
++                // ignore toplevel operator overloads
++                let spelling = cursor.spelling();
++                if !spelling.starts_with("operator") {
++                    warn!(
++                        "Unhandled cursor kind {:?}: {:?}",
++                        cursor.kind(),
++                        cursor
++                    );
++                }
++                Err(ParseError::Continue)
+             }
+-
+-            Err(ParseError::Continue)
+         }
+     }
+ 
+
+From 2997017b5a3065b83e9d76f0080d6cb99c94c0c1 Mon Sep 17 00:00:00 2001
+From: David Tolnay <dtolnay@gmail.com>
+Date: Tue, 28 Nov 2023 11:21:18 -0800
+Subject: [PATCH 2/2] Handle CXCursor_LinkageSpec in Clang 18+
+
+---
+ bindgen/ir/item.rs | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git bindgen/ir/item.rs bindgen/ir/item.rs
+index 4f2d361e51..dd587b088b 100644
+--- third_party/rust/bindgen/ir/item.rs
++++ third_party/rust/bindgen/ir/item.rs
+@@ -1433,8 +1433,11 @@ impl Item {
+         }
+ 
+         match cursor.kind() {
+-            // Guess how does clang treat extern "C" blocks?
+-            CXCursor_UnexposedDecl => Err(ParseError::Recurse),
++            // On Clang 18+, extern "C" is reported accurately as a LinkageSpec.
++            // Older LLVM treat it as UnexposedDecl.
++            CXCursor_LinkageSpec | CXCursor_UnexposedDecl => {
++                Err(ParseError::Recurse)
++            }
+ 
+             // We allowlist cursors here known to be unhandled, to prevent being
+             // too noisy about this.
+diff --git dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp
+--- dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp
++++ dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp
+@@ -97,11 +97,11 @@
+     uint32_t width_;
+     uint32_t height_;
+     uint8_t y_;
+     uint8_t u_;
+     uint8_t v_;
+-    uint32_t timestamp_;
++    uint64_t timestamp_;
+   } idr_nalu;
+ };
+ #pragma pack(pop)
+ 
+ #define ENCODED_FRAME_MAGIC 0x004000b8
+diff --git dom/media/gtest/TestGMPRemoveAndDelete.cpp dom/media/gtest/TestGMPRemoveAndDelete.cpp
+--- dom/media/gtest/TestGMPRemoveAndDelete.cpp
++++ dom/media/gtest/TestGMPRemoveAndDelete.cpp
+@@ -359,11 +359,11 @@
+       uint32_t width_;
+       uint32_t height_;
+       uint8_t y_;
+       uint8_t u_;
+       uint8_t v_;
+-      uint32_t timestamp_;
++      uint64_t timestamp_;
+     } idr_nalu;
+   };
+ #pragma pack(pop)
+ 
+   GMPVideoFrame* absFrame;
+diff --git dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h
+--- dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h
++++ dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h
+@@ -300,11 +300,11 @@
+ 
+   struct InputImageData {
+     int64_t timestamp_us;
+   };
+   // Map rtp time -> input image data
+-  DataMutex<std::map<uint32_t, InputImageData>> mInputImageMap;
++  DataMutex<std::map<uint64_t, InputImageData>> mInputImageMap;
+ 
+   MediaEventProducer<uint64_t> mInitPluginEvent;
+   MediaEventProducer<uint64_t> mReleasePluginEvent;
+ };
+ 
+diff --git dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp
+--- dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp
++++ dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp
+@@ -538,11 +538,11 @@
+     return;
+   }
+ 
+   webrtc::VideoFrameType ft;
+   GmpFrameTypeToWebrtcFrameType(aEncodedFrame->FrameType(), &ft);
+-  uint32_t timestamp = (aEncodedFrame->TimeStamp() * 90ll + 999) / 1000;
++  uint64_t timestamp = (aEncodedFrame->TimeStamp() * 90ll + 999) / 1000;
+ 
+   GMP_LOG_DEBUG("GMP Encoded: %" PRIu64 ", type %d, len %d",
+                 aEncodedFrame->TimeStamp(), aEncodedFrame->BufferType(),
+                 aEncodedFrame->Size());
+ 
+
diff --git a/www/tor-browser/files/patch-rust-1.78.0-arm b/www/tor-browser/files/patch-rust-1.78.0-arm
deleted file mode 100644
index 7db8038cfaeb..000000000000
--- a/www/tor-browser/files/patch-rust-1.78.0-arm
+++ /dev/null
@@ -1,64 +0,0 @@
-Relevant bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1882291
-
-
-diff --git a/Cargo.lock b/Cargo.lock
---- Cargo.lock
-+++ Cargo.lock
-@@ -4274,10 +4274,11 @@
- [[package]]
- name = "qcms"
- version = "0.2.0"
- dependencies = [
-  "libc",
-+ "version_check",
- ]
- 
- [[package]]
- name = "qlog"
- version = "0.4.0"
-diff --git a/gfx/qcms/Cargo.toml b/gfx/qcms/Cargo.toml
---- gfx/qcms/Cargo.toml
-+++ gfx/qcms/Cargo.toml
-@@ -18,5 +18,8 @@
- iccv4-enabled = []
- cmyk = []
- 
- [dependencies]
- libc = {version = "0.2", optional = true }
-+
-+[build-dependencies]
-+version_check = "0.9"
-diff --git a/gfx/qcms/build.rs b/gfx/qcms/build.rs
-new file mode 100644
---- /dev/null
-+++ gfx/qcms/build.rs
-@@ -0,0 +1,7 @@
-+extern crate version_check as rustc;
-+
-+fn main() {
-+    if rustc::is_min_version("1.78.0").unwrap_or(false) {
-+        println!("cargo:rustc-cfg=stdsimd_split");
-+    }
-+}
-diff --git a/gfx/qcms/src/lib.rs b/gfx/qcms/src/lib.rs
---- gfx/qcms/src/lib.rs
-+++ gfx/qcms/src/lib.rs
-@@ -5,13 +5,15 @@
- #![allow(non_camel_case_types)]
- #![allow(non_snake_case)]
- #![allow(non_upper_case_globals)]
- // These are needed for the neon SIMD code and can be removed once the MSRV supports the
- // instrinsics we use
--#![cfg_attr(feature = "neon", feature(stdsimd))]
-+#![cfg_attr(all(stdsimd_split, target_arch = "arm", feature = "neon"), feature(stdarch_arm_neon_intrinsics))]
-+#![cfg_attr(all(stdsimd_split, target_arch = "arm", feature = "neon"), feature(stdarch_arm_feature_detection))]
-+#![cfg_attr(all(not(stdsimd_split), target_arch = "arm", feature = "neon"), feature(stdsimd))]
- #![cfg_attr(
--    feature = "neon",
-+    all(target_arch = "arm", feature = "neon"),
-     feature(arm_target_feature, raw_ref_op)
- 
- )]
- 
- /// These values match the Rendering Intent values from the ICC spec
-