frameworks and plasma partially link to wrong libs? ehh..

Mark markg85 at gmail.com
Fri Aug 2 18:47:15 UTC 2013


Hi,

I followed the exact instructions from here:
http://community.kde.org/Frameworks/Building

my .bashrc looks like:
export KF5=/home/kde-devel/kf5
export QTDIR=/home/kde-devel/qt5dev/qtbase
export XDG_DATA_DIRS=$KF5/share:$XDG_DATA_DIRS:/usr/share
export XDG_CONFIG_DIRS=$KF5/etc/xdg:$XDG_CONFIG_DIRS:/etc/xdg
export PATH=$KF5/bin:$QTDIR/bin:$PATH
export QT_PLUGIN_PATH=$KF5/lib/plugins:$KF5/lib64/plugins:$KF5/lib/x86_64-linux-gnu/plugins:$QTDIR/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=$KF5/lib/qml:$KF5/lib64/qml:$KF5/lib/x86_64-linux-gnu/qml:$QTDIR/qml

export CMAKE_PREFIX_PATH=$KF5:$CMAKE_PREFIX_PATH

Building Qt from the dev branch: all ok, no problem at all.
Building frameworks: it compiles and probably because it doesn't need
the wrong linked libs, but CMakeCache.txt includes the following:
//The directory containing a CMake configuration file for Qt5OpenGL.
Qt5OpenGL_DIR:PATH=/usr/lib64/cmake/Qt5OpenGL

//The directory containing a CMake configuration file for Qt5PrintSupport.
Qt5PrintSupport_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5PrintSupport

//The directory containing a CMake configuration file for Qt5Qml.
Qt5Qml_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Qml

//The directory containing a CMake configuration file for Qt5Quick.
Qt5Quick_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Quick

//The directory containing a CMake configuration file for Qt5Script.
Qt5Script_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Script

//The directory containing a CMake configuration file for Qt5Sensors.
Qt5Sensors_DIR:PATH=/usr/lib64/cmake/Qt5Sensors

//The directory containing a CMake configuration file for Qt5Svg.
Qt5Svg_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Svg

//The directory containing a CMake configuration file for Qt5Test.
Qt5Test_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Test

//The directory containing a CMake configuration file for Qt5UiTools.
Qt5UiTools_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5UiTools

//The directory containing a CMake configuration file for Qt5WebKitWidgets.
Qt5WebKitWidgets_DIR:PATH=/usr/lib64/cmake/Qt5WebKitWidgets

//The directory containing a CMake configuration file for Qt5WebKit.
Qt5WebKit_DIR:PATH=/usr/lib64/cmake/Qt5WebKit

---

Note that Qt5OpenGL, Qt5Sensors and Qt5WebKit have the wrong path. It
should start with(in my case):
"/home/kde-devel/qt5dev/qtbase/lib/cmake/<module>"

For frameworks this seems to compile just fine. I'm guessing
frameworks never links to any of those libraries.

However, for plasma the story is a bit different. It includes the
following lines in CMakeCache.txt:
//The directory containing a CMake configuration file for Qt5Network.
Qt5Network_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Network

//The directory containing a CMake configuration file for Qt5OpenGL.
Qt5OpenGL_DIR:PATH=/usr/lib64/cmake/Qt5OpenGL

//The directory containing a CMake configuration file for Qt5PrintSupport.
Qt5PrintSupport_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5PrintSupport

//The directory containing a CMake configuration file for Qt5Qml.
Qt5Qml_DIR:PATH=/usr/lib64/cmake/Qt5Qml

//The directory containing a CMake configuration file for Qt5Quick.
Qt5Quick_DIR:PATH=/usr/lib64/cmake/Qt5Quick

//The directory containing a CMake configuration file for Qt5ScriptTools.
Qt5ScriptTools_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5ScriptTools

//The directory containing a CMake configuration file for Qt5Script.
Qt5Script_DIR:PATH=/home/kde-devel/qt5dev/qtbase/lib/cmake/Qt5Script

//The directory containing a CMake configuration file for Qt5Sensors.
Qt5Sensors_DIR:PATH=/usr/lib64/cmake/Qt5Sensors

------
There Qt5Qml, Qt5Quick and Qt5Sensors are linked wrong where Qt5Qml
and Qt5Quick are an issue. They cause the following linker errors:

/usr/lib/libQt5Quick.so.5.1.0: undefined reference to
`v8::V8::DisposeGlobal(v8::internal::Object**)'
/usr/lib/libQt5Qml.so.5.1.0: undefined reference to
`v8::V8::MakeWeak(v8::internal::Object**, void*, void
(*)(v8::Persistent<v8::Value>, void*))'
/usr/lib/libQt5Quick.so.5.1.0: undefined reference to
`v8::FunctionTemplate::New(v8::Handle<v8::Value> (*)(v8::Arguments
const&), v8::Handle<v8::Value>, v8::Handle<v8::Signature>)'
/usr/lib/libQt5Qml.so.5.1.0: undefined reference to
`v8::HeapProfiler::TakeSnapshot(v8::Handle<v8::String>,
v8::HeapSnapshot::Type, v8::ActivityControl*)'
/usr/lib/libQt5Quick.so.5.1.0: undefined reference to
`v8::V8::GlobalizeReference(v8::internal::Object**)'
/usr/lib/libQt5Quick.so.5.1.0: undefined reference to
`v8::Object::CheckedGetInternalField(int)'

Now manually correcting the paths for Qt5Qml and Qt5Quick works and
makes plasma-shell (the one giving me the linker errors) compile just
fine. I'm guessing that's not the intended way ;)

Is this a known issue and do i need to update something to fix it?
Note that i have the latest version of the KF5 chain since ~2 hours
before this mail. That includes "Extra CMake Modules" where the last
commit is:

commit 7f219e376523ae2a3559b45bf6eea8daa8d82765
Author: Kevin Ottens <ervin at kde.org>
Date:   Thu Jul 25 08:16:28 2013 +0200

    Add KDE4Attic, KUnitConversion and KIO to the staging list



Cheers,
Mark


More information about the Kde-frameworks-devel mailing list