qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
It uses __sync_add_and_fetch_4() and other 32-bit atomics, fixes:
http://autobuild.buildroot.net/results/7ac/7acdbc54e26ad2ba4756512614192be0a086f563/
--- package/opencv/Config.in | 1 + package/pinentry/Config.in | 1 + package/python-pyqt/Config.in | 2 ++ package/python-sip/Config.in | 2 ++ package/qt/Config.in | 2 ++ 5 files changed, 8 insertions(+)
package/opencv/Config.in +1 -0
@@ -210,6 +210,7 @@ config BR2_PACKAGE_OPENCV_WITH_QT depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_MMU # qt depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # qt select BR2_PACKAGE_QT select BR2_PACKAGE_QT_STL select BR2_PACKAGE_QT_GUI_MODULE
package/pinentry/Config.in +1 -0
@@ -40,6 +40,7 @@ config BR2_PACKAGE_PINENTRY_QT4 depends on BR2_USE_MMU # fork depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # qt select BR2_PACKAGE_QT select BR2_PACKAGE_QT_GUI_MODULE help
package/python-pyqt/Config.in +2 -0
@@ -1,5 +1,6 @@ comment "python-pyqt needs a toolchain w/ C++, threads" depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS config BR2_PACKAGE_PYTHON_PYQT
@@ -7,6 +8,7 @@ config BR2_PACKAGE_PYTHON_PYQT depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS # qt depends on BR2_USE_MMU # qt + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # qt select BR2_PACKAGE_QT select BR2_PACKAGE_PYTHON_SIP help
package/python-sip/Config.in +2 -0
@@ -1,5 +1,6 @@ comment "python-sip needs a toolchain w/ C++, threads" depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS config BR2_PACKAGE_PYTHON_SIP
@@ -7,6 +8,7 @@ config BR2_PACKAGE_PYTHON_SIP depends on BR2_INSTALL_LIBSTDCPP # qt depends on BR2_TOOLCHAIN_HAS_THREADS # qt depends on BR2_USE_MMU # qt + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # qt select BR2_PACKAGE_QT help SIP is a tool that makes it very easy to create Python
package/qt/Config.in +2 -0
@@ -1,5 +1,6 @@ comment "qt needs a toolchain w/ C++, threads" depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS menuconfig BR2_PACKAGE_QT
@@ -7,6 +8,7 @@ menuconfig BR2_PACKAGE_QT depends on BR2_USE_MMU # fork depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 help Qt is a cross-platform application and UI framework for developers using C++.
Signature · 1 line
2.4.10
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
Gustavo,
package/qt/Config.in menuconfig BR2_PACKAGE_QT · line 11
Quoted 6 lines · Gustavo Zacarias
menuconfig
BR2_PACKAGE_QTpackage/qt/Config.in +1
-0@@ -7,6 +8,7 @@ menuconfig BR2_PACKAGE_QT depends on BR2_USE_MMU # fork depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4
Isn't this broader than it needs to be? Only the Javascript code seems to use this atomic operation, so maybe we could just make BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT depends on BR2_TOOLCHAIN_HAS_SYNC_4. Or maybe it's BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT.
By doing this, it also simplifies the patch quite a bit, since you don't need to propagate the dependency to too many packages (if any).
I've indeed tested, and the following defconfig builds fine:
BR2_sparc=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-glibc-2015.11-rc1-71-g90d1299.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_QT=y
BR2_PACKAGE_QT_LICENSE_APPROVED=y
# BR2_PACKAGE_QT_GUI_MODULE is not set
# BR2_PACKAGE_QT_XML is not set
# BR2_PACKAGE_QT_NETWORK is not set
# BR2_PACKAGE_QT_SCRIPT is not set
# BR2_TARGET_ROOTFS_TAR is not set
Which proves that Qt by itself doesn't use those atomic operations. Could you research which specific sub-option(s) are causing problems? I'm pretty sure it's either script or webkit, or possibly both.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
Quoted 30 lines · Thomas Petazzoni
Isn't this broader than it needs to be? Only the Javascript code seems to use this atomic operation, so maybe we could just make
BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPTdepends onBR2_TOOLCHAIN_HAS_SYNC_4. Or maybe it'sBR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT.By doing this, it also simplifies the patch quite a bit, since you don't need to propagate the dependency to too many packages (if any).
I've indeed tested, and the following defconfig builds fine:
BR2_sparc=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-glibc-2015.11-rc1-71-g90d1299.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
#BR2_PACKAGE_BUSYBOXis not set
BR2_PACKAGE_QT=y
BR2_PACKAGE_QT_LICENSE_APPROVED=y
#BR2_PACKAGE_QT_GUI_MODULEis not set
#BR2_PACKAGE_QT_XMLis not set
#BR2_PACKAGE_QT_NETWORKis not set
#BR2_PACKAGE_QT_SCRIPTis not set
#BR2_TARGET_ROOTFS_TARis not set
Quoted 3 lines
Which proves that Qt by itself doesn't use those atomic operations. Could you research which specific sub-option(s) are causing problems? I'm pretty sure it's either script or webkit, or possibly both.
It's possible, however how likely is it an arch that doesn't support atomics (normally meaning very old) running a QT gui?
SPARC v8 is normally used these days for rad-hard/aerospace/avionics solutions (gaisler), it's doubtful anyone with an old sparcstation (pre 1995) with known broken kernel support will care.
Regards.
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
Hello,
Quoted 2 lines · Gustavo Zacarias
It's possible, however how likely is it an arch that doesn't support atomics (normally meaning very old) running a QT gui?
The specific config I tested had the GUI support disabled, i.e just QtCore, not QtGui.
Though I agree with you that generally speaking, usage on SPARC is unlikely. But by narrowing the dependency to just script and/or webkit, we have to propagate it to a lot less packages, which actually means that supporting this weird SPARC architecture creates less noise, which is what we want.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
Quoted 10 lines · Thomas Petazzoni
Hello,
Quoted 2 lines · Gustavo Zacarias
It's possible, however how likely is it an arch that doesn't support atomics (normally meaning very old) running a QT gui?
The specific config I tested had the GUI support disabled, i.e just QtCore, not QtGui.
Quoted 7 lines
Though I agree with you that generally speaking, usage on SPARC is unlikely. But by narrowing the dependency to just script and/or webkit, we have to propagate it to a lot less packages, which actually means that supporting this weird SPARC architecture creates less noise, which is what we want.
Thomas
It seems it's both script & webkit that need atomics. However i think the arch supports list is flawed as well, webkit hasn't worked for many of those architectures in the past - they build, yes, but they'll probably crash on startup.
But i'm not about to test all of them since that would require hardware, so i'm removing sparc as well since it's a cliche that can't be fixed. Regards.
PATCH 1/1 qt: depends on BR2_TOOLCHAIN_HAS_SYNC_4
Hello,
Quoted 6 lines · Gustavo Zacarias
It seems it's both script & webkit that need atomics. However i think the arch supports list is flawed as well, webkit hasn't worked for many of those architectures in the past - they build, yes, but they'll probably crash on startup.
But i'm not about to test all of them since that would require hardware, so i'm removing sparc as well since it's a cliche that can't be fixed.
Fully agreed to remove SPARC from the list of supported architectures for webkit and script. However, I believe it would still be good to add the BR2_TOOLCHAIN_HAS_SYNC_4 dependency as well.
Regarding the architectures that build but don't work at runtime, I guess all we can do is leave things are they are, and change them when/if someone complains/reports an issue. We are indeed not going to test Webkit/Script on every possible funky architecture.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com