diff --git a/MozillaThunderbird.changes b/MozillaThunderbird.changes index c0380bb..8397c17 100644 --- a/MozillaThunderbird.changes +++ b/MozillaThunderbird.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Apr 5 21:10:11 UTC 2023 - Wolfgang Rosenauer + +- Mozilla Thunderbird 102.10.0 +- add mozilla-llvm16.patch trying to fix build with LLVM16 + ------------------------------------------------------------------- Wed Mar 29 10:50:35 UTC 2023 - Wolfgang Rosenauer diff --git a/MozillaThunderbird.spec b/MozillaThunderbird.spec index 310d3c5..332df3e 100644 --- a/MozillaThunderbird.spec +++ b/MozillaThunderbird.spec @@ -29,8 +29,8 @@ # major 69 # mainver %major.99 %define major 102 -%define mainver %major.9.1 -%define orig_version 102.9.1 +%define mainver %major.10.0 +%define orig_version 102.10.0 %define orig_suffix %{nil} %define update_channel release %define source_prefix thunderbird-%{orig_version} @@ -207,6 +207,7 @@ Patch20: mozilla-bmo531915.patch Patch21: one_swizzle_to_rule_them_all.patch Patch22: svg-rendering.patch Patch23: gcc13-fix.patch +Patch24: mozilla-llvm16.patch %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: /bin/sh @@ -296,6 +297,7 @@ fi %patch21 -p1 %patch22 -p1 %patch23 -p1 +%patch24 -p1 %endif %build diff --git a/l10n-102.9.1.tar.xz b/l10n-102.10.0.tar.xz similarity index 100% rename from l10n-102.9.1.tar.xz rename to l10n-102.10.0.tar.xz diff --git a/mozilla-llvm16.patch b/mozilla-llvm16.patch new file mode 100644 index 0000000..dbbe79e --- /dev/null +++ b/mozilla-llvm16.patch @@ -0,0 +1,207 @@ +From 80738016a36e803fe3bf8b8f6f388c6589d86a1c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= +Date: Tue, 18 Oct 2022 02:17:18 +0200 +Subject: [PATCH] clang: Detect anonymous items explicitly, rather than relying + on empty names. + +In Clang 16, anonymous items may return names like +`(anonymous union at ..)` rather than empty names. + +The right way to detect them is using clang_Cursor_isAnonymous. + +Fixes #2312 +Closes #2316 + +Co-Authored-by: Patrick Walton + +From c03b37697a1e117995ea76203e5c0ce7d6696c4e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= +Date: Wed, 9 Nov 2022 13:33:19 +0100 +Subject: [PATCH] ir: Don't crash with built-in unexposed types from libclang. + +This fixes #2325. + +The issue is that `__bf16` is not exposed at all by libclang, which +causes us to crash. It's a bit of a shame libclang doesn't expose it but +there's no rust equivalent I think, so this should be ok for now. + +Unfortunately no test because the header crashes older clang versions. + +diff --git a/Cargo.lock b/Cargo.lock +index 163674ec5d..28456ee0ba 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -394,8 +394,6 @@ dependencies = [ + [[package]] + name = "bindgen" + version = "0.56.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" + dependencies = [ + "bitflags", + "cexpr", +diff --git a/Cargo.toml b/Cargo.toml +index d918adae95..dddd1298f7 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -117,6 +117,7 @@ packed_simd = { package = "packed_simd_2", git = "https://github.com/hsivonen/pa + midir = { git = "https://github.com/mozilla/midir.git", rev = "4c11f0ffb5d6a10de4aff40a7b81218b33b94e6f" } + minidump_writer_linux = { git = "https://github.com/rust-minidump/minidump-writer.git", rev = "75ada456c92a429704691a85e1cb42fef8cafc0d" } + glslopt = { path = "third_party/rust/glslopt/" } ++bindgen = { path = "third_party/rust/bindgen/" } + + # Patch mio 0.6 to use winapi 0.3 and miow 0.3, getting rid of winapi 0.2. + # There is not going to be new version of mio 0.6, mio now being >= 0.7.11. +diff --git a/third_party/rust/bindgen/src/clang.rs b/third_party/rust/bindgen/src/clang.rs +index 488660c434..ef74ac08c2 100644 +--- a/third_party/rust/bindgen/src/clang.rs ++++ b/third_party/rust/bindgen/src/clang.rs +@@ -54,6 +54,11 @@ impl Cursor { + unsafe { clang_isDeclaration(self.kind()) != 0 } + } + ++ /// Is this cursor's referent an anonymous record or so? ++ pub fn is_anonymous(&self) -> bool { ++ unsafe { clang_Cursor_isAnonymous(self.x) != 0 } ++ } ++ + /// Get this cursor's referent's spelling. + pub fn spelling(&self) -> String { + unsafe { cxstring_into_string(clang_getCursorSpelling(self.x)) } +diff --git a/third_party/rust/bindgen/src/ir/comp.rs b/third_party/rust/bindgen/src/ir/comp.rs +index 22c124fa36..b715616c5e 100644 +--- a/third_party/rust/bindgen/src/ir/comp.rs ++++ b/third_party/rust/bindgen/src/ir/comp.rs +@@ -1372,8 +1372,7 @@ impl CompInfo { + + // A declaration of an union or a struct without name could + // also be an unnamed field, unfortunately. +- if cur.spelling().is_empty() && +- cur.kind() != CXCursor_EnumDecl ++ if cur.is_anonymous() && cur.kind() != CXCursor_EnumDecl + { + let ty = cur.cur_type(); + let offset = cur.offset_of_field().ok(); +diff --git a/third_party/rust/bindgen/src/ir/ty.rs b/third_party/rust/bindgen/src/ir/ty.rs +index e6eecc3c50..f3e1193ce2 100644 +--- a/third_party/rust/bindgen/src/ir/ty.rs ++++ b/third_party/rust/bindgen/src/ir/ty.rs +@@ -737,7 +737,12 @@ impl Type { + + let layout = ty.fallible_layout(ctx).ok(); + let cursor = ty.declaration(); +- let mut name = cursor.spelling(); ++ let is_anonymous = cursor.is_anonymous(); ++ let mut name = if is_anonymous { ++ None ++ } else { ++ Some(cursor.spelling()).filter(|n| !n.is_empty()) ++ }; + + debug!( + "from_clang_ty: {:?}, ty: {:?}, loc: {:?}", +@@ -771,7 +776,7 @@ impl Type { + if is_canonical_objcpointer && is_template_type_param { + // Objective-C generics are just ids with fancy name. + // To keep it simple, just name them ids +- name = "id".to_owned(); ++ name = Some("id".to_owned()); + } + } + +@@ -900,7 +905,7 @@ impl Type { + return Err(ParseError::Recurse); + } + } else { +- name = location.spelling(); ++ name = Some(location.spelling()); + } + + let complex = CompInfo::from_ty( +@@ -942,7 +947,7 @@ impl Type { + CXType_Typedef + ); + +- name = current.spelling(); ++ name = Some(location.spelling()); + + let inner_ty = cur + .typedef_type() +@@ -1126,10 +1131,10 @@ impl Type { + CXType_Enum => { + let enum_ = Enum::from_ty(ty, ctx).expect("Not an enum?"); + +- if name.is_empty() { ++ if !is_anonymous { + let pretty_name = ty.spelling(); + if clang::is_valid_identifier(&pretty_name) { +- name = pretty_name; ++ name = Some(pretty_name); + } + } + +@@ -1144,12 +1149,12 @@ impl Type { + ) + .expect("Not a complex type?"); + +- if name.is_empty() { ++ if !is_anonymous { + // The pretty-printed name may contain typedefed name, + // but may also be "struct (anonymous at .h:1)" + let pretty_name = ty.spelling(); + if clang::is_valid_identifier(&pretty_name) { +- name = pretty_name; ++ name = Some(pretty_name); + } + } + +@@ -1161,8 +1166,7 @@ impl Type { + location, + None, + ctx, +- ) +- .expect("Not able to resolve vector element?"); ++ )?; + TypeKind::Vector(inner, ty.num_elements().unwrap()) + } + CXType_ConstantArray => { +@@ -1189,7 +1193,9 @@ impl Type { + CXType_ObjCClass | CXType_ObjCInterface => { + let interface = ObjCInterface::from_ty(&location, ctx) + .expect("Not a valid objc interface?"); +- name = interface.rust_name(); ++ if !is_anonymous { ++ name = Some(interface.rust_name()); ++ } + TypeKind::ObjCInterface(interface) + } + CXType_Dependent => { +@@ -1207,7 +1213,7 @@ impl Type { + } + }; + +- let name = if name.is_empty() { None } else { Some(name) }; ++ name = name.filter(|n| !n.is_empty()); + + let is_const = ty.is_const() || + (ty.kind() == CXType_ConstantArray && +diff --git a/third_party/rust/bindgen/src/ir/var.rs b/third_party/rust/bindgen/src/ir/var.rs +index c6f121d74e..679c92bbea 100644 +--- a/third_party/rust/bindgen/src/ir/var.rs ++++ b/third_party/rust/bindgen/src/ir/var.rs +@@ -301,11 +301,11 @@ impl ClangSubItemParser for Var { + let ty = match Item::from_ty(&ty, cursor, None, ctx) { + Ok(ty) => ty, + Err(e) => { +- assert_eq!( +- ty.kind(), +- CXType_Auto, ++ assert!( ++ matches!(ty.kind(), CXType_Auto | CXType_Unexposed), + "Couldn't resolve constant type, and it \ +- wasn't an nondeductible auto type!" ++ wasn't an nondeductible auto type or unexposed \ ++ type!" + ); + return Err(e); + } diff --git a/tar_stamps b/tar_stamps index e7cad68..768ffff 100644 --- a/tar_stamps +++ b/tar_stamps @@ -1,10 +1,10 @@ PRODUCT="thunderbird" CHANNEL="esr102" -VERSION="102.9.1" +VERSION="102.10.0" VERSION_SUFFIX="" -PREV_VERSION="102.9.0" +PREV_VERSION="102.9.1" PREV_VERSION_SUFFIX="" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/comm-esr102" -RELEASE_TAG="a8965ef0b30705f497df3df718db60d9dc2c304f" -RELEASE_TIMESTAMP="20230328155238" +RELEASE_TAG="242807330298599a41c6a9e37d676cceeaf86dec" +RELEASE_TIMESTAMP="20230405152512" diff --git a/thunderbird-102.10.0.source.tar.xz b/thunderbird-102.10.0.source.tar.xz new file mode 100644 index 0000000..b7fbd1c --- /dev/null +++ b/thunderbird-102.10.0.source.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:516ba1863d98205d3d0472cadb56ebddadce9e7198041d12f1f0d8fa398524f8 +size 501419444 diff --git a/thunderbird-102.10.0.source.tar.xz.asc b/thunderbird-102.10.0.source.tar.xz.asc new file mode 100644 index 0000000..10687ff --- /dev/null +++ b/thunderbird-102.10.0.source.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEQ2D+IQnEl2MYb44h6+QekPbxL20FAmQt2REACgkQ6+QekPbx +L23RZQ//SZe0Qy0RbZlLVcs75KaEdY07+3ReWaczFNZswuor4uGorgemocR8Q+vH +qJJEPj4jJxITpF3oTtPa3QiLRSFykiF7g4kGsWODHCpHTCtb3/9XhaIpfpFFkQ3N +Y+LPMouS1OEi0L/C9bHGFfSux8uRzaoukpvMhNkk5QwkU2mnvtg85JxTCjiVjvuV +pqCGksnbUnwNmSfdGvM7Trct0HtuYmTaXSbexef7ME+jmuzGL/5jykl7HP462ZU4 +3eqtK8qeIwgBnLVAWzHe5Sz2y6meVYkne9tY4YJXdQt5XpQHriyesLv6LmczsMaF +bM9bYC1dq5CIa3qcyyeRB067aPLSJ+zk1OJaDiKV1KrdunbXrIEuY9mATiXdKkCq +MrJpfrqQ4WP19H1WxycHIFewGgPTq5+KpnlpHJNVt54F9dZgJ5+CWFb+UE8P7PeJ +niKsdn8eyRgGM415r7Qz0BA++Cf5N7Ovux9zDjlSEsoJmj9WbdG/Bi5ea7zd8tDm +OC9VaJx9AAtB65zPCkBurNlj/cFHcVGfI1k2hlwNsKtmJvZ8i0/hbq4Vnr8GjqeP +ki3xm1scaxKe2CfqgxlQ8TAe67aD2K/q5PhCVTBF/LgkrHeuxfpsYKAC/C5qBvvX +DVUp4NQzbCQhGwMjlkTiCvgPtno/vllac4PEhCg6JarQioRwvMs= +=mJiC +-----END PGP SIGNATURE----- diff --git a/thunderbird-102.9.1.source.tar.xz b/thunderbird-102.9.1.source.tar.xz deleted file mode 100644 index 4aee6b6..0000000 --- a/thunderbird-102.9.1.source.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ba28be5f2ad7c79419786ac9d753d780cf84984a2d4a88b0e8cafe0c0f95873 -size 503181696 diff --git a/thunderbird-102.9.1.source.tar.xz.asc b/thunderbird-102.9.1.source.tar.xz.asc deleted file mode 100644 index a0751ea..0000000 --- a/thunderbird-102.9.1.source.tar.xz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEEQ2D+IQnEl2MYb44h6+QekPbxL20FAmQjNvIACgkQ6+QekPbx -L23f6g/5AWrdW5B2DvjPOus4fdt13pLvK4kNkIq3y3MZgF2nsRRTgk30scjaZxf3 -yYZOicMHTa3cVapNZTe0f2BFDMHKElL1hE8OsPdLyrFKuG3Xbsm8s7dnWQHPLo0w -IP8OfNm7MhGhVq4NN68liFH6gnmYCsKluHWrWFw3KvKsKuHjZaIcI/7CgmzWtOZI -k9S7Lr/jk1o2VRIXuI5yoFIkCs8mshUbY7SLEBVzBLtDobYkxj059P1A9stEorSn -lVyi5FxJlQLPj3L0U12xnYzfv+c+SNuOFvWx4yfMUOncPGDN3AKYtrm18U2pQGXG -Ub+EamDek0C8DQqUya/oE8Ar3XFddGDwLOTw/zZunmANRyqolWq0gLrkMOcPtz/s -0TOJxjDss2X3dk2bpBJkRgieRS4G2EDABbKJDk8vEjxL0fAH3P4JKczb+pUU4iig -+Py7IW1TsHEdTUFQYDKaG6bu4pMKhNh0kreug0a+PDLRSEAcLAIsE7x3dokP2JD/ -pNoJQ/8fZyZG0yRpyday/AwlY6U6ahgwsfpAhxwEGjExie4NjyLqqWSEeHNNexjv -ZL6uFNwzNVVgYE0deGAKnh2fZuNO4n8I/MB1fzy3vBurkwcjox3FeBLgmM8A0leP -LNc3yO8rY5Usu1IN6iCvIDL1XMM5IdwfJj6N0JVk3+gJO02rpFc= -=RWOf ------END PGP SIGNATURE-----