Compare commits

...
Sign in to create a new pull request.

43 commits

Author SHA1 Message Date
Jan Horak
17a3f9ddd6 Fixing build failures 2026-01-15 12:14:10 +01:00
Jan Horak
6e08ceaf21 Fixing build failures 2026-01-15 09:48:42 +01:00
Jan Horak
82201594c7 Update to TB 147 2026-01-14 16:20:23 +01:00
Adam Williamson
42d5557980 Port aarch64 crash fix from Firefox (upstream #2005469 / #2008377)
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2026-01-02 10:54:55 -08:00
Adam Williamson
f421132d2a Backport fix for resize crash bug (RHBZ #2423824 upstream #1998188)
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2025-12-22 12:36:48 -08:00
Jan Horak
f72fec623d Added libappstream-glib for the appstream-util 2025-12-18 14:16:52 +01:00
Jan Horak
07a6fa1a22 Update to 146.0.1 build1 2025-12-18 11:53:59 +01:00
Jan Horak
50a950eaf6 Fixed mimetypes for .desktop file, fixed appdata to include screenshots 2025-12-18 11:18:41 +01:00
Jan Horak
aba9f2af8f Update cbindgen 2025-12-16 09:19:36 +01:00
Jan Horak
9194c44975 Update to 146.0 build1 2025-12-15 15:05:48 +01:00
Jan Horak
403614c19b Workaround for wrongly defined SYS_SECCOMP on rawhide 2025-12-09 13:44:33 +01:00
Jan Horak
2a4a746d7c Fixing f44 build - where c11 threads implementation is available 2025-11-25 13:38:16 +01:00
Jan Horak
82f401f357 Disable fix for rawhide 2025-11-24 08:36:57 +01:00
Jan Horak
132ca7bc53 Fixing f44 build - where c11 threads implementation is available 2025-11-20 12:54:34 +01:00
Jan Horak
9c41551f62 Fixing f44 build - where c11 threads implementation is available 2025-11-20 12:38:55 +01:00
Jan Horak
a82adef269 Fixing f44 build - where c11 threads implementation is available 2025-11-20 12:12:47 +01:00
Jan Horak
9b664632be Fixing f44 build - where c11 threads implementation is available 2025-11-20 11:26:53 +01:00
Jan Horak
eb6ca2939d Fixing f44 build - where c11 threads implementation is available 2025-11-20 10:36:47 +01:00
Jan Horak
b4b41186fb Fixing botan build 2025-11-20 09:47:48 +01:00
Jan Horak
43e0d5b6f7 Update to 145.0 build2 2025-11-19 10:16:05 +01:00
Jan Horak
09b2af7944 Fixing sigsegv on rawhide 2025-11-06 12:09:27 +01:00
Jan Horak
4de5aed60c Update to 140.0.1 2025-10-21 09:18:20 +02:00
Jan Horak
3b4cf8bcd7 Using FLATPA_ENV_VARS to pass extra data to /app/bin/thunderbird 2025-10-21 08:37:23 +02:00
Jan Horak
aae14bc19f Update to 144 2025-10-16 14:25:09 +02:00
Jan Horak
fc296252ef Update to 143.0.1 2025-10-02 13:11:25 +02:00
Dominik 'Rathann' Mierzejewski
7c21fbc626 Drop unused yasm from build dependencies
See: https://fedoraproject.org/wiki/Changes/DeprecateYASM

Resolves: rhbz#2390538
2025-09-26 06:57:19 +00:00
Jan Horak
9e16b9a27b Fixing build for eln 2025-09-25 14:49:52 +02:00
Jan Horak
d43d615661 Update to 140.3 esr 2025-09-24 14:18:09 +02:00
Jan Horak
d4f1a7851f Fixed llvm build args 2025-09-23 07:46:36 +02:00
Jan Horak
92f6afb27e Fixed llvm build args 2025-09-23 07:13:54 +02:00
Jan Horak
a94bbf1860 Added fix for allocator2 build failures 2025-09-22 22:20:28 +02:00
Jan Horak
e1f7e6527a Fixed release 2025-09-22 15:08:01 +02:00
Jan Horak
29e48b88ad Update to 140.2.1 2025-09-04 11:44:06 +02:00
Jan Horak
cac713e3da update to 140 2025-08-12 09:01:42 +02:00
Eike Rathke
91753d1657 Update to 128.13.0 2025-07-23 18:21:01 +02:00
Adam Williamson
5a48dd5544 Try turning aarch64 back on again, we have LLVM 20.1.8 now 2025-07-23 09:04:30 -07:00
Eike Rathke
a11ae8fff7 Update to 128.12.0 2025-07-07 12:15:02 +02:00
Eike Rathke
d6cce38d9e Add rust-lang issue pointer about aarch64 failure 2025-06-19 19:25:46 +02:00
Eike Rathke
ac1df656bc Temporarily ExcludeArch aarch64 on f42, f43 due to gkrust link error 2025-06-11 20:06:53 +02:00
Eike Rathke
5faef5904a Update to 128.11.1 2025-06-11 15:30:34 +02:00
Eike Rathke
aa025803cc Update to 128.11.0 2025-05-26 20:49:04 +02:00
Eike Rathke
3d3c2c437e Update to 128.10.2 2025-05-21 18:15:57 +02:00
Eike Rathke
1fd77237f4 Update to 128.10.1 2025-05-19 20:01:43 +02:00
20 changed files with 364 additions and 525 deletions

32
.gitignore vendored
View file

@ -496,3 +496,35 @@ 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

12
build-botan-target.patch Normal file
View file

@ -0,0 +1,12 @@
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

8
build-libcubeb.patch Normal file

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

11
build-seccomp.patch Normal file
View file

@ -0,0 +1,11 @@
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

@ -1,44 +0,0 @@
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

@ -1,276 +0,0 @@
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

@ -1,49 +0,0 @@
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

@ -1,40 +0,0 @@
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

@ -1,24 +0,0 @@
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.26.0"
cbindgen = "0.29.1"
[[bin]]
name = "dummy"

View file

@ -1,6 +1,6 @@
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
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
@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS
if (NS_FAILED(rv)) return rv;
@ -23,10 +23,10 @@ diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092
} else {
nsAutoCString location("resource://gre/defaults/autoconfig/");
location += aFileName;
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
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
//
// 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-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2
nsresult rv = NS_ERROR_FAILURE;
UniquePtr<nsZipFind> find;
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 @@
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 @@
#endif
#ifdef XP_UNIX
# include <ctype.h>
@ -47,7 +47,7 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
#endif
#ifdef XP_IOS
# include "UIKitDirProvider.h"
@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP
@@ -462,6 +463,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-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
+ appInfo->GetName(appName);
+ ToLowerCase(appName);
+ sysConfigDir.Append(appName);
+ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file));
+ NS_NewNativeLocalFile(sysConfigDir, 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
@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a
@@ -518,6 +530,16 @@ nsXREDirProvider::GetFiles(const char* a
}
#endif
@ -82,9 +82,9 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
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-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
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
@@ -58,6 +58,7 @@
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
#define NS_APP_PREFS_OVERRIDE_DIR \

View file

@ -0,0 +1,59 @@
<?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;
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;
StartupNotify=true
Categories=Network;Email;
Name[cs]=Poštovní klient Thunderbird

View file

@ -1,3 +1,3 @@
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
SHA512 (cbindgen-vendor.tar.xz) = 4127d3060577284eea29d697ccc2394742674f6094b7f497a95a0c3b8aa9e0494b720de8858ad31d4a6b0cd1b9586454f3c52c8088163c2709883d882e0136db
SHA512 (thunderbird-147.0.source.tar.xz) = d04a135f23572123d5cca41c2611704aa06cb81e0226c89c267dc527f59fb0d9d5d8b8a49cd126626c2fd934624c9d2420ae71dd10a912b3011f3342fbaf7511
SHA512 (thunderbird-langpacks-147.0-20260114.tar.xz) = e97f2894c0bbea00c35e5d8f0046d1d7112efb17d3af5d8a6f964c54352f9f6edbcbd4d41cc2595cb63e1116ae78680c9d42e65dc0eb0ff17e4a9d4ad97ec7ab

View file

@ -1,30 +0,0 @@
[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,6 +59,9 @@ 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,6 +2,10 @@
# 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
@ -62,7 +66,7 @@ ExcludeArch: armv7hl
%define mozappdir %{_libdir}/thunderbird
%define official_branding 1
%define pre_version esr
#define pre_version
%define enable_mozilla_crashreporter 0
@ -87,13 +91,13 @@ ExcludeArch: armv7hl
Summary: Mozilla Thunderbird mail/newsgroup client
Name: thunderbird
Version: 128.10.0
Version: 147.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}-20250428.tar.xz
Source1: thunderbird-langpacks-%{version}%{?pre_version}-20260114.tar.xz
%endif
Source3: get-calendar-langpacks.sh
Source4: cbindgen-vendor.tar.xz
@ -101,13 +105,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
@ -119,6 +123,8 @@ 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
@ -126,10 +132,13 @@ 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
@ -138,11 +147,12 @@ Patch82: build-s390x-protobuf-musttail.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:
@ -167,6 +177,7 @@ 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
@ -182,16 +193,9 @@ BuildRequires: libXt-devel
BuildRequires: libXrender-devel
BuildRequires: hunspell-devel
BuildRequires: llvm
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
BuildRequires: clang17
BuildRequires: clang17-libs
BuildRequires: llvm17-devel
%global llvm_suffix -17
%else
BuildRequires: llvm-devel
BuildRequires: clang
BuildRequires: clang-libs
BuildRequires: llvm-devel
%endif
%if "%toolchain" == "clang"
BuildRequires: lld
%endif
@ -208,7 +212,6 @@ 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
@ -301,31 +304,33 @@ 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
#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
%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 -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 -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
@ -417,8 +422,6 @@ 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
@ -427,6 +430,10 @@ 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
@ -473,12 +480,13 @@ 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//')
%if 0%{?fedora} < 30
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
%else
#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
# 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
@ -600,6 +608,13 @@ 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}
@ -680,8 +695,13 @@ 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
%{__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"
%{__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
#===============================================================================
@ -704,11 +724,7 @@ 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}
@ -761,6 +777,65 @@ 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