2d7c746ed8
This patch fixes the build issue reported by autobuilder [0].
/home/naourr/work/instance-2/output/build/qt5webkit-5.9.1/Source/WebCore//.obj/platform/leveldb/LevelDBDatabase.o: In function
`WebCore::LevelDBDatabase::openInMemory(WebCore::LevelDBComparator const*)':
LevelDBDatabase.cpp.text._ZN7WebCore15LevelDBDatabase12openInMemoryEPKNS_17LevelDBComparatorE+0x34): undefined reference to `leveldb::NewMemEnv(leveldb::Env*)'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile.api:97: ../lib/libQt5WebKit.so.5.9.1]
Error 1
The issue happens when both packages leveldb and qt5webkit are enabled.
QtWebKit builds its own copy of leveldb [1] (as a third-party) if the
system does not provided it (i.e. buildroot). It builds it differently
and this is the origin of that issue. Instead of using the Makefile
provided by leveldb [2], QtWebKit uses qmake to build that library [3].
The missing symbol issue happens because the symbol leveldb::NewMemEnv
is bundled in the static library libmemenv.a (aside libleveldb.so).
This static library consists of this single symbol which is like an
extra that is built but *NOT* shipped by default at installation in the
staging directory. Unfortunatly, that symbol is required later by
WebCore [4].
The copy built by QtWebKit is an all-in-one library including both
libleveldb and libmemenv; thus QtWebKit links against libleveldb only.
Also, the linker finds the buildroot's copy first (not the third-party):
that explains why it is complaining about a missing symbol. That copy
does not have the symbol leveldb::NewMemEnv.
Fortunatly, QtWebKit provides a facility to link against the system
leveldb package. The qmake flag WEBKIT_CONFIG+=use_system_leveldb tells
Qt5WebKit to link against libleveldb *AND* libmemenv [5].
To fix that issue, this commit selects the package leveldb that now
installs the libmemenv static library and its header. It ensures that
QtWebKit has everything it needs to be built. It also sets the
appropriate qmake configure flags to tell QtWebKit to use the leveldb
copy built by buildroot instead of the bundled one.
[0]: http://autobuild.buildroot.net/results/46033e82adf592c3b92c6d50cfaf45bd58beeaa4
[1]: https://github.com/qt/qtwebkit/tree/5.9/Source/ThirdParty/leveldb
[2]: https://github.com/qt/qtwebkit/blob/5.9/Source/ThirdParty/leveldb/Makefile#L167-L169
[3]: https://github.com/qt/qtwebkit/blob/5.9/Source/ThirdParty/leveldb/Target.pri#L80
[4]: https://github.com/qt/qtwebkit/blob/5.9/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp#L185
[5]: https://github.com/qt/qtwebkit/blob/5.9/Source/WebCore/WebCore.pri#L254
[6]: 739c25100e
Signed-off-by: Gaël PORTAY <gael.portay@collabora.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
config BR2_PACKAGE_QT5WEBKIT
|
|
bool "qt5webkit"
|
|
depends on !BR2_STATIC_LIBS
|
|
depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
|
|
depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu
|
|
depends on BR2_INSTALL_LIBSTDCPP # leveldb
|
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS # leveldb
|
|
depends on !BR2_BINFMT_FLAT # icu
|
|
# assumes a FPU is available on MIPS
|
|
depends on !BR2_MIPS_SOFT_FLOAT
|
|
select BR2_PACKAGE_LEVELDB
|
|
select BR2_PACKAGE_QT5BASE
|
|
select BR2_PACKAGE_QT5BASE_ICU
|
|
select BR2_PACKAGE_QT5BASE_GUI
|
|
select BR2_PACKAGE_SQLITE
|
|
select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB
|
|
select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB
|
|
help
|
|
Qt is a cross-platform application and UI framework for
|
|
developers using C++.
|
|
|
|
The Qt WebKit module provides the WebView API, which
|
|
allows QML applications to render regions of dynamic
|
|
web content.
|
|
|
|
This package has been removed from the official release
|
|
packages since Qt5.6.0, but it is still available for users
|
|
to build it from source. This is useful for platforms
|
|
without GPU since the successor (QtWebEngine) requires
|
|
OpenGL support.
|
|
|
|
http://doc.qt.io/archives/qt-5.5/qtwebkit-index.html
|
|
|
|
comment "qt5webkit needs a toolchain w/ dynamic library, gcc >= 4.8, host gcc >= 4.8"
|
|
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \
|
|
!BR2_HOST_GCC_AT_LEAST_4_8
|
|
depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
|
|
depends on !BR2_BINFMT_FLAT
|
|
depends on !BR2_MIPS_SOFT_FLOAT
|