Closed MarkBergman-cbica closed 4 years ago
Was able to replicate this on the cluster.
@jminock: could you try installing & running CaPTk using this link?
After extracting the AppImage, I am getting the following error on the cluster:
patis@/cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin>$ ./CaPTk
./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by ./CaPTk)
./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebView.so.5)
./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebEngine.so.5)
./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebEngineWidgets.so.5)
Downloaded the file linked from Azure:
[bergmama@cubic-login2 CBICA.CaPTk_installer_Linux]$ ~/CaPTk/1.7.0.RC/captk
/scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk: /cbica/software/external/gcc/centos7/4.9.2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk)
/scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk: /usr/lib64/libgpg-error.so.0: no version information available (required by /scratch/bergmama/.mount_captkQWMbDO/usr/lib/libgcrypt.so.20)
[bergmama@cubic-login2 CBICA.CaPTk_installer_Linux]$
/scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk: /cbica/software/external/gcc/centos7/4.9.2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk)
This package will not work on the cluster since it is getting built on Ubuntu 16.04 so this error is expected.
/scratch/bergmama/.mount_captkQWMbDO/usr/bin/CaPTk: /usr/lib64/libgpg-error.so.0: no version information available (required by /scratch/bergmama/.mount_captkQWMbDO/usr/lib/libgcrypt.so.20)
I haven't seen this before.
After extracting the AppImage, I am getting the following error on the cluster:
patis@/cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin>$ ./CaPTk ./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by ./CaPTk) ./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebView.so.5) ./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebEngine.so.5) ./CaPTk: /usr/lib64/libQt5Core.so.5: version `Qt_5.12' not found (required by /cbica/home/patis/CaPTk/1.7.0.Beta/squashfs-root/usr/bin/../lib/libQt5WebEngineWidgets.so.5)
Upon seeing the output generated while creating the installer on the cluster, I noticed the following lines:
2019-05-14 12:06:52 (86.0 MB/s) - ‘linuxdeployqt-6-x86_64.AppImage’ saved [14720712/14720712] [SNIP!] iconToBeUsed: "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/share/icons/hicolor/64x64/CaPTk.png" Copied "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/share/icons/hicolor/64x64/CaPTk.png" to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/CaPTk.png" ERROR: file copy failed from "/usr/lib64/qt5/libexec/QtWebEngineProcess" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/libexec/QtWebEngineProcess" ERROR: file copy failed from "/usr/share/qt5/resources/qtwebengine_resources.pak" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/resources/qtwebengine_resources.pak" ERROR: file copy failed from "/usr/share/qt5/resources/qtwebengine_devtools_resources.pak" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/resources/qtwebengine_devtools_resources.pak" ERROR: file copy failed from "/usr/share/qt5/resources/qtwebengine_resources_100p.pak" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/resources/qtwebengine_resources_100p.pak" ERROR: file copy failed from "/usr/share/qt5/resources/qtwebengine_resources_200p.pak" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/resources/qtwebengine_resources_200p.pak" ERROR: file copy failed from "/usr/share/qt5/resources/icudtl.dat" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/resources/icudtl.dat" ERROR: findDependencyInfo: "ldd: /usr/lib64/qt5/plugins/iconengines/libqsvgicon.so: No such file or directory\n" ERROR: getBinaryRPaths: "/cbica/software/external/gcc/centos7/4.9.2/bin/objdump: '/usr/lib64/qt5/plugins/iconengines/libqsvgicon.so': No such file\n" ERROR: file copy failed from "/usr/lib64/qt5/plugins/iconengines/libqsvgicon.so" ERROR: to "/cbica/home/patis/projects/captk_myFork/bin/install/appdir/usr/bin/..//plugins/iconengines/libqsvgicon.so" ERROR: Could not find any translations in "/usr/share/qt5/translations" (developer build?)
Which would explain the Qt issues.
However, what is curious is why the package generated from Ubuntu 16.04 is totally fine (on machines with compatible GLIBC versions) even when the host machine doesn't have Qt5 installed.
The package generated by Azure works perfectly fine on my WSL (Ubuntu 16.04); both CLI and GUI. All required Qt libraries are present.
@PhucNgo1711: There is a project on GitHub called LightGMB [ref] and it uses a combination of an old Trusty Docker (we can use this, which is building Qt) to maintain GLIBC compatibility. Their Azure script gives the mechanism to do this. I believe if we can combine our build script with theirs, it should give us what we want? Of course, we want to keep this independent to ensure all this works as expected.
Compiling on Ubuntu 14.04 using newer Qt is a no-go unless we recompile Qt from source [ref]. Let's see if compiling on the cluster yields better results.
Recompiled the package on CentOS 7 using the installed Qt 5.11 version. I still get the same issue, even though I can clearly see that the shared libraries the executable is trying to link to is present where is should be.
One possible solution we need to explore now is to compile the CaPTk installer without calling LinuxDeployQt and let the user provide the required Qt libraries.
Packaged CaPTk, installed and extracted from the AppImage to see the same issue (Qt version mismatch). Upon checking the QtCore library getting packaged, I came upon the following:
(base) patis@/cbica/home/patis/Downloads/squashfs-root/usr/bin>$ strings ../lib/libQt5Core.so.5 | grep -i version
/etc/debian_version
Displays version information.
version
Invalid XML version string.
Unsupported XML version.
<?xml version="
This is the QtCore library version Qt 5.9.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 4.8.5 20150623 (Red Hat 4.8.5-28))
[SNIP!]
Which basically means that LinuxDeployQt is putting in the system version of Qt, rather than the Qt that CaPTk gets built against.
Possible solutions:
The commit https://github.com/sarthakpati/CaPTk/commit/1277fde3c323acf9192ad4ee67cdf6c8b9c0b9d3 fixes this. Closing.
LinuxDeployQt does not support CentOS.
Reference: https://github.com/probonopd/linuxdeployqt/issues/388#issuecomment-523419799
Tested the latest development build on the cluster. This issue has emerged again.
/scratch/ngoph/.mount_captk4xBKj3/usr/bin/CaPTk: /cbica/software/external/gcc/centos7/4.9.2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /scratch/ngoph/.mount_captk4xBKj3/usr/bin/CaPTk)
/scratch/ngoph/.mount_captk4xBKj3/usr/bin/CaPTk: /usr/lib64/libgpg-error.so.0: no version information available (required by /scratch/ngoph/.mount_captk4xBKj3/usr/lib/libgcrypt.so.20)
What is the executable name? The "CentOS7" build under the dev downloads section should work on the cluster since it was compiled there.