Compare commits

..

40 commits

Author SHA1 Message Date
Eike Rathke
093cbcc87f Merge remote-tracking branch 'origin/rawhide' into f40 2025-04-30 17:43:18 +02:00
Eike Rathke
be9079cd64 Merge remote-tracking branch 'origin/rawhide' into f40 2025-04-17 13:55:50 +02:00
Eike Rathke
d12794f6bd Merge remote-tracking branch 'origin/rawhide' into f40 2025-04-03 11:25:03 +02:00
Eike Rathke
5178dbc5d9 Merge remote-tracking branch 'origin/rawhide' into f40 2025-03-06 23:46:19 +01:00
Jan Horak
054181fd93 Merge branch 'main' into f40 2025-02-25 15:02:59 +01:00
Eike Rathke
d38ea34cd3 Merge remote-tracking branch 'origin/rawhide' into f40 2025-01-28 23:47:13 +01:00
Eike Rathke
84650f797c Merge remote-tracking branch 'origin/rawhide' into f40 2025-01-09 17:22:21 +01:00
Eike Rathke
78ad184f83 Merge remote-tracking branch 'origin/rawhide' into f40 2025-01-06 18:36:51 +01:00
Eike Rathke
4dd2c755af Merge remote-tracking branch 'origin/rawhide' into f40 2024-12-11 19:08:20 +01:00
Eike Rathke
e44027c8b4 Merge remote-tracking branch 'origin/rawhide' into f40 2024-11-27 16:31:09 +01:00
Eike Rathke
82f3c73da3 Merge remote-tracking branch 'origin/rawhide' into f40 2024-11-13 14:53:45 +01:00
Eike Rathke
d7b0c299f6 Merge remote-tracking branch 'origin/rawhide' into f40 2024-11-11 17:21:04 +01:00
Eike Rathke
d55ba11efb Merge remote-tracking branch 'origin/rawhide' into f40 2024-11-07 16:02:06 +01:00
Eike Rathke
e365d236ed Merge remote-tracking branch 'origin/rawhide' into f40 2024-11-04 11:33:03 +01:00
Eike Rathke
113efa17a0 Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-28 14:57:12 +01:00
Eike Rathke
f4cd903522 Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-28 13:50:22 +01:00
Eike Rathke
a67599f95c Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-22 23:13:20 +02:00
Eike Rathke
7c77470312 Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-17 14:08:22 +02:00
Eike Rathke
9ac50baa0c Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-10 14:31:36 +02:00
Eike Rathke
8a8d59d848 Merge remote-tracking branch 'origin/rawhide' into f40 2024-10-08 12:07:38 +02:00
Eike Rathke
538999ce91 Merge remote-tracking branch 'origin/rawhide' into f40 2024-09-05 16:29:13 +02:00
Jan Horak
c6973a68b2 Rebase to 128.1 esr 2024-08-09 15:34:27 +02:00
Eike Rathke
f1c002ab45 Update to 115.14.0 2024-08-06 18:56:29 +02:00
Eike Rathke
1009b00bdf Merge remote-tracking branch 'origin/rawhide' into f40 2024-07-17 12:05:49 +02:00
Eike Rathke
c9712f8c61 Merge remote-tracking branch 'origin/rawhide' into f40 2024-06-19 12:27:07 +02:00
Eike Rathke
ed74204de3 Merge remote-tracking branch 'origin/rawhide' into f40 2024-06-12 15:26:52 +02:00
Eike Rathke
19e42eccf0 Merge remote-tracking branch 'origin/rawhide' into f40 2024-06-03 12:33:05 +02:00
Eike Rathke
8b1e54473d Merge remote-tracking branch 'origin/rawhide' into f40 2024-05-29 16:28:43 +02:00
Eike Rathke
19bb04a54e Merge remote-tracking branch 'origin/rawhide' into f40 2024-05-29 15:36:54 +02:00
Eike Rathke
1a3e6866b0 Merge remote-tracking branch 'origin/rawhide' into f40 2024-05-29 13:49:40 +02:00
Eike Rathke
e8dc44af94 Merge branch 'rawhide' into f40 2024-05-27 23:44:48 +02:00
Eike Rathke
3d21c36eea Merge branch 'rawhide' into f40 2024-05-27 19:55:30 +02:00
Eike Rathke
49a2687ab6 Merge remote-tracking branch 'origin/rawhide' into f40 2024-05-15 20:44:35 +02:00
Eike Rathke
2cfab527d1 Merge remote-tracking branch 'origin/rawhide' into f40 2024-05-14 16:01:47 +02:00
Jan Horak
b53aa7bc9d Merge branch 'main' into f40 2024-04-23 13:42:23 +02:00
Jan Horak
1bc7123ecf Merge branch 'main' into f40 2024-04-23 08:42:20 +02:00
Eike Rathke
2278b9fed2 Merge remote-tracking branch 'origin/rawhide' into f40 2024-04-23 00:18:14 +02:00
Eike Rathke
9dd8d34354 Merge remote-tracking branch 'origin/rawhide' into f40 2024-04-22 12:22:48 +02:00
Eike Rathke
ec8e3a6ad7 Merge remote-tracking branch 'origin/rawhide' into f40 2024-04-16 21:22:09 +02:00
Eike Rathke
f1f41a6dcf Update to 115.9.0
Fix expat CVE-2023-52425
2024-03-19 14:15:09 +01:00
20 changed files with 528 additions and 367 deletions

32
.gitignore vendored
View file

@ -496,35 +496,3 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2
/thunderbird-langpacks-128.9.2esr-20250416.tar.xz
/thunderbird-128.10.0esr.source.tar.xz
/thunderbird-langpacks-128.10.0esr-20250428.tar.xz
/thunderbird-128.10.1esr.source.tar.xz
/thunderbird-langpacks-128.10.1esr-20250519.tar.xz
/thunderbird-128.10.2esr.source.tar.xz
/thunderbird-langpacks-128.10.2esr-20250521.tar.xz
/thunderbird-128.11.0esr.source.tar.xz
/thunderbird-langpacks-128.11.0esr-20250526.tar.xz
/thunderbird-128.11.1esr.source.tar.xz
/thunderbird-langpacks-128.11.1esr-20250611.tar.xz
/thunderbird-128.12.0esr.source.tar.xz
/thunderbird-langpacks-128.12.0esr-20250630.tar.xz
/thunderbird-128.13.0esr.source.tar.xz
/thunderbird-langpacks-128.13.0esr-20250723.tar.xz
/thunderbird-140.1.0esr.source.tar.xz
/thunderbird-langpacks-140.1.0esr-20250731.tar.xz
/thunderbird-140.2.1esr.source.tar.xz
/thunderbird-langpacks-140.2.1esr-20250904.tar.xz
/thunderbird-langpacks-140.3.0esr-20250924.tar.xz
/thunderbird-140.3.0esr.source.tar.xz
/thunderbird-143.0.1.source.tar.xz
/thunderbird-langpacks-143.0.1-20251002.tar.xz
/thunderbird-144.0.source.tar.xz
/thunderbird-langpacks-144.0-20251016.tar.xz
/thunderbird-144.0.1.source.tar.xz
/thunderbird-langpacks-144.0.1-20251021.tar.xz
/thunderbird-145.0.source.tar.xz
/thunderbird-langpacks-145.0-20251119.tar.xz
/thunderbird-146.0.source.tar.xz
/thunderbird-langpacks-146.0-20251215.tar.xz
/thunderbird-146.0.1.source.tar.xz
/thunderbird-langpacks-146.0.1-20251218.tar.xz
/thunderbird-147.0.source.tar.xz
/thunderbird-langpacks-147.0-20260114.tar.xz

View file

@ -1,12 +0,0 @@
diff -up thunderbird-147.0/comm/third_party/openpgp.configure.build-botan thunderbird-147.0/comm/third_party/openpgp.configure
--- thunderbird-147.0/comm/third_party/openpgp.configure.build-botan 2026-01-08 22:45:29.000000000 +0100
+++ thunderbird-147.0/comm/third_party/openpgp.configure 2026-01-14 15:43:34.946025500 +0100
@@ -348,7 +348,7 @@ with only_when(in_tree_librnp):
botan_flags = [
"--cc-bin={}".format(cxx_compiler.compiler),
- "--cc-abi-flags={}".format(" ".join(abi_flags)),
+ #"--cc-abi-flags={}".format(" ".join(abi_flags)),
"--cpu={}".format(target.cpu),
"--os={}".format(botan_os),
"--with-build-dir={}".format(botan_objdir),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,11 +0,0 @@
diff -up thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h.seccomp thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h
--- thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h.seccomp 2025-12-09 13:42:31.378958842 +0100
+++ thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h 2025-12-09 13:42:37.886937626 +0100
@@ -6,6 +6,7 @@
#define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_
#include <stdint.h>
+#include <signal.h>
#include <sys/ioctl.h>
#include "build/build_config.h"

View file

@ -0,0 +1,44 @@
diff --git a/gfx/wr/swgl/src/vector_type.h b/gfx/wr/swgl/src/vector_type.h
--- a/gfx/wr/swgl/src/vector_type.h
+++ b/gfx/wr/swgl/src/vector_type.h
@@ -238,27 +238,27 @@
VectorType& operator%=(int x) {
data %= x;
return *this;
}
- VectorType<mask_type, N> operator==(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data == x.data);
+ VectorType<mask_index, N> operator==(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data == x.data);
}
- VectorType<mask_type, N> operator!=(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data != x.data);
+ VectorType<mask_index, N> operator!=(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data != x.data);
}
- VectorType<mask_type, N> operator<(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data < x.data);
+ VectorType<mask_index, N> operator<(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data < x.data);
}
- VectorType<mask_type, N> operator>(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data > x.data);
+ VectorType<mask_index, N> operator>(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data > x.data);
}
- VectorType<mask_type, N> operator<=(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data <= x.data);
+ VectorType<mask_index, N> operator<=(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data <= x.data);
}
- VectorType<mask_type, N> operator>=(VectorType x) const {
- return VectorType<mask_type, N>::wrap(data >= x.data);
+ VectorType<mask_index, N> operator>=(VectorType x) const {
+ return VectorType<mask_index, N>::wrap(data >= x.data);
}
VectorType operator!() const { return wrap(!data); }
VectorType operator&&(VectorType x) const { return wrap(data & x.data); }
VectorType operator||(VectorType x) const { return wrap(data | x.data); }

View file

@ -0,0 +1,276 @@
diff --git a/gfx/wr/swgl/src/vector_type.h b/gfx/wr/swgl/src/vector_type.h
--- a/gfx/wr/swgl/src/vector_type.h
+++ b/gfx/wr/swgl/src/vector_type.h
@@ -92,10 +92,19 @@
template <>
struct VectorMask<float> {
typedef int type;
};
+# ifdef __has_builtin
+# if __has_builtin(__builtin_convertvector)
+# define HAS_BUILTIN_CONVERTVECTOR
+# endif
+# if __has_builtin(__builtin_shufflevector)
+# define HAS_BUILTIN_SHUFFLEVECTOR
+# endif
+# endif
+
template <typename T, int N>
struct VectorType {
enum { SIZE = N };
typedef T data_type __attribute__((vector_size(sizeof(T) * N)));
@@ -134,10 +143,17 @@
}
T& operator[](size_t i) { return elements[i]; }
T operator[](size_t i) const { return elements[i]; }
+# ifdef HAS_BUILTIN_CONVERTVECTOR
+ template <typename U, int M>
+ operator VectorType<U, M>() const {
+ return VectorType<U, M>::wrap(
+ __builtin_convertvector(data, typename VectorType<U, M>::data_type));
+ }
+# else
template <typename U>
operator VectorType<U, 2>() const {
return VectorType<U, 2>::wrap(
(typename VectorType<U, N>::data_type){U(x), U(y)});
}
@@ -171,10 +187,11 @@
U(elements[13]),
U(elements[14]),
U(elements[15]),
});
}
+# endif
VectorType operator-() const { return wrap(-data); }
VectorType operator~() const { return wrap(~data); }
VectorType operator&(VectorType x) const { return wrap(data & x.data); }
@@ -266,46 +283,10 @@
VectorType& operator=(VectorType x) {
data = x.data;
return *this;
}
- VectorType<T, 4> shuffle(VectorType b, mask_index x, mask_index y,
- mask_index z, mask_index w) const {
- return VectorType<T, 4>::wrap(__builtin_shuffle(
- data, b.data, (typename VectorType<T, 4>::mask_type){x, y, z, w}));
- }
- VectorType<T, 8> shuffle(VectorType b, mask_index x, mask_index y,
- mask_index z, mask_index w, mask_index s,
- mask_index t, mask_index u, mask_index v) const {
- return VectorType<T, 8>::wrap(__builtin_shuffle(
- data, b.data,
- (typename VectorType<T, 8>::mask_type){x, y, z, w, s, t, u, v}));
- }
- VectorType<T, 16> shuffle(VectorType b, mask_index x, mask_index y,
- mask_index z, mask_index w, mask_index s,
- mask_index t, mask_index u, mask_index v,
- mask_index i, mask_index j, mask_index k,
- mask_index l, mask_index m, mask_index n,
- mask_index o, mask_index p) const {
- return VectorType<T, 16>::wrap(
- __builtin_shuffle(data, b.data,
- (typename VectorType<T, 16>::mask_type){
- x, y, z, w, s, t, u, v, i, j, k, l, m, n, o, p}));
- }
-
- VectorType<T, 4> swizzle(mask_index x, mask_index y, mask_index z,
- mask_index w) const {
- return VectorType<T, 4>::wrap(__builtin_shuffle(
- data, (typename VectorType<T, 4>::mask_type){x, y, z, w}));
- }
- VectorType<T, 8> swizzle(mask_index x, mask_index y, mask_index z,
- mask_index w, mask_index s, mask_index t,
- mask_index u, mask_index v) const {
- return VectorType<T, 8>::wrap(__builtin_shuffle(
- data, (typename VectorType<T, 8>::mask_type){x, y, z, w, s, t, u, v}));
- }
-
SI VectorType wrap(half_type low, half_type high) {
VectorType v;
v.low_half = low;
v.high_half = high;
return v;
@@ -313,57 +294,90 @@
VectorType<T, N * 2> combine(VectorType high) const {
return VectorType<T, N * 2>::wrap(data, high.data);
}
-# define xxxx swizzle(0, 0, 0, 0)
-# define yyyy swizzle(1, 1, 1, 1)
-# define zzzz swizzle(2, 2, 2, 2)
-# define wwww swizzle(3, 3, 3, 3)
-# define xxyy swizzle(0, 0, 1, 1)
-# define xxzz swizzle(0, 0, 2, 2)
-# define yyww swizzle(1, 1, 3, 3)
-# define zzww swizzle(2, 2, 3, 3)
-# define xyxy swizzle(0, 1, 0, 1)
-# define xzxz swizzle(0, 2, 0, 2)
-# define ywyw swizzle(1, 3, 1, 3)
-# define zwzw swizzle(2, 3, 2, 3)
-# define zwxy swizzle(2, 3, 0, 1)
-# define zyxw swizzle(2, 1, 0, 3)
-# define xxyz swizzle(0, 0, 1, 2)
-# define xyyz swizzle(0, 1, 1, 2)
-# define xyzz swizzle(0, 1, 2, 2)
-# define xzyw swizzle(0, 2, 1, 3)
-# define yzwx swizzle(1, 2, 3, 0)
-# define wxyz swizzle(3, 0, 1, 2)
-# define wzyx swizzle(3, 2, 1, 0)
-# define xxxxyyyy XXXXYYYY()
- VectorType<T, 8> XXXXYYYY() const {
- return swizzle(0, 0, 0, 0).combine(swizzle(1, 1, 1, 1));
+# ifdef HAS_BUILTIN_SHUFFLEVECTOR
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
+ VectorType<T, M> shuffle(VectorType b) const {
+ return VectorType<T, M>::wrap(
+ __builtin_shufflevector(data, b.data, INDEXES...));
+ }
+
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
+ VectorType<T, M> swizzle() const {
+ return VectorType<T, M>::wrap(
+ __builtin_shufflevector(data, data, INDEXES...));
+ }
+# else
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
+ VectorType<T, M> shuffle(VectorType<T, M> b) const {
+ return VectorType<T, M>::wrap(__builtin_shuffle(
+ data, b.data, (typename VectorType<T, M>::mask_type){INDEXES...}));
+ }
+
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
+ mask_index E, mask_index F, mask_index G, mask_index H>
+ VectorType<T, 8> shuffle(VectorType<T, 4> b) const {
+ return shuffle<A, B, C, D>(b).combine(shuffle<E, F, G, H>(b));
+ }
+
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
+ mask_index E, mask_index F, mask_index G, mask_index H,
+ mask_index I, mask_index J, mask_index K, mask_index L,
+ mask_index W, mask_index X, mask_index Y, mask_index Z>
+ VectorType<T, 16> shuffle(VectorType<T, 4> b) const {
+ return shuffle<A, B, C, D, E, F, G, H>(b).combine(
+ shuffle<I, J, K, L, W, X, Y, Z>(b));
}
-# define zzzzwwww ZZZZWWWW()
- VectorType<T, 8> ZZZZWWWW() const {
- return swizzle(2, 2, 2, 2).combine(swizzle(3, 3, 3, 3));
+
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
+ mask_index E, mask_index F, mask_index G, mask_index H,
+ mask_index I, mask_index J, mask_index K, mask_index L,
+ mask_index W, mask_index X, mask_index Y, mask_index Z>
+ VectorType<T, 16> shuffle(VectorType<T, 8> b) const {
+ return shuffle<A, B, C, D, E, F, G, H>(b).combine(
+ shuffle<I, J, K, L, W, X, Y, Z>(b));
}
-# define xyzwxyzw XYZWXYZW()
- VectorType<T, 8> XYZWXYZW() const { return combine(*this); }
-# define xyxyxyxy XYXYXYXY()
- VectorType<T, 8> XYXYXYXY() const {
- return swizzle(0, 1, 0, 1).combine(swizzle(0, 1, 0, 1));
+
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
+ VectorType<T, M> swizzle() const {
+ return shuffle<INDEXES...>(*this);
}
-# define zwzwzwzw ZWZWZWZW()
- VectorType<T, 8> ZWZWZWZW() const {
- return swizzle(2, 3, 2, 3).combine(swizzle(2, 3, 2, 3));
- }
-# define xxyyzzww XXYYZZWW()
- VectorType<T, 8> XXYYZZWW() const {
- return swizzle(0, 0, 1, 1).combine(swizzle(2, 2, 3, 3));
- }
-# define xxxxyyyyzzzzwwww XXXXYYYYZZZZWWWW()
- VectorType<T, 16> XXXXYYYYZZZZWWWW() {
- return XXXXYYYY().combine(ZZZZWWWW());
- }
+# endif
+
+# define SWIZZLE(...) template swizzle<__VA_ARGS__>()
+
+# define xxxx SWIZZLE(0, 0, 0, 0)
+# define yyyy SWIZZLE(1, 1, 1, 1)
+# define zzzz SWIZZLE(2, 2, 2, 2)
+# define wwww SWIZZLE(3, 3, 3, 3)
+# define xxyy SWIZZLE(0, 0, 1, 1)
+# define xxzz SWIZZLE(0, 0, 2, 2)
+# define yyww SWIZZLE(1, 1, 3, 3)
+# define zzww SWIZZLE(2, 2, 3, 3)
+# define xyxy SWIZZLE(0, 1, 0, 1)
+# define xzxz SWIZZLE(0, 2, 0, 2)
+# define ywyw SWIZZLE(1, 3, 1, 3)
+# define zwzw SWIZZLE(2, 3, 2, 3)
+# define zwxy SWIZZLE(2, 3, 0, 1)
+# define zyxw SWIZZLE(2, 1, 0, 3)
+# define xxyz SWIZZLE(0, 0, 1, 2)
+# define xyyz SWIZZLE(0, 1, 1, 2)
+# define xyzz SWIZZLE(0, 1, 2, 2)
+# define xzyw SWIZZLE(0, 2, 1, 3)
+# define yzwx SWIZZLE(1, 2, 3, 0)
+# define wxyz SWIZZLE(3, 0, 1, 2)
+# define wzyx SWIZZLE(3, 2, 1, 0)
+# define xxxxyyyy SWIZZLE(0, 0, 0, 0, 1, 1, 1, 1)
+# define zzzzwwww SWIZZLE(2, 2, 2, 2, 3, 3, 3, 3)
+# define xyzwxyzw SWIZZLE(0, 1, 2, 3, 0, 1, 2, 3)
+# define xyxyxyxy SWIZZLE(0, 1, 0, 1, 0, 1, 0, 1)
+# define zwzwzwzw SWIZZLE(2, 3, 2, 3, 2, 3, 2, 3)
+# define xxyyzzww SWIZZLE(0, 0, 1, 1, 2, 2, 3, 3)
+# define xxxxyyyyzzzzwwww \
+ SWIZZLE(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
};
template <typename T>
struct VectorType<T, 2> {
typedef T data_type __attribute__((vector_size(sizeof(T) * 2)));
@@ -386,11 +400,11 @@
VectorType operator|(VectorType x) const { return wrap(data | x.data); }
VectorType operator|(T x) const { return wrap(data | x); }
};
# define CONVERT(vector, type) ((type)(vector))
-# define SHUFFLE(a, b, ...) a.shuffle(b, __VA_ARGS__)
+# define SHUFFLE(a, b, ...) ((a).template shuffle<__VA_ARGS__>(b))
template <typename T, int N>
SI VectorType<T, N * 2> combine(VectorType<T, N> a, VectorType<T, N> b) {
return VectorType<T, N * 2>::wrap(a.data, b.data);
}
@@ -476,26 +490,19 @@
template <typename T>
SI VectorType<T, 8> zip2High(VectorType<T, 8> a, VectorType<T, 8> b) {
return SHUFFLE(a, b, 4, 5, 12, 13, 6, 7, 14, 15);
}
-#ifdef __clang__
template <typename T>
SI VectorType<T, 8> zip(VectorType<T, 4> a, VectorType<T, 4> b) {
return SHUFFLE(a, b, 0, 4, 1, 5, 2, 6, 3, 7);
}
template <typename T>
SI VectorType<T, 16> zip(VectorType<T, 8> a, VectorType<T, 8> b) {
return SHUFFLE(a, b, 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15);
}
-#else
-template <typename T, int N>
-SI VectorType<T, N * 2> zip(VectorType<T, N> a, VectorType<T, N> b) {
- return combine(zipLow(a, b), zipHigh(a, b));
-}
-#endif
template <typename T>
struct Unaligned {
template <typename P>
SI T load(const P* p) {

View file

@ -0,0 +1,49 @@
diff -up thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok.c
--- thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 2022-03-02 17:57:38.364361168 +0100
+++ thunderbird-91.7.0/parser/expat/lib/xmltok.c 2022-03-02 17:58:22.235512399 +0100
@@ -65,13 +65,6 @@
+ ((((byte)[2]) >> 5) & 1)] \
& (1u << (((byte)[2]) & 0x1F)))
-#define UTF8_GET_NAMING(pages, p, n) \
- ((n) == 2 \
- ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
- : ((n) == 3 \
- ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
- : 0))
-
/* Detection of invalid UTF-8 sequences is based on Table 3.1B
of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
with the additional restriction of not allowing the Unicode
diff -up thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c
--- thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 2022-03-02 17:57:38.365361172 +0100
+++ thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c 2022-03-02 18:04:51.240853247 +0100
@@ -34,7 +34,7 @@
case BT_LEAD ## n: \
if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \
- if (!IS_NAME_CHAR(enc, ptr, n)) { \
+ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \
*nextTokPtr = ptr; \
return XML_TOK_INVALID; \
} \
@@ -62,7 +62,7 @@
case BT_LEAD ## n: \
if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \
- if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
+ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \
*nextTokPtr = ptr; \
return XML_TOK_INVALID; \
} \
@@ -1090,6 +1090,10 @@ PREFIX(prologTok)(const ENCODING *enc, c
case BT_LEAD ## n: \
if (end - ptr < n) \
return XML_TOK_PARTIAL_CHAR; \
+ if (IS_INVALID_CHAR(enc, ptr, n)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID; \
+ } \
if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
ptr += n; \
tok = XML_TOK_NAME; \

View file

@ -0,0 +1,40 @@
diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 thunderbird-91.7.0/parser/expat/lib/xmlparse.c
--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 2022-03-02 18:08:40.085642028 +0100
+++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:13:31.838667958 +0100
@@ -700,8 +700,7 @@ XML_ParserCreate(const XML_Char *encodin
XML_Parser XMLCALL
XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
{
- XML_Char tmp[2];
- *tmp = nsSep;
+ XML_Char tmp[2] = {nsSep, 0};
return XML_ParserCreate_MM(encodingName, NULL, tmp);
}
#endif
@@ -1276,8 +1275,7 @@ XML_ExternalEntityParserCreate(XML_Parse
would be otherwise.
*/
if (ns) {
- XML_Char tmp[2];
- *tmp = namespaceSeparator;
+ XML_Char tmp[2] = {parser->m_namespaceSeparator, 0};
parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
}
else {
@@ -3667,6 +3665,16 @@ addBinding(XML_Parser parser, PREFIX *pr
if (!mustBeXML && isXMLNS
&& (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
isXMLNS = XML_FALSE;
+ // NOTE: While Expat does not validate namespace URIs against RFC 3986,
+ // we have to at least make sure that the XML processor on top of
+ // Expat (that is splitting tag names by namespace separator into
+ // 2- or 3-tuples (uri-local or uri-local-prefix)) cannot be confused
+ // by an attacker putting additional namespace separator characters
+ // into namespace declarations. That would be ambiguous and not to
+ // be expected.
+ if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator)) {
+ return XML_ERROR_SYNTAX;
+ }
}
isXML = isXML && len == xmlLen;
isXMLNS = isXMLNS && len == xmlnsLen;

View file

@ -0,0 +1,24 @@
diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 thunderbird-91.7.0/parser/expat/lib/xmlparse.c
--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 2022-03-02 18:17:50.966583254 +0100
+++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:19:27.636924735 +0100
@@ -2479,6 +2479,7 @@ storeRawNames(XML_Parser parser)
while (tag) {
int bufSize;
int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
+ size_t rawNameLen;
char *rawNameBuf = tag->buf + nameLen;
/* Stop if already stored. Since tagStack is a stack, we can stop
at the first entry that has already been copied; everything
@@ -2490,7 +2491,11 @@ storeRawNames(XML_Parser parser)
/* For re-use purposes we need to ensure that the
size of tag->buf is a multiple of sizeof(XML_Char).
*/
- bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
+ rawNameLen = ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
+ /* Detect and prevent integer overflow. */
+ if (rawNameLen > (size_t)INT_MAX - nameLen)
+ return XML_FALSE;
+ bufSize = nameLen + (int)rawNameLen;
if (bufSize > tag->bufEnd - tag->buf) {
char *temp = (char *)REALLOC(tag->buf, bufSize);
if (temp == NULL)

View file

@ -12,7 +12,7 @@ to be used with 'cargo vendor' commmand.
"""
[dependencies]
cbindgen = "0.29.1"
cbindgen = "0.26.0"
[[bin]]
name = "dummy"

View file

@ -1,6 +1,6 @@
diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
--- firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 2025-06-02 15:26:44.000000000 +0200
+++ firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2025-06-04 13:24:00.344728697 +0200
diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp
--- firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2023-07-10 21:08:53.000000000 +0200
+++ firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp 2023-07-17 10:33:23.443355156 +0200
@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS
if (NS_FAILED(rv)) return rv;
@ -23,10 +23,10 @@ diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-b
} else {
nsAutoCString location("resource://gre/defaults/autoconfig/");
location += aFileName;
diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefox-140.0/modules/libpref/Preferences.cpp
--- firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 2025-06-02 15:26:51.000000000 +0200
+++ firefox-140.0/modules/libpref/Preferences.cpp 2025-06-04 13:24:00.345430064 +0200
@@ -4914,6 +4914,9 @@ nsresult Preferences::InitInitialObjects
diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2/modules/libpref/Preferences.cpp
--- firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 2023-07-10 21:09:00.000000000 +0200
+++ firefox-115.0.2/modules/libpref/Preferences.cpp 2023-07-17 10:33:23.444355156 +0200
@@ -4825,6 +4825,9 @@ nsresult Preferences::InitInitialObjects
//
// Thus, in the omni.jar case, we always load app-specific default
// preferences from omni.jar, whether or not `$app == $gre`.
@ -36,10 +36,10 @@ diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefo
nsresult rv = NS_ERROR_FAILURE;
UniquePtr<nsZipFind> find;
diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firefox-140.0/toolkit/xre/nsXREDirProvider.cpp
--- firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 2025-06-02 15:27:00.000000000 +0200
+++ firefox-140.0/toolkit/xre/nsXREDirProvider.cpp 2025-06-04 15:44:09.413562326 +0200
@@ -76,6 +76,7 @@
diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp
--- firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 2023-07-10 22:57:20.000000000 +0200
+++ firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp 2023-07-17 10:56:25.309692121 +0200
@@ -72,6 +72,7 @@
#endif
#ifdef XP_UNIX
# include <ctype.h>
@ -47,7 +47,7 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
#endif
#ifdef XP_IOS
# include "UIKitDirProvider.h"
@@ -462,6 +463,17 @@ nsXREDirProvider::GetFile(const char* aP
@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP
rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME));
NS_ENSURE_SUCCESS(rv, rv);
rv = EnsureDirectoryExists(file);
@ -60,12 +60,12 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
+ appInfo->GetName(appName);
+ ToLowerCase(appName);
+ sysConfigDir.Append(appName);
+ NS_NewNativeLocalFile(sysConfigDir, getter_AddRefs(file));
+ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file));
+ rv = EnsureDirectoryExists(file);
} else {
// We don't know anything about this property. Fail without warning, because
// otherwise we'll get too much warning spam due to
@@ -518,6 +530,16 @@ nsXREDirProvider::GetFiles(const char* a
@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a
}
#endif
@ -82,9 +82,9 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
} else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
diff -up firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h
--- firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 2025-06-02 15:27:01.000000000 +0200
+++ firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h 2025-06-04 13:24:00.346423861 +0200
diff -up firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h
--- firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2023-07-10 21:09:13.000000000 +0200
+++ firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h 2023-07-17 10:33:23.444355156 +0200
@@ -58,6 +58,7 @@
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
#define NS_APP_PREFS_OVERRIDE_DIR \

View file

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>net.thunderbird.Thunderbird.appdata.xml</id>
<metadata_license>CC0-1.0</metadata_license>
<name>Thunderbird</name>
<summary>Thunderbird is a free and open source email, newsfeed, chat, and calendaring client</summary>
<description>
<!-- From https://www.thunderbird.net/en-US/about/ -->
<p>
Thunderbird is a free and open source email, newsfeed, chat, and
calendaring client, thats easy to set up and customize. One of the core
principles of Thunderbird is the use and promotion of open standards -
this focus is a rejection of our world of closed platforms and services
that cant communicate with each other. We want our users to have freedom
and choice in how they communicate.
</p>
<p>
Thunderbird is an open source project, which means anyone can contribute
ideas, designs, code, and time helping fellow users.
</p>
</description>
<categories>
<category>Calendar</category>
<category>Email</category>
<category>Office</category>
</categories>
<url type="homepage">https://www.thunderbird.net/</url>
<url type="bugtracker">https://bugzilla.mozilla.org/</url>
<url type="faq">https://support.mozilla.org/kb/thunderbird-faq/</url>
<url type="help">https://support.mozilla.org/products/thunderbird/</url>
<url type="donation">https://www.thunderbird.net/donate/</url>
<url type="translate">https://www.thunderbird.net/participate/</url>
<project_group>Mozilla</project_group>
<project_license>MPL-2.0</project_license>
<developer_name>Thunderbird Project</developer_name>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/thunderbird/flatpak-screenshots/main/image_1.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/thunderbird/flatpak-screenshots/main/image_2.png</image>
</screenshot>
</screenshots>
<mimetypes>
<mimetype>message/rfc822</mimetype>
<mimetype>x-scheme-handler/mailto</mimetype>
<mimetype>text/calendar</mimetype>
<mimetype>text/vcard</mimetype>
<mimetype>text/x-vcard</mimetype>
</mimetypes>
<releases>
<release version="__VERSION__" date="__DATE__"/>
</releases>
<update_contact>jhorak@redhat.com</update_contact>
</component>

View file

@ -8,7 +8,7 @@ TryExec=thunderbird
Icon=thunderbird
Terminal=false
Type=Application
MimeType=message/rfc822;x-scheme-handler/mailto;text/calendar;text/vcard;text/x-vcard;x-scheme-handler/webcal;x-scheme-handler/webcals;x-scheme-handler/mid;
MimeType=message/rfc822;x-scheme-handler/mailto;
StartupNotify=true
Categories=Network;Email;
Name[cs]=Poštovní klient Thunderbird

View file

@ -1,3 +1,3 @@
SHA512 (cbindgen-vendor.tar.xz) = 4127d3060577284eea29d697ccc2394742674f6094b7f497a95a0c3b8aa9e0494b720de8858ad31d4a6b0cd1b9586454f3c52c8088163c2709883d882e0136db
SHA512 (thunderbird-147.0.source.tar.xz) = d04a135f23572123d5cca41c2611704aa06cb81e0226c89c267dc527f59fb0d9d5d8b8a49cd126626c2fd934624c9d2420ae71dd10a912b3011f3342fbaf7511
SHA512 (thunderbird-langpacks-147.0-20260114.tar.xz) = e97f2894c0bbea00c35e5d8f0046d1d7112efb17d3af5d8a6f964c54352f9f6edbcbd4d41cc2595cb63e1116ae78680c9d42e65dc0eb0ff17e4a9d4ad97ec7ab
SHA512 (cbindgen-vendor.tar.xz) = 3e7eaff088db918e95f5505e5feeb06e8b7b95cc62042a6d163a708fc76baea43d21bf49cf7e02bc64fdfc61e8d7704057dbb225098de56e110783104d166c54
SHA512 (thunderbird-128.10.0esr.source.tar.xz) = b02582ea4fa0297a06d30eda1555bbf3ed79ae7a35a8993f2a70b0ec84af28a4d084cd7ebe1c73676e689ff9366e779cc5ef67a197638949bf232a40b740d1b6
SHA512 (thunderbird-langpacks-128.10.0esr-20250428.tar.xz) = 12e5b4a619d9a08e38fb0de77d2a9ba6ca96cb4fd22529e313d09030e8c5498c00cded08b66dd7bc78789912b9e7d5865bbea0297e6703613c99caaf4de0ae06

30
thunderbird.desktop Normal file
View file

@ -0,0 +1,30 @@
[Desktop Entry]
Version=1.0
Name=Thunderbird
GenericName=Email
Comment=Send and Receive Email
Exec=thunderbird %u
TryExec=thunderbird
Icon=thunderbird
Terminal=false
Type=Application
MimeType=message/rfc822;x-scheme-handler/mailto;
StartupNotify=true
Categories=Network;Email;
Name[cs]=Poštovní klient Thunderbird
Name[ca]=Client de correu Thunderbird
Name[fi]=Thunderbird-sähköposti
Name[fr]=Messagerie Thunderbird
Name[pl]=Klient poczty Thunderbird
Name[pt_BR]=Cliente de E-mail Thunderbird
Name[sv]=E-postklienten Thunderbird
Comment[ca]=Llegiu i escriviu correu
Comment[cs]=Čtení a psaní pošty
Comment[de]=Emails lesen und verfassen
Comment[fi]=Lue ja kirjoita sähköposteja
Comment[fr]=Lire et écrire des courriels
Comment[it]=Leggere e scrivere email
Comment[ja]=
Comment[pl]=Czytanie i wysyłanie e-maili
Comment[pt_BR]=Ler e escrever suas mensagens
Comment[sv]=Läs och skriv e-post

View file

@ -59,9 +59,6 @@ export GNOME_DISABLE_CRASH_DIALOG
##
export G_SLICE=always-malloc
# Flatpak specific environment variables
%FLATPAK_ENV_VARS%
##
## Allow downgrade because during distro upgrade the build time can be
## older in newer version than the previous one.

View file

@ -2,10 +2,6 @@
# first f42 https://koji.fedoraproject.org/koji/taskinfo?taskID=124917502
# then f40 https://koji.fedoraproject.org/koji/taskinfo?taskID=125295645
# then also f41 https://koji.fedoraproject.org/koji/taskinfo?taskID=125632253
# Excluded due to https://bugzilla.mozilla.org/show_bug.cgi?id=1792159
# https://bugzilla.redhat.com/show_bug.cgi?id=2129720
ExcludeArch: i686
%ifarch ppc64le
%global rustflags_debuginfo 1
%endif
@ -66,7 +62,7 @@ ExcludeArch: armv7hl
%define mozappdir %{_libdir}/thunderbird
%define official_branding 1
#define pre_version
%define pre_version esr
%define enable_mozilla_crashreporter 0
@ -91,13 +87,13 @@ ExcludeArch: armv7hl
Summary: Mozilla Thunderbird mail/newsgroup client
Name: thunderbird
Version: 147.0
Version: 128.10.0
Release: 1%{?dist}
URL: http://www.mozilla.org/projects/thunderbird/
License: MPL-2.0 OR GPL-2.0-or-later OR LGPL-2.0-or-later
Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz
%if %{build_langpacks}
Source1: thunderbird-langpacks-%{version}%{?pre_version}-20260114.tar.xz
Source1: thunderbird-langpacks-%{version}%{?pre_version}-20250428.tar.xz
%endif
Source3: get-calendar-langpacks.sh
Source4: cbindgen-vendor.tar.xz
@ -105,13 +101,13 @@ Source4: cbindgen-vendor.tar.xz
Source10: thunderbird-mozconfig
Source11: thunderbird-mozconfig-branded
Source12: thunderbird-redhat-default-prefs.js
Source20: thunderbird.desktop
Source21: thunderbird.sh.in
Source25: thunderbird-symbolic.svg
Source28: thunderbird-wayland.sh.in
Source29: thunderbird-wayland.desktop
Source32: node-stdout-nonblocking-wrapper
Source33: net.thunderbird.Thunderbird.desktop
Source34: net.thunderbird.Thunderbird.appdata.xml
#Patch416: firefox-SIOCGSTAMP.patch
Patch418: mozilla-1512162.patch
@ -123,8 +119,6 @@ Patch425: build-disable-elfhack.patch
# Build patches
Patch32: build-rust-ppc64le.patch
Patch35: build-ppc-jit.patch
Patch36: build-botan-target.patch
Patch37: build-c11-threads-avail.patch
# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x)
Patch40: build-aarch64-skia.patch
Patch44: build-arm-libopus.patch
@ -132,13 +126,10 @@ Patch53: firefox-gcc-build.patch
Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch
Patch78: firefox-i686-build.patch
Patch79: firefox-gcc-13-build.patch
Patch80: build-swgl-gcc15-D221744.diff
Patch81: build-swgl-gcc15-D222067.diff
# PROTOBUF_MUSTTAIL return ... error: cannot tail-call: target is not able to optimize the call into a sibling call
Patch82: build-s390x-protobuf-musttail.patch
# Build failure on rawhide of wrongly defined SYS_SECCOMP
Patch83: build-seccomp.patch
Patch84: build-minimal-lexical.patch
Patch85: build-libcubeb.patch
Patch86: build-missing-gitmodules.patch
# PPC fix
@ -147,12 +138,11 @@ Patch86: build-missing-gitmodules.patch
# Upstream patches
Patch402: mozilla-526293.patch
Patch406: mozilla-1170092.patch
# https://bugzilla.mozilla.org/show_bug.cgi?id=1998188
# this is the Firefox patch, manually rediffed against 146.0.1
# https://bugzilla.mozilla.org/show_bug.cgi?id=2008377
# fix crash on aarch64
# Bundled expat backported patches
Patch501: expat-CVE-2022-25235.patch
Patch502: expat-CVE-2022-25236.patch
Patch503: expat-CVE-2022-25315.patch
# Tentative patch for RUSTFLAGS parsing issue,
# borrowed from firefox commit 24c9accce19c5cae9394430b24eaf938a9c17882:
@ -177,7 +167,6 @@ BuildRequires: nss-devel >= %{nss_version}
Requires: nspr >= %{nspr_build_version}
Requires: nss >= %{nss_build_version}
%endif
BuildRequires: libappstream-glib
BuildRequires: libnotify-devel >= %{libnotify_version}
BuildRequires: libpng-devel
BuildRequires: libjpeg-devel
@ -193,9 +182,16 @@ BuildRequires: libXt-devel
BuildRequires: libXrender-devel
BuildRequires: hunspell-devel
BuildRequires: llvm
BuildRequires: llvm-devel
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
BuildRequires: clang17
BuildRequires: clang17-libs
BuildRequires: llvm17-devel
%global llvm_suffix -17
%else
BuildRequires: clang
BuildRequires: clang-libs
BuildRequires: llvm-devel
%endif
%if "%toolchain" == "clang"
BuildRequires: lld
%endif
@ -212,6 +208,7 @@ BuildRequires: pulseaudio-libs-devel
BuildRequires: libicu-devel
BuildRequires: perl-interpreter
Requires: mozilla-filesystem
BuildRequires: yasm
BuildRequires: dbus-glib-devel
Obsoletes: thunderbird-lightning
Provides: thunderbird-lightning
@ -304,33 +301,31 @@ debug %{name}, you want to install %{name}-debuginfo instead.
%ifarch aarch64
#%patch -P 226 -p1 -b .1354671
%endif
#FIXME %%patch -P 416 -p1 -b .SIOCGSTAMP
%patch -P36 -p1 -b .build-botan
%if 0%{?fedora} > 43
%patch -P37 -p1 -b .build-c11-threads-avail
%endif
#FIXME %patch -P 416 -p1 -b .SIOCGSTAMP
%patch -P 418 -p1 -b .mozbz-1512162
# most likely fixed
#%%patch -P 419 -p1 -b .bindgen
#%patch -P 419 -p1 -b .bindgen
%patch -P 402 -p1 -b .526293
%patch -P 406 -p1 -b .1170092-etc-conf
%patch -P 422 -p1 -b .0001-GLIBCXX-fix-for-GCC-12
#patch -P40 -p1 -b .aarch64-skia
%patch -P 501 -p1 -b .expat-CVE-2022-25235
%patch -P 502 -p1 -b .expat-CVE-2022-25236
%patch -P 503 -p1 -b .expat-CVE-2022-25315
%patch -P40 -p1 -b .aarch64-skia
%patch -P44 -p1 -b .build-arm-libopus
#patch -P53 -p1 -b .firefox-gcc-build
%patch -P71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12
%patch -P78 -p1 -b .firefox-i686
%patch -P79 -p1 -b .firefox-gcc-13-build
%patch -P80 -p1 -b .swgl-gcc15-1
%patch -P81 -p1 -b .swgl-gcc15-2
%patch -P82 -p1 -b .build-s390x-protobuf-musttail
%patch -P83 -p1 -b .build-seccomp
%patch -P84 -p1 -b .minimal-lexical
%patch -P85 -p1 -b .libcubeb
%patch -P86 -p1 -b .missing-gitmodules
#patch -P 1200 -p1 -b .rustflags-commasplit
%patch -P 1200 -p1 -b .rustflags-commasplit
%if %{official_branding}
# Required by Mozilla Corporation
@ -422,6 +417,8 @@ echo "ac_add_options --disable-crashreporter" >> .mozconfig
# Same as https://bugzilla.redhat.com/show_bug.cgi?id=2239046 for Firefox:
# Clang 17 upstream's detection fails, tell it where to look.
echo "ac_add_options --with-clang-path=`which clang%{?llvm_suffix}`" >> .mozconfig
echo "ac_add_options --with-libclang-path=`llvm-config%{?llvm_suffix} --libdir`" >> .mozconfig
echo 'export NODEJS="%{nodewrapperdir}/node-stdout-nonblocking-wrapper"' >> .mozconfig
@ -430,10 +427,6 @@ echo 'export MOZ_APP_REMOTINGNAME=net.thunderbird.Thunderbird' >> .mozconfig
%else
echo 'export MOZ_APP_REMOTINGNAME=thunderbird' >> .mozconfig
%endif
# https://bugzilla.redhat.com/show_bug.cgi?id=2239046
# with clang 17 upstream's detection fails, so let's just tell it
# where to look
echo "ac_add_options --with-libclang-path=`llvm-config --libdir`" >> .mozconfig
# Remove executable bit to make brp-mangle-shebangs happy.
find third_party -type f -iname "*.rs"|xargs chmod a-x
@ -480,13 +473,12 @@ MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS -fpermissive" | \
%{__sed} -e 's/-Wall//')
# Thunderbird is not supposed to build with exceptions globally enabled
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-fexceptions//')
#rhbz#1037063
# -Werror=format-security causes build failures when -Wno-format is explicitly given
# for some sources
# Explicitly force the hardening flags for Firefox so it passes the checksec test;
# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
%if 0%{?fedora} < 30
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
%else
# Workaround for mozbz#1531309
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
%endif
%if %{?debug_build}
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
%endif
@ -608,13 +600,6 @@ rm -f $RPM_BUILD_ROOT/%{_bindir}/thunderbird
%{__cat} %{SOURCE21} | %{__sed} -e 's,__PREFIX__,%{_prefix},g' > \
$RPM_BUILD_ROOT/%{_bindir}/thunderbird
%{__chmod} 755 $RPM_BUILD_ROOT/%{_bindir}/thunderbird
%if 0%{?flatpak}
sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/thunderbird
%else
sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird
%endif
# Enable wayland by default on f40+
# Overridable for rhbz#2283993 https://bugzilla.mozilla.org/show_bug.cgi?id=1898476
%if 0%{?fedora} >= %{only_wayland}
@ -695,13 +680,8 @@ touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat
# Register as an application to be visible in the software center
mkdir -p $RPM_BUILD_ROOT%{_datadir}/metainfo
%{__sed} -e "s/__VERSION__/%{version}/" \
-e "s/__DATE__/$(date '+%Y-%m-%d')/" \
%{SOURCE34} > %{buildroot}%{_datadir}/metainfo/net.thunderbird.Thunderbird.appdata.xml
#===============================================================================
%check
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml
%{__cp} -p comm/mail/branding/%{name}/net.thunderbird.Thunderbird.appdata.xml $RPM_BUILD_ROOT%{_datadir}/metainfo/net.thunderbird.Thunderbird.appdata.xml
sed -i -e 's|<icon .*|<icon type="stock">thunderbird</icon>|' "$RPM_BUILD_ROOT%{_datadir}/metainfo/net.thunderbird.Thunderbird.appdata.xml"
#===============================================================================
@ -724,7 +704,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%defattr(-,root,root,-)
%attr(755,root,root) %{_bindir}/thunderbird
%{_datadir}/metainfo/*.appdata.xml
%if 0%{?fedora} < %{only_wayland}
%attr(644,root,root) %{_datadir}/applications/mozilla-thunderbird.desktop
%else
%attr(644,root,root) %{_datadir}/applications/net.thunderbird.Thunderbird.desktop
%endif
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/*
%dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id}
@ -777,65 +761,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#===============================================================================
%changelog
* Wed Jan 14 2026 Jan Horak <jhorak@redhat.com> - 147.0-1
- Update to 147.0
* Fri Jan 02 2026 Adam Williamson <awilliam@redhat.com> - 146.0.1-3
- Port aarch64 crash fix from Firefox (upstream #2005469 / #2008377)
* Mon Dec 22 2025 Adam Williamson <awilliam@redhat.com> - 146.0.1-2
- Backport fix for resize crash bug (RHBZ #2423824 upstream #1998188)
* Thu Dec 18 2025 Jan Horak <jhorak@redhat.com> - 146.0.1-1
- Update to 146.0.1
* Mon Dec 15 2025 Jan Horak <jhorak@redhat.com> - 146.0-1
- Update to 146.0
* Wed Nov 19 2025 Jan Horak <jhorak@redhat.com> - 145.0-1
- Update to 145.0
* Thu Nov 06 2025 Jan Horak <jhorak@redhat.com> - 144.0.1-2
- Fixing sigsegv on rawhide
* Tue Oct 21 2025 Jan Horak <jhorak@redhat.com> - 144.0.1-1
- Update to 144.0.1
* Thu Oct 16 2025 Jan Horak <jhorak@redhat.com> - 144.0-1
- Update to 144.0
* Thu Oct 2 2025 Jan Horak <jhorak@redhat.com> - 143.0.1-1
- Update to 143.0.1
* Thu Sep 25 2025 Dominik Mierzejewski <dominik@greysector.net> - 140.3.0-2
- Drop unused yasm from build dependencies
See: https://fedoraproject.org/wiki/Changes/DeprecateYASM
Resolves: rhbz#2390538
* Wed Sep 24 2025 Jan Horak <jhorak@redhat.com> - 140.3.0-1
- Update to 140.3.0 ESR
* Thu Sep 4 2025 Jan Horak <jhorak@redhat.com> - 140.2.1-1
- Update to 140.2.1 ESR
* Wed Jul 23 2025 Eike Rathke <erack@redhat.com> - 128.13.0-1
- Update to 128.13.0
* Mon Jul 07 2025 Eike Rathke <erack@redhat.com> - 128.12.0-1
- Update to 128.12.0
* Wed Jun 11 2025 Eike Rathke <erack@redhat.com> - 128.11.1-1
- Update to 128.11.1
* Mon May 26 2025 Eike Rathke <erack@redhat.com> - 128.11.0-1
- Update to 128.11.0
* Wed May 21 2025 Eike Rathke <erack@redhat.com> - 128.10.2-1
- Update to 128.10.2
* Mon May 19 2025 Eike Rathke <erack@redhat.com> - 128.10.1-1
- Update to 128.10.1
* Tue Apr 29 2025 Eike Rathke <erack@redhat.com> - 128.10.0-1
- Update to 128.10.0
@ -894,11 +819,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
* Thu Sep 05 2024 Eike Rathke <erack@redhat.com> - 128.2.0-1
- Update to 128.2.0
* Tue Aug 06 2024 Eike Rathke <erack@redhat.com> - 128.1.0-1
* Fri Aug 09 2024 Jan Horak <jhorak@redhat.com> - 128.1.0-1
- Update to 128.1.0
* Wed Jul 17 2024 Jan Horak <jhorak@redhat.com> - 128.0-1
- Update to 128.0 ESR
* Tue Aug 06 2024 Eike Rathke <erack@redhat.com> - 115.14.0-1
- Update to 115.14.0
* Tue Jul 16 2024 Eike Rathke <erack@redhat.com> - 115.13.0-1
- Update to 115.13.0