Comment 8 for bug 1564571

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

I did download the unity8 branch, dpkg-buildpackaged it, added all the dependencies, changed MODULE to SHARED.

I can't reproduce in a clean xenial environment (pbuilder)

/usr/bin/c++ -fPIC -fvisibility=hidden -std=c++11 -fno-permissive -pedantic -Wall -Wextra -Wl,-z,defs -shared -Wl,-soname,libUbuntuGestures.so -o libUbuntuGestures.so CMakeFiles/UbuntuGestures.dir/CandidateInactivityTimer.cpp.o CMakeFiles/UbuntuGestures.dir/DebugHelpers.cpp.o CMakeFiles/UbuntuGestures.dir/Timer.cpp.o CMakeFiles/UbuntuGestures.dir/TimeSource.cpp.o CMakeFiles/UbuntuGestures.dir/TouchOwnershipEvent.cpp.o CMakeFiles/UbuntuGestures.dir/TouchRegistry.cpp.o CMakeFiles/UbuntuGestures.dir/UnownedTouchEvent.cpp.o CMakeFiles/UbuntuGestures.dir/UbuntuGestures_automoc.cpp.o /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1

I see the stuff injected correctly.
also with your tarball
/usr/bin/c++ -fPIC -fvisibility=hidden -std=c++11 -fno-permissive -pedantic -Wall -Wextra -Wl,-z,defs -shared -Wl,-soname,libUbuntuGesturesQml.so -o libUbuntuGesturesQml.so CMakeFiles/UbuntuGesturesQml.dir/plugin.cpp.o CMakeFiles/UbuntuGesturesQml.dir/AxisVelocityCalculator.cpp.o CMakeFiles/UbuntuGesturesQml.dir/Damper.cpp.o CMakeFiles/UbuntuGesturesQml.dir/Direction.cpp.o CMakeFiles/UbuntuGesturesQml.dir/DirectionalDragArea.cpp.o CMakeFiles/UbuntuGesturesQml.dir/FloatingFlickable.cpp.o CMakeFiles/UbuntuGesturesQml.dir/PressedOutsideNotifier.cpp.o CMakeFiles/UbuntuGesturesQml.dir/TouchDispatcher.cpp.o CMakeFiles/UbuntuGesturesQml.dir/TouchGate.cpp.o CMakeFiles/UbuntuGesturesQml.dir/TouchGestureArea.cpp.o CMakeFiles/UbuntuGesturesQml.dir/UbuntuGesturesQml_automoc.cpp.o ../../../libs/UbuntuGestures/libUbuntuGestures.so /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1 -Wl,-rpath,/unity8-cmakebug/build/libs/UbuntuGestures:

(I had to install also pkg-config libsystemsettings-dev libunity-api-dev)

actually as you said before:
 cmake ..
make
make testFloatingFlickable # works
cmake . -DUNITY_PLUGINPATH=/usr/lib/x86_64-linux-gnu/unity8/qml
make testFloatingFlickable # broken

the second make is just changing an LD_LIBRARY_PATH variable, no rebuilds are actually performed.
You are trying to LD_PRELOAD a system qml library instead of the just built one.
Not sure what is wrong, maybe an ABI incompatibility or something else, but it seems to have nothing to do with cmake to me.

test good.
VERBOSE=1 make testFloatingFlickable
cd /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures && env QML2_IMPORT_PATH=/unity8-cmakebug/build/tests/utils/modules:/unity8-cmakebug/build/plugins LD_LIBRARY_PATH=/unity8-cmakebug/build/plugins/Ubuntu/Gestures UNITY_TESTING=1 LANGUAGE=C LC_ALL=C.UTF-8 LD_LIBRARY_PATH=/unity8-cmakebug/build/plugins/Ubuntu/Gestures /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures/FloatingFlickableTestExec -o /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures/testFloatingFlickable.xml,xunitxml -o -,txt

bad test.
cd /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures && env QML2_IMPORT_PATH=/unity8-cmakebug/build/tests/utils/modules:/usr/lib/x86_64-linux-gnu/unity8/qml LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/unity8/qml/Ubuntu/Gestures UNITY_TESTING=1 LANGUAGE=C LC_ALL=C.UTF-8 LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/unity8/qml/Ubuntu/Gestures /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures/FloatingFlickableTestExec -o /unity8-cmakebug/build/tests/plugins/Ubuntu/Gestures/testFloatingFlickable.xml,xunitxml -o -,txt

I think the testsuite should run against the local just built library, not against the system one, that might have a different API/ABI.

In any case, this seems a lot different from the first issue you reported, and the soname stuff seems to be correctly set now.

objdump -p ./build/plugins/Ubuntu/Gestures/libUbuntuGesturesQml.so |grep SONAME
  SONAME libUbuntuGesturesQml.so