STORM-IRIT / Radium-Engine

Research 3D Engine for rendering, animation and processing
https://storm-irit.github.io/Radium-Engine/
Apache License 2.0
100 stars 50 forks source link

System wide Qt (on debian) do not match aqtinstall version from CI #936

Open dlyr opened 2 years ago

dlyr commented 2 years ago

Hence, precompiled binaries do not run on linux system (debian/ubuntu) systems. Possible solutions :

dlyr commented 2 years ago

Fast and dirty test

mkdir pathToQt
pip install -U pip
pip install -U aqtinstall
aqt install-qt linux desktop 5.15
cd pathToRadium/bin
cp pathToQt/gcc_64/lib/* .  
cp -r  `pathToQt/5.15.2/gcc_64/plugins/*` .

edit HelloRadium.sh

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

then run ./HelloRadium.sh or any other bin (first e.g. cp HelloRadium.sh to DrawPrimitiveDemo.sh)

Well on my system, the script is not mandatory, I didn't check why.

dlyr commented 2 years ago

maybe try https://github.com/QuasarApp/CQtDeployer or https://github.com/probonopd/linuxdeployqt

nmellado commented 2 years ago

Yes we identified linuxdeployqt long time ago... but never added it.

MathiasPaulin commented 2 years ago

To keep the distribution size reasonable, I'll strongly prefer the first solution that seems to me be the simpler for the user.

  • install/use system wide qt on ubuntu CI (instead of install-qt-action)

By using linuxdeployQt, (similarly used on mac or windows), this should fix application deployment if we use for Linux the same "bundle" strategy than for macos (less clean for windows) and deploy application in an appDir or similar. But this will not fix the development framework. And this last might be very helpful for users that just want to develop their own applications and not to compile first Radium.

If asking the user to install Qt using aqt in user-space, how a find_package(Qt) will distinguish between system-wide or user-space installation of Qt. The user will have to always define Qt_DIR or add its user-space installation in CMAKE_PREFIX_PATH.

dlyr commented 2 years ago

With the "system" version of Qt, in CI, how to ensure that the linux distribution uses the same version of Qt as the CI ? And yes, the user have to specify Qt_DIR as with windows.

MathiasPaulin commented 2 years ago

Asking the user to use a specific installer seems to me quite intrusive, at least, much more intrusive than asking for a specific version installed freely (the same version than on CI). And if we bundle the Qt libs within the Radium-bundle, do we deploy the whole Qt libraries ? if yes, it represents quite big storage, if no (we deploy only the used components, as i understood - but maybe I'm wrong- this is what is done by xxxdeployqt tools), what if a user wants to implement an application that uses a Qt component not deployed with Radium ?

dlyr commented 2 years ago

Actually, if I understand well the aqtintaller, it installs official Qt package. Is the version mismatch is also present on macos ? I think the problem comes from debian package build option, but I do not find how debian official pacakges are built ... so I cannot find what are the differences. (for the record, debian package options are defined in http://deb.debian.org/debian/pool/main/q/qtbase-opensource-src/qtbase-opensource-src_5.15.2+dfsg-9.debian.tar.xz in debian/rules file)