Opened 21 months ago

Last modified 20 months ago

#14390 assigned enhancement

Update to Qt 6.6, requires macOS 11 minimum

Reported by: Tom Goddard Owned by: Tom Goddard
Priority: moderate Milestone:
Component: Window Toolkit Version:
Keywords: Cc: chimerax-programmers
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

Update ChimeraX 1.8 daily build to Qt 6.6 which requires macOS 11 or higher.

ChimeraX 1.7 used Qt 6.3 and ChimeraX 1.6 uses Qt 6.4 and both work with macOS 10.14 or higher (on Intel).

Change History (9)

comment:1 by Tom Goddard, 21 months ago

I did the update to Qt 6.6.1 today and tested on Mac ARM, worked fine.

Plan to test tonight's ChimeraX daily build on macOS 10.15 and 10.14 to see if it does not work. Qt 6.5 and up claims its builds only support macOS 11 and higher but who knows.

If the ChimeraX daily build does not work on macOS 10.15 and 10.14 then I will update the deployment target to 11.0 and also the Mac Intel Info.plist to indicate 11.0 minimum, and update the Download page notes to indicate 11.0 minimum.

comment:2 by Tom Goddard, 21 months ago

If we can drop macOS 10.14 support then we can also enable better dmg compression on the Mac Intel build reducing the size about 30%. The better compression is supported since macOS 10.15.

comment:3 by Tom Goddard, 21 months ago

I tested the Qt 6.6 ChimeraX on macOS 10.14 on essex2.cgl.ucsf.edu and it fails to start, missing symbol _objc_opt_class used by QtCore.abi3.so not found in /usr/lib/libobjc.A.dylib.

essex2:~ chimera$ ~/Desktop/ChimeraX_Daily.app/Contents/MacOS/ChimeraX 
NOTE: Traceback (most recent call last):  
  File "<frozen runpy>", line 198, in _run_module_as_main  
  File "<frozen runpy>", line 88, in _run_code  
  File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/__main__.py", line 1069, in <module>  
    exit_code = init(sys.argv)  
                ^^^^^^^^^^^^^^  
  File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/__main__.py", line 601, in init  
    from chimerax.ui import initialize_qt  
  File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/__init__.py", line 21, in <module>  
    from .gui import MainToolWindow, initialize_qt, menu_capitalize  
  File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/gui.py", line 29, in <module>  
    from Qt.QtWidgets import QApplication  
  File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/Qt/__init__.py", line 64, in <module>  
    from PyQt6.QtCore import PYQT_VERSION_STR as PYQT6_VERSION  
ImportError:
dlopen(/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/QtCore.abi3.so, 2): Symbol not found: _objc_opt_class  
  Referenced from:
/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/Qt6/lib/QtCore.framework/Versions/A/QtCore (which was built for
Mac OS X 11.0)  
  Expected in: /usr/lib/libobjc.A.dylib  
 in
/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/Qt6/lib/QtCore.framework/Versions/A/QtCore  
  

BUG: ImportError:
dlopen(/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/QtCore.abi3.so, 2): Symbol not found: _objc_opt_class  
Referenced from:
/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/Qt6/lib/QtCore.framework/Versions/A/QtCore (which was built for
Mac OS X 11.0)  
Expected in: /usr/lib/libobjc.A.dylib  
in
/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/PyQt6/Qt6/lib/QtCore.framework/Versions/A/QtCore  
  
File
"/Users/chimera/Desktop/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/Qt/__init__.py", line 64, in  
from PyQt6.QtCore import PYQT_VERSION_STR as PYQT6_VERSION  
  
 _See log for complete Python traceback._  

comment:4 by Tom Goddard, 21 months ago

Eric said the lab Mac laptop is at macOS 10.15. We should try that too.

comment:5 by pett, 21 months ago

The message when run on 10.15: "Sorry, "UCSF ChimeraX" cannot be run on this version of macOS. Qt requires macOS 11.0.0 or later, you have macOS 10.15."

comment:6 by Tom Goddard, 21 months ago

I'd like to update our Mac Intel daily build to compile with MACOSX_DEPLOYMENT_TARGET=11.0 and update its Info.plist to say minimum 11.0 is required. But that environment variable is set in the build_tools repository and effects both the daily build and a 1.7.1 patch release which should still use 10.14. Similarly the download table notes are shared between the daily build and 1.7.1 patch release. So if we are going to make a 1.7.1 release it is inconvenient to change the minimum macOS to 11.0 until after that is done.

I also see that the notarization script takes the MACOSX_DEPLOYMENT_TARGET environment variable but I could not find any documentation that said this is used. Possibly it is a remnant of old notarization code and is not needed.

comment:7 by Tom Goddard, 21 months ago

Plan is to wait until the ChimeraX 1.7.1 release is made (next week). Then update the MACOSX_DEPLOYMENT_TARGET for the daily build.

comment:8 by Tom Goddard, 20 months ago

We updated to Qt 6.6.1 about a month ago and encountered crashes associated with the command-line combo box. So we then reverted back to Qt 6.3. The combo box crash was a known Qt bug that was fixed in Qt 6.6.2. We just updated ChimeraX daily builds to Qt 6.6.2 last week.

comment:9 by Tom Goddard, 20 months ago

There are a couple more steps to complete this ticket.

1) Update build_tools to use MACOSX_DEPLOYMENT_TARGET=11.0 in build_macosx.sh and build_universal.sh.

2) Update build_tools dmg packaging to use better compression "-f ULMO" in build_macosx.sh for Intel Mac build.

3) Make sure the Info.plist of the builds sets LSMinimumSystemVersion to 11.0. It should do this since mkinfo.py in src/apps/ChimeraX/mkinfo.py uses the MACOSX_DEPLOYMENT_TARGET environment variable to set that value.

I'll wait another couple weeks before doing this to make sure Qt 6.6.2 does not have some fatal flaw that causes us to revert again to Qt 6.3.

Note: See TracTickets for help on using tickets.