[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#51591: webkitgtk fails to build on i686-linux; possibly a clang issu
From: |
Mark H Weaver |
Subject: |
bug#51591: webkitgtk fails to build on i686-linux; possibly a clang issue |
Date: |
Fri, 05 Nov 2021 15:42:55 -0400 |
Hi Liliana,
Liliana Marie Prikler <liliana.prikler@ist.tugraz.at> writes:
> Am Donnerstag, den 04.11.2021, 19:15 -0400 schrieb Mark H Weaver:
[...]
>> A more conservative approach would be to apply a patch to
>> trunk/Source/WTF/wtf/CheckedArithmetic.h analogous to the one in the
>> second link I cited above, namely this one:
>>
>> https://trac.webkit.org/changeset/272140/webkit
>>
>> However, it would need to be changed slightly. The patch above
>> arranges to avoid using __builtin_mul_overflow on 32-bit ARM
>> systems. We would need to do the same for 32-bit x86 as well. So,
>> where the patch above has this:
>>
>> --8<---------------cut here---------------start------------->8---
>> /* On Linux with clang, libgcc is usually used instead of compiler-
>> rt, and it does
>> * not provide the __mulodi4 symbol used by clang for
>> __builtin_mul_overflow
>> */
>> #if COMPILER(GCC) || (COMPILER(CLANG) && !(CPU(ARM) &&
>> OS(LINUX)))
>> #define USE_MUL_OVERFLOW 1
>> #endif
>> --8<---------------cut here---------------end--------------->8---
>>
>> We would need to change "CPU(ARM)" to "(CPU(ARM) || CPU(XXX))", where
>> XXX is the appropriate symbol for 32-bit x86. Or maybe there's
>> another solution.
>>
>> I won't be able to look at this in the next couple of days, so
>> hopefully someone else can pick this up.
> The #else case doesn't look so bad on this, so we could for the time
> being just do #if COMPILER(GCC) or even #if 0.
I just noticed that the aforementioned patch is already applied to
upstream WebKitGTK-2.34.1, so all we would need to do is change "1" to
"0" in the following line on i686-linux systems:
#define USE_MUL_OVERFLOW 1
I pushed the following (untested) commit to 'gnuzilla-updates' that does
exactly this, and does so in such a way that rebuilds will not be needed
on other systems. Hopefully I didn't make a mistake.
Regards,
Mark
>From 7aaedf5d77bb0e088601f15bbbed8f7835bde774 Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw@netris.org>
Date: Fri, 5 Nov 2021 15:31:07 -0400
Subject: [PATCH] UNTESTED: gnu: webkitgtk: Fix build on i686-linux.
Fixes <https://bugs.gnu.org/51591>.
* gnu/packages/webkit.scm (webkitgtk)[arguments]: Use quasiquote for the
argument list. When building on i686-linux, insert a 'substitute*' form in
the 'prepare-build-environment' phase that disables of the use of
'__builtin_mul_overflow'.
---
gnu/packages/webkit.scm | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index e54b680855..a184cc9b32 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -241,7 +241,7 @@ acceleration in mind, leveraging common 3D graphics APIs
for best performance.")
(build-system cmake-build-system)
(outputs '("out" "doc"))
(arguments
- '(#:tests? #f ; no tests
+ `(#:tests? #f ; no tests
#:build-type "Release" ; turn off debugging symbols to save space
#:configure-flags (list
"-DPORT=GTK"
@@ -299,6 +299,13 @@ acceleration in mind, leveraging common 3D graphics APIs
for best performance.")
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CC" "clang")
(setenv "CXX" "clang++")
+ ;; XXX Until we switch back to using GCC,
+ ;; work around <https://bugs.gnu.org/51591>.
+ ,@(if (string=? "i686-linux" (%current-system))
+ '((substitute* "Source/WTF/wtf/CheckedArithmetic.h"
+ (("#define USE_MUL_OVERFLOW 1")
+ "#define USE_MUL_OVERFLOW 0")))
+ '())
#t))
(add-after 'install 'move-doc-files
(lambda* (#:key outputs #:allow-other-keys)
--
2.31.1
--
Disinformation flourishes because many people care deeply about injustice
but very few check the facts. Ask me about <https://stallmansupport.org>.
bug#51591: webkitgtk fails to build on i686-linux; possibly a clang issue, Maxim Cournoyer, 2021/11/04