[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#881055: qtwebkit-opensource-src: FTBFS on x32: seems to use amd64-specific MacroAssembler code



On Fri, 10 Nov 2017, Dmitry Shachnev wrote:

> On Thu, Nov 09, 2017 at 04:06:47PM +0100, Thorsten Glaser wrote:
> > > Thanks! I have already applied a similar fix in Git.
> >
> > OK, good. https://anonscm.debian.org/cgit/pkg-kde/qt/qt5webkit.git
> > does not show it, though. Could you please point me to it for review?
> 
> Sorry, forgot to push. Pushed now.

OK.

The change is semantically different because it also disables the JIT
on kfreebsd-{i386,amd64} and hurd-i386, on which it previously was
enabled, AFAICT. The hurd-i386 build failed, but on kfreebsd-* it
seems to have worked, so please use this line from my patch:

+ifeq (,$(filter $(DEB_HOST_ARCH),amd64 arm64 kfreebsd-amd64 armhf i386 kfreebsd-i386 hurd-i386 mips mipsel))


> > That helps, but *still* doesn’t suffice:

> Can you please try removing -DUSE_LD_GOLD=OFF from debian/rules?

That’s it! The build succeeded, debdiff and full build log attached.
I’ll now build the source and arch:all part (in an amd64 cowbuilder,
for simplicity) and upload to debian-ports “unreleased”, to get the
current Qt transition on the way (my main desktop at work runs x32,
so I’m currently in “cannot dist-upgrade” hell), and your next upload
with these changes will supercede it eventually.


> I do not have a hardware capable of building webkit

Yeah, it does take quite a bit of computation power ;)

>, and there does not seem
> to be a porterbox with x32 support.

DSA doesn’t like x32 because nobody’s doing kernel fuzzing for it
yet, so it’s only enabled using a kernel option (from GRUB).

I have access to some hardware (old servers my employer doesn’t
need any longer because, while powerful-ish amd64, it lacks
hardware virtualisation support), but no way to host it. I
could try to ask them to host it and isolate it from the LAN,
but I’ve got no idea of how to set up a proper Debian porterbox.

bye,
//mirabilos
-- 
tarent solutions GmbH
Rochusstraße 2-4, D-53123 Bonn • http://www.tarent.de/
Tel: +49 228 54881-393 • Fax: +49 228 54881-235
HRB 5168 (AG Bonn) • USt-ID (VAT): DE122264941
Geschäftsführer: Dr. Stefan Barth, Kai Ebenrett, Boris Esser, Alexander Steeg
diff -Nru qtwebkit-opensource-src-5.212.0~alpha2/debian/changelog qtwebkit-opensource-src-5.212.0~alpha2/debian/changelog
--- qtwebkit-opensource-src-5.212.0~alpha2/debian/changelog	2017-10-30 18:08:25.000000000 +0100
+++ qtwebkit-opensource-src-5.212.0~alpha2/debian/changelog	2017-11-10 15:19:21.000000000 +0100
@@ -1,3 +1,27 @@
+qtwebkit-opensource-src (5.212.0~alpha2-5~x32.3) unreleased; urgency=high
+
+  [ Dmitry Shachnev ]
+  * Switch from bfd linker back to gold for x32 only
+    (closes: #881055).
+
+ -- Thorsten Glaser <tg@mirbsd.de>  Fri, 10 Nov 2017 15:19:21 +0100
+
+qtwebkit-opensource-src (5.212.0~alpha2-5~x32.2) unreleased; urgency=high
+
+  [ Dmitry Shachnev ]
+  * Apply upstream commit 0858ee607f376ae8 (x32 bugfix).
+
+ -- Thorsten Glaser <tg@mirbsd.de>  Thu, 09 Nov 2017 13:56:30 +0100
+
+qtwebkit-opensource-src (5.212.0~alpha2-5~x32.1) unreleased; urgency=high
+
+  * Non-maintainer upload.
+  * debian/rules: Fix misuse of DEB_HOST_ARCH_CPU when DEB_HOST_ARCH
+    was intended to fix FTBFS on Debian architectures that share CPU
+    architecture but not ABI with a JIT-supported one, e.g. x32.
+
+ -- Thorsten Glaser <tg@mirbsd.de>  Wed, 08 Nov 2017 16:05:39 +0100
+
 qtwebkit-opensource-src (5.212.0~alpha2-5) unstable; urgency=medium
 
   * Add a patch from Fedora to fix nullptr dereference in selectedHtml()
diff -Nru qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/0858ee607f376ae8.diff qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/0858ee607f376ae8.diff
--- qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/0858ee607f376ae8.diff	1970-01-01 01:00:00.000000000 +0100
+++ qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/0858ee607f376ae8.diff	2017-11-09 13:56:26.000000000 +0100
@@ -0,0 +1,11 @@
+--- a/Source/WTF/wtf/Platform.h
++++ b/Source/WTF/wtf/Platform.h
+@@ -705,7 +705,7 @@
+ #endif
+ 
+ #if !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64)
+-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS))) \
++#if (CPU(X86_64) && !defined(__ILP32__) && (OS(UNIX) || OS(WINDOWS))) \
+     || (CPU(IA64) && !CPU(IA64_32)) \
+     || CPU(ALPHA) \
+     || CPU(ARM64) \
diff -Nru qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/series qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/series
--- qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/series	2017-10-30 18:08:25.000000000 +0100
+++ qtwebkit-opensource-src-5.212.0~alpha2/debian/patches/series	2017-11-09 13:56:07.000000000 +0100
@@ -3,3 +3,4 @@
 atomic_config_test.diff
 fix_copyChars_segfault.diff
 fix_selectedHtml_segfault.diff
+0858ee607f376ae8.diff
diff -Nru qtwebkit-opensource-src-5.212.0~alpha2/debian/rules qtwebkit-opensource-src-5.212.0~alpha2/debian/rules
--- qtwebkit-opensource-src-5.212.0~alpha2/debian/rules	2017-10-30 18:08:25.000000000 +0100
+++ qtwebkit-opensource-src-5.212.0~alpha2/debian/rules	2017-11-10 15:16:42.000000000 +0100
@@ -3,7 +3,7 @@
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
-DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
 DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 
@@ -12,31 +12,36 @@
 # The debug packages produced by webkit are huge and cause problems in
 # most buildds, so use -g1 in all architectures except the ones that
 # are known to work fine
-ifeq (,$(filter $(DEB_HOST_ARCH_CPU),ppc64 ppc64el s390x))
+ifeq (,$(filter $(DEB_HOST_ARCH),ppc64 ppc64el s390x))
 	export DEB_CXXFLAGS_MAINT_STRIP = -g
 	export DEB_CXXFLAGS_MAINT_APPEND = -g1
 endif
 
 # See https://github.com/annulen/webkit/issues/626
-ifneq (,$(filter $(DEB_HOST_ARCH_CPU),mips mipsel))
+ifneq (,$(filter $(DEB_HOST_ARCH),mips mipsel))
 	export DEB_CXXFLAGS_MAINT_APPEND = -mfp32
 endif
 
 # JIT is only supported on x86 / armhf / aarch64 / mips32
-ifeq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 arm64 armhf i386 mips mipsel))
+ifeq (,$(filter $(DEB_HOST_ARCH),amd64 arm64 kfreebsd-amd64 armhf i386 kfreebsd-i386 hurd-i386 mips mipsel))
 	EXTRA_CMAKE_ARGUMENTS += -DENABLE_JIT=OFF
 endif
 
 # Copied from Fedora; see also https://github.com/annulen/webkit/issues/480
-ifneq (,$(filter $(DEB_HOST_ARCH_CPU),ppc64el s390x))
+ifneq (,$(filter $(DEB_HOST_ARCH),ppc64el s390x))
 	EXTRA_CMAKE_ARGUMENTS += -DUSE_SYSTEM_MALLOC=ON
 endif
 
+# Use gold on some architectures to fix FTBFS
+ifeq (,$(filter $(DEB_HOST_ARCH),x32))
+	EXTRA_CMAKE_ARGUMENTS += -DUSE_LD_GOLD=OFF
+endif
+
 %:
 	dh $@ --buildsystem=cmake --with pkgkde_symbolshelper
 
 override_dh_auto_configure:
-	dh_auto_configure -- -G Ninja -DPORT=Qt -DUSE_LD_GOLD=OFF $(EXTRA_CMAKE_ARGUMENTS)
+	dh_auto_configure -- -G Ninja -DPORT=Qt $(EXTRA_CMAKE_ARGUMENTS)
 
 override_dh_auto_build-arch:
 	dh_auto_build --builddirectory=obj-$(DEB_HOST_GNU_TYPE) -O--buildsystem=ninja

Attachment: qtwebkit-opensource-src_5.212.0~alpha2-5~x32.3_x32.build.xz
Description: application/xz


Reply to: