[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