summaryrefslogtreecommitdiff
path: root/libre/iceweasel
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2023-04-15 20:55:36 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2023-04-18 04:46:19 -0400
commit81b0cbef5a83bab657c55500b7cde37608d7e5aa (patch)
tree38c4d76cdb51cd98689e979ff01e967acc6ae2ac /libre/iceweasel
parente51a98c81ec09d944c5766ed395ffe3abdb3abf6 (diff)
[iceweasel]: tweak for i686
Diffstat (limited to 'libre/iceweasel')
-rw-r--r--libre/iceweasel/PKGBUILD47
-rw-r--r--libre/iceweasel/firefox-107.0-fdlibm.patch16
-rw-r--r--libre/iceweasel/firefox-111.0.1-fdlibm.patch21
-rw-r--r--libre/iceweasel/fix-i686-xsimd-incomplete.patch29
4 files changed, 72 insertions, 41 deletions
diff --git a/libre/iceweasel/PKGBUILD b/libre/iceweasel/PKGBUILD
index 0f745387f..d7ec7b9d0 100644
--- a/libre/iceweasel/PKGBUILD
+++ b/libre/iceweasel/PKGBUILD
@@ -168,8 +168,9 @@ source_armv7h=(build-arm-libopus.patch)
source_i686=(
avoid-libxul-OOM-python-check.patch
rust-static-disable-network-test-on-static-libraries.patch
- firefox-107.0-fdlibm.patch
+ firefox-111.0.1-fdlibm.patch
fix-i686-build-moz-1792159.patch
+ fix-i686-xsimd-incomplete.patch
)
validpgpkeys=(
'14F26682D0916CDD81E37B6D61B7B526D98F0353' # Mozilla Software Releases <release@mozilla.com>
@@ -192,8 +193,9 @@ sha256sums+=('a44dc1e9f2d508203d1cacc2b5bb212c73eb04311da9a036560ff389d7b8e9e6'
sha256sums_armv7h=('2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')
sha256sums_i686=('2f0c81a38c4578f68f5456b618fe84a78974072821488173eb55e0e72287e353'
'10c5276eab2e87f400a6ec15d7ffbef3b0407ee888dea36f1128927ca55b9041'
- '1c2015e9f59c2c3bc898e04c6c6d33523f835638fd314d24944a8063cbce79d8'
- '2fb39374fd3d80eea9e346032a2a4b2bc2e357dee7380855b24bcf19b1335d06')
+ 'ed3bb281697af7c4353a34067ffb4b18a971d40757bef2d6af3c8bf2d28d42d1'
+ '2fb39374fd3d80eea9e346032a2a4b2bc2e357dee7380855b24bcf19b1335d06'
+ 'c3ce181fbb0142055aa6dd17f3cda2ba6a1e54d7a689a8c6e9cce76aa40e6544')
b2sums=('6233ee202d000ddd5b0a2eafff09226abf2cf097ea3e1184442ad34e92f6fd408f1891a2063e459d419ba074218596f48c95c860246d4c46d2a4fca3df27a78a'
'SKIP'
'f86353bbba05d8994db34c6abb66094aa61d2c37c8599930dbe9d215413f0f718a1ce55a8f2d07a65074c3947e28fc80d44c925bd9be239a870f82d2a1803635')
@@ -208,8 +210,9 @@ b2sums+=('8472a10e5e27cc82f1467dd6592dfee512cd165e39f23ebbb4c8e76bbf6fd8614a4c1f
b2sums_armv7h=('6e5980e56343a23bce4fcda58f6abc8f2debca0c278c87b09e53abb17ff15849c26e8df3bbff2388985f8fe5a4e9be9982c602ef7159546f0ae335fca1000a41')
b2sums_i686=('97035e44cd1deae7bb2422c81eec7294feb51f43f460b4d7ddba083e1d8a48d265a36ca43cf1d9dee49b01ee6df0c76e0f6916cc73cb7ad9caa1c235a59da0e4'
'009789d3bb93ba418929019135804fc3de7de161e5be8efba7fc75646fbde395720be5b7a7d3f5d1671f459fdd2944dd14aca306bbf1c975436d4f7765d62d15'
- 'e4851eaa9030d9b8811f505f8f1569a41f8dc7cf586269108ebe370ac91896f69d36fc6d2e1937f427656fe4fca63031ca5e11d39a3667205a4b0a6f935cd548'
- 'd20ce3eff595f85df86eaa0dfb665fc356f8987117a771f76adc4ac12046a7e82b0af182fa99f87ea1362a5026c9d0216c7b714649fef0c7294c61c8e8f4d790')
+ '05c7c9727201971650df4ca2e00539767fc9e159539835c641fccab5ec9577a7294e8f62f5d0670158316e5467ea121c03a36fd4ba153e1d60f3402f0430548d'
+ 'd20ce3eff595f85df86eaa0dfb665fc356f8987117a771f76adc4ac12046a7e82b0af182fa99f87ea1362a5026c9d0216c7b714649fef0c7294c61c8e8f4d790'
+ '3e6fd4cebe0fd4c250ccf5b04e12b93e5f4cc2d139301316c987cc07a57b4b6b49b830d745520a82f5ac59da8d17f728a3ecce4dccf21804a2d6a256a6f76472')
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # anti-feature
@@ -235,7 +238,7 @@ readonly _SHOULD_SKIP_PGO=$(case "${CARCH}" in armv7h|i686) echo 1 ;; *) echo 0
# normally not needed ('0') for x86_64
# for 32-bit arches, try one or the other, to resolve compiler/linker issues
readonly _SHOULD_USE_GCC==$(case "${CARCH}" in armv7h) echo 1 ;;
- i686 ) echo 1 ;;
+ i686 ) echo 0 ;;
x86_64) echo 0 ;; esac)
@@ -250,17 +253,6 @@ armv7h)
depends+=( icu=72.1 ) # --with-system-icu
;;
-i686)
- # currently fails to build for i686
- # -> ERROR: Rust compiler 1.63.0 is too old. To compile Rust language sources please install at least version 1.65.0 of the 'rustc' too
-
- makedepends+=( llvm14 ) # rustup: error while loading shared libraries: libLLVM-14.so:
-
- makedepends=( ${makedepends[*]/wasi-*/} ) # wasm-ld: error: cannot open /usr/lib/clang/15.0.7/lib/wasi/libclang_rt.builtins-wasm32.a: No such file or directory
- makedepends+=( 'wasi-libc++>=15' 'wasi-libc++<16' ) # in [community-testing]
- makedepends+=( 'wasi-libc++abi>=15' 'wasi-libc++abi<16' ) # in [community-testing]
- makedepends+=( 'wasi-compiler-rt>=15' 'wasi-compiler-rt<16' ) # in [community-testing]
- ;;
esac
@@ -372,12 +364,20 @@ prepare() {
# /build/iceweasel/src/firefox-96.0.1/modules/fdlibm/src/math_private.h:34:21:
# error: conflicting declaration ‘typedef __double_t double_t’
# /usr/include/math.h:156:21: note: previous declaration as ‘typedef long double double_t’
- echo "applying firefox-107.0-fdlibm.patch"
- patch -p1 -i "$srcdir/firefox-107.0-fdlibm.patch"
+ echo "applying firefox-111.0.1-fdlibm.patch"
+ patch -p1 -i "$srcdir/firefox-111.0.1-fdlibm.patch"
# js/src/jit/shared/AtomicOperations-shared-jit.cpp:88:9: error: ‘AtomicCopyByteUnsynchronized’ was not declared in this scope; did you mean ‘AtomicMemcpyUpUnsynchronized’?
echo "applying fix-i686-build-moz-1792159.patch"
patch -p1 -i "$srcdir/fix-i686-build-moz-1792159.patch"
+
+ # https://bugs.archlinux32.org/index.php?do=details&task_id=332
+ # dom/base/nsTextFragmentGeneric.h:38:16: error: ‘any’ is not a member of ‘xsimd’
+ # dom/base/nsTextFragmentGeneric.h:16:70: error: incomplete type ‘xsimd::batch<short int, xsimd::sse2>’ used in nested name specifier
+ # dom/base/nsTextFragmentGeneric.h:35:31: error: ‘xsimd::batch<short int, xsimd::sse2> vectmask’ has incomplete type
+ # dom/base/nsTextFragmentGeneric.h:37:64: error: incomplete type ‘xsimd::batch<short int, xsimd::sse2>’ used in nested name specifier
+ echo "applying fix-i686-xsimd-incomplete.patch"
+ patch -p1 -i "$srcdir/fix-i686-xsimd-incomplete.patch"
;;
x86_64)
;;
@@ -524,18 +524,15 @@ END
# disable SIMD (SSE2 for i686)
# set correct compiler and toochain tools
cat >>../mozconfig <<END
-#ac_add_options --disable-linker=lld
-#ac_add_options --enable-linker=bfd
+ac_add_options --disable-linker=lld
+ac_add_options --enable-linker=bfd
ac_add_options --disable-lto
ac_add_options --disable-rust-simd
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
+ac_add_options --disable-webrtc
END
- # FIXME GCC: /usr/lib/gcc/i686-pc-linux-gnu/12.1.0/include/xmmintrin.h:208:1: error: inlining failed in call to ‘always_inline’ ‘__m128 _mm_sqrt_ps(__m128)’: target specific option mismatch
- # FIXME LLVM: /build/iceweasel/src/firefox-106.0.1/third_party/libwebrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc:110:27: error: always_inline function '_mm_loadu_ps' requires target feature 'sse', but would be inlined into function 'ComputeFrequencyResponse_Sse2' that is compiled without support for 'sse'
- echo "ac_add_options --disable-webrtc" >> ../mozconfig
-
sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk # FIXME: is this needed?
# arch32 patching is under the 'technical patching' section
diff --git a/libre/iceweasel/firefox-107.0-fdlibm.patch b/libre/iceweasel/firefox-107.0-fdlibm.patch
deleted file mode 100644
index 279c41772..000000000
--- a/libre/iceweasel/firefox-107.0-fdlibm.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h
-index 165260f00f..1fa2937cae 100644
---- a/modules/fdlibm/src/math_private.h
-+++ b/modules/fdlibm/src/math_private.h
-@@ -30,7 +30,11 @@
- * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
- */
-
-+#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
-+typedef long double __double_t;
-+#else
- typedef double __double_t;
-+#endif
- typedef __double_t double_t;
- typedef float __float_t;
-
diff --git a/libre/iceweasel/firefox-111.0.1-fdlibm.patch b/libre/iceweasel/firefox-111.0.1-fdlibm.patch
new file mode 100644
index 000000000..f2c15a2bb
--- /dev/null
+++ b/libre/iceweasel/firefox-111.0.1-fdlibm.patch
@@ -0,0 +1,21 @@
+diff -rauN firefox-111.0.1/modules/fdlibm/src/math_private.h firefox-111.0.1-fdlibm-patch/modules/fdlibm/src/math_private.h
+--- firefox-111.0.1/modules/fdlibm/src/math_private.h 2023-03-21 14:16:09.000000000 +0100
++++ firefox-111.0.1-fdlibm-patch/modules/fdlibm/src/math_private.h 2023-04-08 16:50:07.828564320 +0200
+@@ -30,9 +30,17 @@
+ * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+ */
+
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __double_t;
++#else
+ typedef double __double_t;
++#endif
+ typedef __double_t double_t;
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __float_t;
++#else
+ typedef float __float_t;
++#endif
+
+ /*
+ * The original fdlibm code used statements like:
diff --git a/libre/iceweasel/fix-i686-xsimd-incomplete.patch b/libre/iceweasel/fix-i686-xsimd-incomplete.patch
new file mode 100644
index 000000000..c0df0054b
--- /dev/null
+++ b/libre/iceweasel/fix-i686-xsimd-incomplete.patch
@@ -0,0 +1,29 @@
+diff --git a/dom/base/nsTextFragmentGeneric.h b/dom/base/nsTextFragmentGeneric.h
+index 10e16fcfaa..87d9e0d075 100644
+--- a/dom/base/nsTextFragmentGeneric.h
++++ b/dom/base/nsTextFragmentGeneric.h
+@@ -13,7 +13,6 @@ namespace mozilla {
+
+ template <class Arch>
+ int32_t FirstNon8Bit(const char16_t* str, const char16_t* end) {
+- const uint32_t numUnicharsPerVector = xsimd::batch<int16_t, Arch>::size;
+ using p = Non8BitParameters<sizeof(size_t)>;
+ const size_t mask = p::mask();
+ const uint32_t numUnicharsPerWord = p::numUnicharsPerWord();
+@@ -28,16 +27,6 @@ int32_t FirstNon8Bit(const char16_t* str, const char16_t* end) {
+ if (str[i] > 255) return i;
+ }
+
+- // Check one batch at a time.
+- const int32_t vectWalkEnd =
+- ((len - i) / numUnicharsPerVector) * numUnicharsPerVector;
+- const uint16_t shortMask = 0xff00;
+- xsimd::batch<int16_t, Arch> vectmask(static_cast<int16_t>(shortMask));
+- for (; i < vectWalkEnd; i += numUnicharsPerVector) {
+- const auto vect = xsimd::batch<int16_t, Arch>::load_aligned(str + i);
+- if (xsimd::any((vect & vectmask) != 0)) return i;
+- }
+-
+ // Check one word at a time.
+ const int32_t wordWalkEnd =
+ ((len - i) / numUnicharsPerWord) * numUnicharsPerWord;