#850 closed defect (fixed)
ChimeraX fails on macOS El Capitan
Reported by: | Owned by: | Conrad Huang | |
---|---|---|---|
Priority: | normal | Milestone: | Alpha 4 |
Component: | Platform | Version: | |
Keywords: | Cc: | chimera-programmers | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
Attempting to run the daily build on a Mac running El Cap gives errors along the lines of: dyld: lazy symbol binding failed: symbol not found: _getentropy From what I gather, this is a fairly general problem with Xcode 8. Not sure if it's surmountable, but it would be nice if it is - quite a few University IT departments are very slow in allowing employees to upgrade their macOS version.
Change History (7)
comment:1 by , 8 years ago
Cc: | added |
---|---|
Component: | Unassigned → Platform |
Milestone: | → Alpha 4 |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
comment:2 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
follow-up: 3 comment:3 by , 8 years ago
Much obliged. May I ask what needed to be done? Looks like I'll probably have to do the same for ISOLDE and Clipper. Tristan Croll Research Fellow Cambridge Institute for Medical Research University of Cambridge CB2 0XY
comment:4 by , 8 years ago
Well, the current hack-y fix is to sed the file that Python's configure generates in order to remove the preprocessor defines that say that those symbols are available.
The solution we hope to use, and that would undoubtedly be better for your purposes is to get "-no_weak_imports" into the loader flags (or "-Wl,-no_weak_imports" into the compiler flags).
--Eric
follow-up: 5 comment:5 by , 8 years ago
Thanks. Will look into that for Clipper. ISOLDE's libraries are compiled using the ChimeraX plugin framework, so I guess that will need to be handled by Conrad? It'll be an issue for every plugin that includes C++ extensions. Tristan Croll Research Fellow Cambridge Institute for Medical Research University of Cambridge CB2 0XY
comment:6 by , 8 years ago
Conrad is struggling with the -no_weak_imports approach. I'm hoping he will update this ticket whenever he's done trying that approach...
--Eric
comment:7 by , 8 years ago
Nope. As one of the postings I found said "MacOS can be evil with regards to clock_gettime(3)" or with handling for symbols introduced in new versions of macOS in general.
The problem is that "configure" thinks that the new symbols are available because of the convoluted way that Apple linker decides whether an undefined symbol is acceptable in the executable (because it MIGHT be available by runtime). It does NOT honor the MACOSX_DEPLOYMENT_TARGET value for this decision.
So for now, ChimeraX Python only works because when we build Python, we reach in to the source after "configure" has run and explicitly remove references to known problematic symbols:
ifdef USE_MAC_FRAMEWORKS # Remove this when we no longer support El Capitan (10.11) cd $(SOURCE) && \ mv pyconfig.h pyconfig.h.old && \ sed -e /HAVE_GETENTROPY/d \ -e /HAVE_CLOCK_GETRES/d \ -e /HAVE_CLOCK_GETTIME/d \ -e /HAVE_CLOCK_SETTIME/d \ < pyconfig.h.old > pyconfig.h endif
I highly suspect that the Python HDF module and the ffmpeg program will not work right now on 10.11.
The next builds will work on El Capitan, except for movie recording (ffmpeg)