Opened 4 months ago
Last modified 3 months ago
#18283 assigned defect
Missing ChimeraX core static library on Mac
| Reported by: | Tristan Croll | Owned by: | Zach Pearson |
|---|---|---|---|
| Priority: | major | Milestone: | 1.11 |
| Component: | Build System | Version: | |
| Keywords: | Cc: | chimerax-programmers | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-14.7.4-arm64-arm-64bit
ChimeraX Version: 1.10.1 (2025-07-24 20:15:27 UTC)
Description
I *think* I reported this a while back, but my login/password for Trac seem to have expired again so I can't search... it looks like the static libraries built by `chimerax.core` aren't being included in the MacOS distributions, causing my builds to fail:
{{{
ld: library 'chutil' not found
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Traceback (most recent call last):
File "/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/setuptools/_distutils/spawn.py", line 87, in spawn
subprocess.check_call(cmd, env=_inject_macos_ver(env))
File "/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/clang++', '-Wsign-compare', '-Wunreachable-code', '-fno-common', '-dynamic', '-DNDEBUG', '-g', '-fwrapv', '-O3', '-Wall', '-arch', 'arm64', '-arch', 'x86_64', '-g', '-dynamiclib', '-undefined', 'dynamic_lookup', '-Wl,-rpath,@loader_path', '-Wl,-install_name,@rpath/libclipper_cx.dylib', 'src_cpp/clipper_ext/xtal_mgr.o', 'src_cpp/clipper_ext/edcalc_ext.o', 'src_cpp/clipper_ext/sfcalc_obs_vdw.o', '-L/Applications/ChimeraX-1.10.1.app/Contents/lib', '-L/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/core/lib', '-L/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/atomic_lib/lib', '-L/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/arrays/lib', '-L/Applications/ChimeraX-1.10.1.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/core/lib', '-Lsrc', '-lclipper', '-latomstruct', '-lchutil', '-lelement', '-o', 'src/lib/libclipper_cx.dylib']' returned non-zero exit status 1.
}}}
{{{
cd /Applications/ChimeraX-1.10.1.app/Contents
find . -name "*chutil*"
./Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/core/include/chutil
}}}
I have Clipper and ISOLDE builds ready to go for Windows and Linux, but I'm stuck here on the Mac.
OpenGL version: 4.1 Metal - 88.1
OpenGL renderer: Apple M1 Pro
OpenGL vendor: Apple
Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.8.1, Qt 6.8.2
Qt runtime version: 6.8.2
Qt platform: cocoa
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro18,1
Model Number: Z14Y000GFB/A
Chip: Apple M1 Pro
Total Number of Cores: 10 (8 performance and 2 efficiency)
Memory: 32 GB
System Firmware Version: 11881.81.4
OS Loader Version: 10151.140.19.700.2
Software:
System Software Overview:
System Version: macOS 14.7.4 (23H420)
Kernel Version: Darwin 23.6.0
Time since boot: 51 minutes, 59 seconds
Graphics/Displays:
Apple M1 Pro:
Chipset Model: Apple M1 Pro
Type: GPU
Bus: Built-In
Total Number of Cores: 16
Vendor: Apple (0x106b)
Metal Support: Metal 3
Displays:
HP Z27k G3:
Resolution: 3840 x 2160 (2160p/4K UHD 1 - Ultra High Definition)
UI Looks like: 1920 x 1080 @ 60.00Hz
Main Display: Yes
Mirror: Off
Online: Yes
Rotation: Supported
Installed Packages:
alabaster: 1.0.0
appdirs: 1.4.4
appnope: 0.1.4
asttokens: 3.0.0
babel: 2.17.0
beautifulsoup4: 4.13.3
blockdiag: 3.0.0
blosc2: 3.6.1
build: 1.2.2.post1
certifi: 2023.11.17
cftime: 1.6.4.post1
charset-normalizer: 3.4.2
ChimeraX-AddCharge: 1.5.19
ChimeraX-AddH: 2.2.7
ChimeraX-AlignmentAlgorithms: 2.0.2
ChimeraX-AlignmentHdrs: 3.6.1
ChimeraX-AlignmentMatrices: 2.1
ChimeraX-Alignments: 2.20.2
ChimeraX-AlphaFold: 1.0.1
ChimeraX-AltlocExplorer: 1.1.2
ChimeraX-AmberInfo: 1.0
ChimeraX-Aniso: 1.1.4
ChimeraX-Arrays: 1.1
ChimeraX-Atomic: 1.60.7
ChimeraX-AtomicLibrary: 14.1.19
ChimeraX-AtomSearch: 2.0.1
ChimeraX-AxesPlanes: 2.4
ChimeraX-BasicActions: 1.1.3
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 3.0.0
ChimeraX-Boltz: 1.0
ChimeraX-BondRot: 2.0.4
ChimeraX-BugReporter: 1.0.2
ChimeraX-BuildStructure: 2.13.1
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.5.1
ChimeraX-ButtonPanel: 1.0.1
ChimeraX-CageBuilder: 1.0.1
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.4
ChimeraX-ChangeChains: 1.1
ChimeraX-CheckWaters: 1.5
ChimeraX-ChemGroup: 2.0.2
ChimeraX-Clashes: 2.3
ChimeraX-ColorActions: 1.0.5
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.8
ChimeraX-CommandLine: 1.3
ChimeraX-ConnectStructure: 2.0.1
ChimeraX-Contacts: 1.0.1
ChimeraX-Core: 1.10.1
ChimeraX-CoreFormats: 1.2
ChimeraX-coulombic: 1.4.5
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0.1
ChimeraX-DataFormats: 1.2.4
ChimeraX-Dicom: 1.2.7
ChimeraX-DistMonitor: 1.4.2
ChimeraX-DockPrep: 1.1.4
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ESMFold: 1.0
ChimeraX-FileHistory: 1.0.1
ChimeraX-FunctionKey: 1.0.1
ChimeraX-Geometry: 1.3
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.4.1
ChimeraX-Hbonds: 2.5.1
ChimeraX-Help: 1.3
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.3
ChimeraX-ItemsInspection: 1.0.1
ChimeraX-IUPAC: 1.0
ChimeraX-KVFinder: 1.6.2
ChimeraX-Label: 1.1.14
ChimeraX-ListInfo: 1.2.2
ChimeraX-Log: 1.2
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.9.1
ChimeraX-Map: 1.3
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0.1
ChimeraX-MapFilter: 2.0.1
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1.1
ChimeraX-Markers: 1.0.1
ChimeraX-Mask: 1.0.2
ChimeraX-MatchMaker: 2.2.2
ChimeraX-MCopy: 1.0
ChimeraX-MDcrds: 2.10.1
ChimeraX-MedicalToolbar: 1.1
ChimeraX-Meeting: 1.0.1
ChimeraX-MLP: 1.1.1
ChimeraX-mmCIF: 2.16
ChimeraX-MMTF: 2.2
ChimeraX-ModelArchive: 1.0
ChimeraX-Modeller: 1.5.19
ChimeraX-ModelPanel: 1.5.1
ChimeraX-ModelSeries: 1.0.1
ChimeraX-Mol2: 2.0.3
ChimeraX-Mole: 1.0
ChimeraX-Morph: 1.0.2
ChimeraX-MouseModes: 1.2
ChimeraX-Movie: 1.0
ChimeraX-MutationScores: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nifti: 1.2
ChimeraX-NMRSTAR: 1.0.2
ChimeraX-NRRD: 1.2
ChimeraX-Nucleotides: 2.0.3
ChimeraX-OpenCommand: 1.14.1
ChimeraX-OrthoPick: 1.0.1
ChimeraX-PDB: 2.7.10
ChimeraX-PDBBio: 1.0.1
ChimeraX-PDBLibrary: 1.0.4
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0.1
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1.3
ChimeraX-ProfileGrids: 1.1.3
ChimeraX-PubChem: 2.2
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1.2
ChimeraX-RemoteControl: 1.0
ChimeraX-RenderByAttr: 1.6.3
ChimeraX-RenumberResidues: 1.1
ChimeraX-ResidueFit: 1.0.1
ChimeraX-RestServer: 1.3.1
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 4.0
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.5.1
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0.3
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0.1
ChimeraX-Segmentations: 3.5.7
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.17.1
ChimeraX-Shape: 1.1
ChimeraX-Shell: 1.0.1
ChimeraX-Shortcuts: 1.2.1
ChimeraX-ShowSequences: 1.0.3
ChimeraX-SideView: 1.0.1
ChimeraX-SimilarStructures: 1.0.1
ChimeraX-Smiles: 2.1.2
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.19.1
ChimeraX-STL: 1.0.1
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.2.1
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0.1
ChimeraX-SwapAA: 2.0.1
ChimeraX-SwapRes: 2.5.2
ChimeraX-TapeMeasure: 1.0
ChimeraX-TaskManager: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.2.3
ChimeraX-ToolshedUtils: 1.2.4
ChimeraX-Topography: 1.0
ChimeraX-ToQuest: 1.0
ChimeraX-Tug: 1.0.1
ChimeraX-UI: 1.45.2
ChimeraX-Umap: 1.0
ChimeraX-uniprot: 2.3.1
ChimeraX-UnitCell: 1.0.1
ChimeraX-ViewDockX: 1.4.4
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0.1
ChimeraX-vrml: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0.2
ChimeraX-WebServices: 1.1.5
ChimeraX-Zone: 1.0.1
colorama: 0.4.6
comm: 0.2.2
contourpy: 1.3.2
coverage: 7.10.0
cxservices: 1.2.3
cycler: 0.12.1
Cython: 3.0.12
debugpy: 1.8.15
decorator: 5.2.1
docutils: 0.21.2
executing: 2.2.0
filelock: 3.18.0
fonttools: 4.59.0
funcparserlib: 2.0.0a0
glfw: 2.9.0
grako: 3.16.5
h5py: 3.14.0
html2text: 2024.2.26
idna: 3.10
ihm: 2.2
imagecodecs: 2024.6.1
imagesize: 1.4.1
iniconfig: 2.1.0
ipykernel: 6.29.5
ipython: 8.26.0
ipywidgets: 8.1.7
jedi: 0.19.1
Jinja2: 3.1.6
jupyter_client: 8.6.3
jupyter_core: 5.8.1
jupyterlab_widgets: 3.0.15
kiwisolver: 1.4.8
line_profiler: 4.2.0
lxml: 5.3.1
lz4: 4.3.2
MarkupSafe: 3.0.2
matplotlib: 3.10.1
matplotlib-inline: 0.1.7
msgpack: 1.1.0
ndindex: 1.10.0
nest-asyncio: 1.6.0
netCDF4: 1.6.5
networkx: 3.3
nibabel: 5.2.0
nptyping: 2.5.0
numexpr: 2.11.0
numpy: 1.26.4
OpenMM: 8.2.0
openvr: 1.26.701
packaging: 24.2
ParmEd: 4.2.2
parso: 0.8.4
pep517: 0.13.1
pexpect: 4.9.0
pickleshare: 0.7.5
pillow: 10.4.0
pip: 25.0.1
pkginfo: 1.11.1
platformdirs: 4.3.8
pluggy: 1.6.0
prompt_toolkit: 3.0.51
psutil: 7.0.0
ptyprocess: 0.7.0
pure_eval: 0.2.3
py-cpuinfo: 9.0.0
pycollada: 0.8
pydicom: 2.4.4
Pygments: 2.18.0
pynmrstar: 3.3.5
pynrrd: 1.0.0
PyOpenGL: 3.1.9
PyOpenGL-accelerate: 3.1.9
pyopenxr: 1.1.4501
pyparsing: 3.2.3
pyproject_hooks: 1.2.0
PyQt6-commercial: 6.8.1
PyQt6-Qt6: 6.8.2
PyQt6-WebEngine-commercial: 6.8.0
PyQt6-WebEngine-Qt6: 6.8.2
PyQt6_sip: 13.10.0
pytest: 8.4.1
pytest-cov: 6.2.1
python-dateutil: 2.9.0.post0
pytz: 2025.2
pyzmq: 27.0.0
qtconsole: 5.5.2
QtPy: 2.4.3
qtshim: 1.1
RandomWords: 0.4.0
requests: 2.32.3
roman-numerals-py: 3.1.0
scipy: 1.14.0
setuptools: 78.1.0
sfftk-rw: 0.8.1
six: 1.16.0
snowballstemmer: 3.0.1
sortedcontainers: 2.4.0
soupsieve: 2.7
Sphinx: 8.2.3
sphinx-autodoc-typehints: 3.1.0
sphinxcontrib-applehelp: 2.0.0
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 2.0.0
sphinxcontrib-htmlhelp: 2.1.0
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 2.0.0
sphinxcontrib-serializinghtml: 2.0.0
stack-data: 0.6.3
superqt: 0.7.1
tables: 3.10.2
tcia_utils: 1.5.1
tifffile: 2025.3.13
tinyarray: 1.2.4
tornado: 6.5.1
traitlets: 5.14.3
typing_extensions: 4.14.1
tzdata: 2025.2
urllib3: 2.5.0
wcwidth: 0.2.13
webcolors: 24.11.1
wheel: 0.45.1
wheel-filename: 1.4.2
widgetsnbextension: 4.0.14
Change History (20)
comment:2 by , 4 months ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Build System |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → Missing ChimeraX core static library on Mac |
comment:3 by , 4 months ago
| Priority: | normal → major |
|---|
I tried to reproduce this on Clipper's master branch.
I pulled and then ran git submodule update and tried to build with the 1.10.1 release. Initially, the build complained that it couldn't find your library, mmdb2.
I commented out all other extensions in pyproject.toml and tried to build just tried to build mmdb2, but at the end the build complained that my version of numpy was too low (2.2.3 vs 2.2.6). I changed the TOML file to specify 2.2.3 and tried another build, which worked, so I uncommented the clipper and clipper_cx libaries, as well as the clipper_python extension and tried another build.
That failed again, so I explicitly added "src/lib" to anything uncommented but which depended on libraries from the same package (maybe bundle_builder should do this automatically?)
Finally, I could reproduce this chutil error. I saw that the correct path was being added to the library path, so I looked in the ChimeraX application and the libraries aren't there!
comment:4 by , 4 months ago
They are however in the mac arm64 single-architecture build (and presumably the Intel build, I'm about to check). So the issue is with how the universal build is made.
comment:5 by , 4 months ago
Hmm... I'm surprised you had so much trouble with building Clipper. Makes me a touch concerned - this is the first version where I've ported over from the bundle_builder.xml framework, so now I'm wondering if my builds are quietly relying on something carried over from that. Will look into it. Numpy 2.2.6 was bundled into the Linux and Windows ChimeraX 1.10 releases (and I think Mac 1.10.1 - I certainly didn't hit an error there). On Fri, Jul 25, 2025 at 9:29 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > > > > > > >
comment:6 by , 4 months ago
| Cc: | added; removed |
|---|
Is there any particular reason our core libraries are static? Our universal build script is set up to exclude static libraries from consideration.
comment:7 by , 4 months ago
Personally I'm a universal build abolitionist. You've got to know at this point whether you've bought an M series Mac, right?
comment:8 by , 4 months ago
Regarding your build challenges with mmdb2 etc.: yeah, this was an accident from my migration from the bundle_builder.xml framework to pyproject.toml. The former used to put *all* compiled libraries in the base src directory, while the latter now puts Python extensions in src/ and non-Python compiled libraries in src/lib. I failed to update the library-dirs entries accordingly, but builds were still working on my machines because the last set of libraries compiled by bundle_builder were still sitting in the src/ directory. Just pushed an updated pyproject.toml that now works (at least on my Windows machine) after having removed all the old carryover files. MMDB2 isn't really my code, by the way - it's some ancient CCP4 C library for management of molecular data that came along as a Clipper dependency... I don't actually use any of the Clipper code that relies on MMDB2 (since ChimeraX does everything I need in that regard, to a much more modern standard). Often thought about untangling things to remove it entirely, but it's never really seemed urgent. On Fri, Jul 25, 2025 at 9:58 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > >
comment:9 by , 4 months ago
Given that it's a static library... for the time being if you're able to get me a copy of the missing chutil file that should be all I need to make Clipper and ISOLDE builds to work with the current release... actually, have there been any changes to this library since ChimeraX 1.9? If not I suppose I could just sub in the file from there. On Sat, Jul 26, 2025 at 12:05 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > > > >
comment:11 by , 4 months ago
| Milestone: | → 1.11 |
|---|
comment:12 by , 4 months ago
Well, the libraries could be dynamic AFAICT. I believe the thinking was that these libraries are tiny and therefore it isn't worth the overhead to make them dynamic.
comment:13 by , 4 months ago
You could get the same net effect (at the cost of a little extra compile time) by just combining the header and .cpp into a single .h file, could you not? On Mon, 28 Jul 2025 at 21:49, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > >
comment:14 by , 4 months ago
If multiple bundles all use these now-combined headers, I would think there would be conflicts at link time. Even multiple compilation units in the same bundle could have link conflicts. Is that not the case nowadays?
comment:15 by , 4 months ago
Hi Tristan,
ChimeraX 1.9 also lacks the chutil static libraries. We are wondering how you made a universal build for 1.9?
--Eric
comment:16 by , 3 months ago
… huh. I have no idea. On Tue, 29 Jul 2025 at 00:07, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > >
comment:17 by , 3 months ago
Ah - I think I remember now! At the time, I think I found that the need for an explicit dependence on chutil was platform-dependent - on the Mac, if I left it out it was still able to find the necessary symbols indirectly via atomstruct, but in Windows (and Linux? Can't remember now) the builds would fail due to an inability to find some CString symbols. ... but it seems something has changed now. As far as I can tell I can now remove chutil from the library list on all three operating systems, and still get a working Clipper build. Will double-check today. On Tue, Jul 29, 2025 at 7:38 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > > >
comment:18 by , 3 months ago
Hmm... yep - it seems I no longer need to have chutil in my list of library dependencies. I've removed it from the pyproject.toml (for both Clipper and ISOLDE), rebuilt everything from scratch, and confirmed it all works. Not sure what changed and when - I definitely did need to declare it for quite a few ChimeraX versions (starting when it was first split out into its own library). Also, a *mea culpa* on the numpy version: apparently I need to be much more careful about cleaning out my user site-packages directory prior to builds. While experimenting with OpenMM-CUDA-12 I installed it in there on my Linux and Windows systems, and didn't notice that the CUDA libraries brought in Numpy 2.2.6 with them. Then when rebuilding Clipper against the ChimeraX 1.10 release it failed with a dependency mismatch, and I just assumed that you'd upgraded the ChimeraX Numpy version. Anyway... I nuked the user-space ChimeraX 1.10 directories prior to doing final builds, and everything now looks ready to go. On Tue, Jul 29, 2025 at 9:36 AM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > > > >
comment:19 by , 3 months ago
I went ahead and uploaded new Clipper and ISOLDE builds to the Toolshed, but decided to wait until tomorrow to announce. On Tue, Jul 29, 2025 at 1:26 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > > > > >