Opened 10 months ago
Closed 9 months ago
#16572 closed defect (limitation)
Bug when QTWebengine is not built ChimeraX 1.6.1 and 1.7
Reported by: | Owned by: | Greg Couch | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Platform | Version: | |
Keywords: | Cc: | chimera-programmers | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
Hi, I write to inform you about a possible bug/inconsitency, do with it what you want. I realize that we might be doing things in a different manner than intended to some extent. But I noted that in your code you had if-statements etc. which seemed to aim at resilience in this area, so I figured you might want to hear of our problems. Which we have resolved ourselves, no worries. We install ChimeraX on several academic clusters as part of our scientific software stack (PReSTO), running on EL8 and EL9. We use the generic linux tarballs in both cases. A user noted that ChimeraX on our EL8-system did not work, specifically saving sessions failed. I tried with both ChimeraX 1.6.1 and 1.7. I didn't try with 1.8 or above since I could only find a flatpak version for generic linux (and rpm:s for EL8/9), and it would require some development/time on our end to install. "/software/presto/e/11.3/software/ChimeraX/1.6.1-foss-2021a/chimerax/lib/python3.9/site- packages/chimerax/core/session.py", line 285, in process data = sm.take_snapshot(obj, session, self.state_flags) File "/software/presto/e/11.3/software/ChimeraX/1.6.1-foss-2021a/chimerax/lib/python3.9/site- packages/chimerax/log/tool.py", line 542, in take_snapshot 'contents': self.page_source, AttributeError: 'Log' object has no attribute 'page_source' I hunted this error down to the Logging interface / plugin not being loaded, and after some more digging we did figure out that this was due to QtWebengine not loading successfully. Which in turn seemed to be because of incompatible openSSL libraries. File "/software/presto/e/karho/software/ChimeraX/1.6.1-foss-2021a/chimerax/lib/python3.9/site-packages/chimerax/ui/widgets/htmlview.py", line 20, in <module> from Qt.QtWebEngineCore import QWebEnginePage, QWebEngineProfile File "/software/presto/e/karho/software/ChimeraX/1.6.1-foss-2021a/chimerax/lib/python3.9/site-packages/Qt/QtWebEngineCore.py", line 4, in <module> from PyQt6.QtWebEngineCore import * ImportError: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b We resolved this by making sure to link to our own bundled openSSL instead of the system libraries on the EL8 system. After doing this saving sessions, and the logging subsystem, and anything else tested worked as intended. You do have this line in chimerax/lib/python3.9/site-packages/chimerax/ui/widgets/__init__.py: if qt_have_web_engine(): It did resolve to False on our problematic system (until we fixed it), but that resulted in all of the problems mentioned, and was somewhat hard to debug as we ended up with broken python classes that did not look as they should, with missing attributes etc. And I suspect that's not the intended behaviour... Anyway, thanks for your hard work developing ChimeraX. -- Karl Hörnell National Supercomputer Centre Linköping University Sweden
Change History (7)
comment:1 by , 10 months ago
Cc: | added |
---|---|
Component: | Unassigned → Platform |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
comment:2 by , 10 months ago
comment:3 by , 10 months ago
Thanks for the report. ChimeraX is not designed to work without the QtWebEngine library. The graphical user interface will fail in various ways, e.g. the Log, the file history thumbnails, the help viewer, ... all depend on QtWebEngine. I think I added the qt_have_web_engine() code just to allow the GUI to startup so you could see that QtWebEngine is not working, to allow you to fix the problem. Or maybe it was added so that ChimeraX nogui test suite code could run on Linux systems where QtWebEngine was broken.
In any case, the basic problem is that the generic Linux ChimeraX version has long been deprecated because of exactly this kind of problem where dependencies (e.g. openssl version) are not met on certain linux distributions. That is why we have switched to flatpak. I'm glad you figured out a fix for the openssl problem.
We may want to fix session saving so that it can work when QtWebEngine is broken because we have a ChimeraX PyPi package that does not use Qt and we might want session saving to work in that library without the Qt window toolkit. Maybe it already does since the GUI Log tool would not be active in the package, or in ChimeraX in nogui mode.
So I guess the real answer is the generic Linux ChimeraX was broken because of a dependency problem, so even though it started, the fact that session saving didn't work was simply because the generic Linux distribution is prone to missing dependency problems, and the solution is that all the dependencies have to work.
comment:4 by , 10 months ago
Status: | assigned → feedback |
---|
Please tell us why you aren't using the ChimeraX rpms for EL8 and EL9. Installing the rpm with dnf will also install all of the dependencies. And you won't have to play games with OpenSSL, since it will use the system version.
If you really want the equivalent of a tarball, just extract the files from one of the .rpm or .deb files.
comment:5 by , 10 months ago
I believe you are right that we could extract the rpm files and use them, we do that for other software. We haven't looked at it for ChimeraX mostlye due to time-constraints. The longer answer is that we package software for several academic cluster environments, with lots of software and lots of users. To keep things compartmentalized we use a module system. This ideally ensures that software/dependencies don't interfere with each other, and are only available when a user has loaded the specific module. Extracting an rpm file is a valid option for us. But we will always have to play some games to get things going. Sometimes software bundles dependencies that will not work, sometimes we find out that we need unlisted dependencies, but that's our 'cross to bear'. Thanks for your time. On Thu, 9 Jan 2025, ChimeraX wrote: > > > > >
comment:6 by , 9 months ago
The rpm will be a big win for you for ChimeraX too. For others that might see this ticket, use "rpm -qR ChimeraX.rpm" to see all of the dependencies. Those dependencies should be added to the default set of packages that need to be installed on every system. After the dependencies are installed, there are two ways to install ChimeraX to an arbitrary location:
(1) Since ChimeraX is a relocatable rpm, "rpm -i --relocate /usr=/install-dir ..." will create a /bin and a /libexec in install-dir. Then /install-dir/bin/chimerax will run ChimeraX. The icons .desktop and .mime.types files for desktop integration are created during the installation in /install-dir/libexec/UCSF-ChimeraX/share/. So your module system could integrate ChimeraX using the xdg-mime, xdg-desktop-menu, xdg-desktop-icon, and xdg-icon-resource programs from the xdg-utils package.
(2) Use rpm2cpio to extract the files. Put the libexec directory wherever you want, and create a symbolic link to libexec/UCSF-ChimeraX/bin/ChimeraX named chimerax. Users will have to do their own desktop integration with ChimeraX's "linux xdg-install" command. Or from the Linux command line as: "chimerax --exit --nogui --cmd 'linux xdg-install'".
comment:7 by , 9 months ago
Resolution: | → limitation |
---|---|
Status: | feedback → closed |
Reported by Karl Hörnell