[Qtwebengine] webengine crash
Tom Deblauwe
deblauwetom at gmail.com
Tue Feb 3 17:19:46 CET 2015
On 02/03/2015 11:26 AM, Peter Varga wrote:
> Hi Tom,
>
> I tried to reproduce the reported problem but I couldn't. I compiled the
> 32bit Qt5 as I usually do:
Thanks a lot for your investigation time.
> made the build in an already set up 32bit chroot environment. Therefore
> I suppose that the problem is
> related to the cross-compilation. It might be possible some platform
> specific configuration are passed
> to the V8 compilation in a wrong way.
>
> Could you elaborate a bit how you cross-compiled the Qt5? First of all I
> need answers for the following
> questions:
> - Just to make things clear: your target is x86 32bit and Linux, isn't it?
Yes, correct
> - I generated a 32bit cross-toolchain with buildroot. I used the default
> configuration. Did you change
> anything compared to the default settings in buildroot? For example, do
> you use uclibc or glibc?
Hello I used gcc 4.9.2 with glibc with a buildroot version from the
master branch on 4th november 2014. (I forgot to note the actual commit)
> - Which configuration options was passed to the Qt5's configure script?
> I don't know how to set the
> cross-compile toolchain. The easiest way is seemed to me to use the
> -device-option CROSS_COMPILE=...
> option but it is useless without specifying -device option.
>
In the buildroot version, you can have QT5 5.3, but it works if you just
change the version number in package/qt5/qt5.mk to 5.4.0
Then I just started from qt5webkit.mk and made qt5webengine.mk like I
have copy-pasted below.
You don't need to worry about the cross compilation of qt5, buildroot
creates a cross compiled qmake in the output directory.
Then for webengine source itself, I needed to change some things.
1) In tools/qmake/mkspecs/features/functions.prf I needed to add
"linux-buildroot-g++: return (true)" so that the "isPlatformSupported"
function accepts buildroot.
2) Then webengine wants to build the "embedded_linux.pri" configuration.
There I changed the following because I wanted pulseaudio and x11:
use_ozone=0
use_system_icu=0 <-- the icu in buildroot is 51 and the bundled in
webengine is 46 and webengine uses those 46 headers because they are in
third_party
use_x11=1
use_glib=1
use_dbus=1
use_pulseaudio=1
desktop_linux=1 <-- because i had some sort of compile error, don't
remember which one
3) In src/core/config/embedded_linux.gypi I added this, hardcoded, not
good but it is ok for me:
'defines': [
'_LARGEFILE_SOURCE',
'_LARGEFILE64_SOURCE',
'_FILE_OFFSET_BITS=64',
],
'cflags': [
'-pipe',
'-O2',
'-g2',
],
The easiest is to do:
$ make qt5webengine-patch
<edit the things I mention>
$ make qt5webengine
I hope this somewhat helps you out.
Right now I am trying out some things, but it all takes a long time to
compile of course :)
One idea I am now trying out is that maybe I should add something like
this to the "tools/buildscripts/gyp_qtwebengine" python script:
os.environ['CXX'] =
"/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/ccache
/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/i686-buildroot-linux-gnu-g++"
os.environ['CC'] =
"/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/ccache
/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/i686-buildroot-linux-gnu-gcc"
args.extend(['-D', 'clang=0'])
args.extend(['-D', 'host_clang=0'])
But I'm still compiling it, so I'll let you know any outcome.
Thanks,
Best regards,
Tom,
################################################################################
#
# qt5webengine
#
################################################################################
QT5WEBENGINE_VERSION = $(QT5_VERSION)
QT5WEBENGINE_SITE = $(QT5_SITE)
#QT5WEBENGINE_SOURCE =
qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz
QT5WEBENGINE_SOURCE = qt5-webengine.tar.gz
QT5WEBENGINE_DEPENDENCIES = qt5base sqlite host-ruby host-gperf
host-bison host-flex xlib_libXi xlib_libXt xlib_libXtst xapp_xrandr
xlib_libXcursor xlib_libXcomposite pciutils
QT5WEBENGINE_INSTALL_STAGING = YES
ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
QT5WEBENGINE_LICENSE = LGPLv2+, MIT
else
QT5WEBENGINE_LICENSE = LGPLv2+, MIT, Commercial license
QT5WEBENGINE_REDISTRIBUTE = NO
endif
QT5WEBENGINE_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2
Source/WebCore/LICENSE-LGPL-2.1 Source/WebEngine/LICENSE
ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
QT5WEBENGINE_DEPENDENCIES += xlib_libXext xlib_libXrender
endif
ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
QT5WEBENGINE_DEPENDENCIES += qt5declarative
endif
define QT5WEBENGINE_CONFIGURE_CMDS
(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
endef
define QT5WEBENGINE_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
endef
define QT5WEBENGINE_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
$(QT5_LA_PRL_FILES_FIXUP)
endef
ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
define QT5WEBENGINE_INSTALL_TARGET_QMLS
cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
endef
endif
define QT5WEBENGINE_INSTALL_TARGET_CMDS
cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess
$(TARGET_DIR)/usr/libexec
mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales
cp -dpf
$(STAGING_DIR)/usr/translations/qtwebengine_locales/en-US.pak
$(TARGET_DIR)/usr/translations/qtwebengine_locales
cp -dpf $(STAGING_DIR)/usr/qtwebengine_resources.pak $(TARGET_DIR)/usr
$(QT5WEBENGINE_INSTALL_TARGET_QMLS)
endef
$(eval $(generic-package))
More information about the QtWebEngine
mailing list