Opened 2 years ago

Closed 2 years ago

#9157 closed defect (fixed)

Daily build does not start on Mac

Reported by: Eric Pettersen Owned by: Zach Pearson
Priority: critical Milestone:
Component: Platform Version:
Keywords: Cc: chimera-programmers
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

On my Intel Mac (12.6.6), clicking on the icon produces no window and does not result in a running app. Starting it from the command line:

/Applications/ChimeraX_Daily.app/Contents/bin/ChimeraX
NOTE: Traceback (most recent call last):

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/darwin.py", line 35, in GL

return ctypesloader.loadLibrary(


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/ctypesloader.py", line 36, in loadLibrary

return _loadLibraryWindows(dllType, name, mode)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/ctypesloader.py", line 89, in _loadLibraryWindows

return dllType( name, mode )


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ctypes/init.py",
line 376, in init

self._handle = _dlopen(self._name, mode)


OSError: ("dlopen(OpenGL, 0x000A): tried:
'/Applications/ChimeraX_Daily.app/Contents/bin/../lib/OpenGL' (no such file),
'/Applications/ChimeraX_Daily.app/Contents/bin/../Library/Frameworks/Python.framework/OpenGL'
(no such file), 'OpenGL' (no such file), '/usr/lib/OpenGL' (no such file),
'/Users/pett/src/chimerax/src/bundles/seqalign/src/OpenGL' (no such file)",
'OpenGL', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "<frozen runpy>", line 198, in _run_module_as_main

File "<frozen runpy>", line 88, in _run_code

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/main.py", line 1044, in <module>

exit_code = init(sys.argv)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/main.py", line 701, in init

sess.ui.build()

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/gui.py", line 191, in build

self.main_window = mw = MainWindow(self, self.session)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/gui.py", line 433, in init

self.graphics_window = g = GraphicsWindow(self._stack, ui, stereo)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/ui/graphics.py", line 33, in init

oc = OpenGLContext(self, ui.primaryScreen(), use_stereo = stereo)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/graphics/opengl.py", line 49, in init

_initialize_pyopengl() # Set global GL module.


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/graphics/opengl.py", line 319, in _initialize_pyopengl

import OpenGL.GL

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/GL/init.py", line 3, in <module>

from OpenGL import error as _error

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/error.py", line 12, in <module>

from OpenGL import platform, _configflags

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/init.py", line 56, in <module>

_load()

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/init.py", line 53, in _load

plugin.install(globals())

File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/baseplatform.py", line 97, in install

namespace[ name ] = getattr(self,name,None)


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/baseplatform.py", line 15, in get

value = self.fget( obj )


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/darwin.py", line 62, in GetCurrentContext

return self.CGL.CGLGetCurrentContext


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/baseplatform.py", line 15, in get

value = self.fget( obj )


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/darwin.py", line 45, in CGL

def CGL(self): return self.GL


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/baseplatform.py", line 15, in get

value = self.fget( obj )


File

"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/darwin.py", line 41, in GL

raise ImportError("Unable to load OpenGL library", *err.args)

ImportError: ('Unable to load OpenGL library', "dlopen(OpenGL, 0x000A): tried:
'/Applications/ChimeraX_Daily.app/Contents/bin/../lib/OpenGL' (no such file),
'/Applications/ChimeraX_Daily.app/Contents/bin/../Library/Frameworks/Python.framework/OpenGL'
(no such file), 'OpenGL' (no such file), '/usr/lib/OpenGL' (no such file),
'/Users/pett/src/chimerax/src/bundles/seqalign/src/OpenGL' (no such file)",
'OpenGL', None)

BUG: ImportError: ('Unable to load OpenGL library', "dlopen(OpenGL, 0x000A): tried:
'/Applications/ChimeraX_Daily.app/Contents/bin/../lib/OpenGL' (no such file),
'/Applications/ChimeraX_Daily.app/Contents/bin/../Library/Frameworks/Python.framework/OpenGL'
(no such file), 'OpenGL' (no such file), '/usr/lib/OpenGL' (no such file),
'/Users/pett/src/chimerax/src/bundles/seqalign/src/OpenGL' (no such file)",
'OpenGL', None)

File
"/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/OpenGL/platform/darwin.py", line 41, in GL
raise ImportError("Unable to load OpenGL library", *err.args)

_See log for complete Python traceback._


NOTE: Exception ignored in: <function OpenGLContext.del at 0x10f3d5800>
Traceback (most recent call last):

File "/Applications/ChimeraX_Daily.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/chimerax/graphics/opengl.py", line 74, in del

if not self._deleted:


AttributeError: 'OpenGLContext' object has no attribute '_deleted'

Attachments (1)

ChimeraX (32.7 KB ) - added by Tom Goddard 2 years ago.
Development ChimeraX executable for Intel Mac and Python 3.11 that allows daily build to run.

Download all attachments as: .zip

Change History (21)

comment:1 by goddard@…, 2 years ago

Daily build works on Mac ARM with macOS 13.3.1.

comment:2 by Zach Pearson, 2 years ago

I don't have an Intel mac available to test, but I'll download the Intel-only daily build and see if it fails under Rosetta.

comment:3 by Zach Pearson, 2 years ago

This can be reproduced on ARM Macs by using the Intel-only build.

comment:4 by Zach Pearson, 2 years ago

This may only be broken on Big Sur. The fix that Tom posted on Stack Overflow three years ago still works, haha!

https://stackoverflow.com/questions/63475461/unable-to-import-opengl-gl-in-python-on-macos

comment:5 by goddard@…, 2 years ago

Why does ChimeraX 1.6 PyOpenGL find the Mac OpenGL library, while the current Python 3.11 ChimeraX does not find it?  ChimeraX 1.6 did not patch PyOpenGL.

comment:6 by Zach Pearson, 2 years ago

Not sure, but looking into it. One possible clue is: arch -x86_64 ./python3.11 -I -m chimerax.core works but arch -x86_64 ./ChimeraX does not, from the Contents/bin folder of the Intel daily build.

comment:7 by Zach Pearson, 2 years ago

You can actually drag the executable from 1.6.1 into a current daily build and try the same procedure (as long as you go to ChimeraX.app/Library/Frameworks/Python.framework/Versions/ and symlink 3.11 to 3.9) and it also fails, so probably not the executable.

comment:8 by Zach Pearson, 2 years ago

This is probably a regression in CPython https://github.com/python/cpython/pull/22855

We could do a couple things to work around this: Add "-Xfrozen_modules=no" to the launcher or patch PyOpenGL.

I tested both of them and either one works, but patching PyOpenGL seemed like it was easier and would have fewer side effects, so that's what I did.

comment:9 by Tom Goddard, 2 years ago

This does not look like a Python problem. It looks like a ChimeraX problem. So it is not ideal to patch pyopengl instead of figuring out the real problem.

The trouble is "import OpenGL.GL" fails when run from ChimeraX. But if you just start the ChimeraX bin/python3.11 it imports fine. Another interesting clue is that my development ChimeraX python 3.11 build on my Intel Mac starts fine, but the daily build does not. I would think the only difference might be the daily build is notarized.

If I copy my development build Contents/MacOS/ChimeraX executable to the daily build, then the daily build starts fine.

By the way my tests are on an Intel Mac running the current macOS 13.4. So the failure is not specific to older macOS.

And I tested the daily build on an M1 Mac (macOS 13.3.1) and that starts fine.

A bit more poking shows that OpenGL.GL does not import because this call fails in Intel Mac ChimeraX daily build

_ctypes._dyld_shared_cache_contains_path('/System/Library/Frameworks/OpenGL.framework/OpenGL')

$ cd ChimeraX-Daily.app/Contents/MacOS
$ ./ChimeraX -c "from _ctypes import _dyld_shared_cache_contains_path as f ; print(f('/System/Library/Frameworks/OpenGL.framework/OpenGL'))"
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/goddard/Desktop/ChimeraX June 9
2023.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/__main__.py", line 1044, in <module>  
    exit_code = init(sys.argv)  
                ^^^^^^^^^^^^^^  
  File "/Users/goddard/Desktop/ChimeraX June 9
2023.app/Contents/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-
packages/chimerax/core/__main__.py", line 836, in init  
    exec(opts.cmd, global_dict)  
  File "<string>", line 1, in <module>  
NotImplementedError: _dyld_shared_cache_contains_path symbol is missing  

But the call works and returns true in my Python 3.11 ChimeraX development build on the same machine and works from the python3.11 executable

$ cd ChimeraX-Daily.app/Contents/MacOS
$ ../bin/python3.11 -c "from _ctypes import _dyld_shared_cache_contains_path as f ; print(f('/System/Library/Frameworks/OpenGL.framework/OpenGL'))"
True

The error message says a symbol is missing.

NotImplementedError: _dyld_shared_cache_contains_path symbol is missing

Why would a symbol be missing only when the (notarized) ChimeraX app is running?

by Tom Goddard, 2 years ago

Attachment: ChimeraX added

Development ChimeraX executable for Intel Mac and Python 3.11 that allows daily build to run.

comment:10 by Tom Goddard, 2 years ago

I've attached a copy of my Intel Mac ChimeraX executable that allows the daily build to run if it replaces ChimeraX-Daily.app/Contents/MacOS/ChimeraX. How this devel build executable might differ from the daily build other than notarization I don't know.

comment:11 by Tom Goddard, 2 years ago

Here are a few more clues. The unnotarized ChimeraX executable from essex2 for the failing daily build also fails to start with the same error. I'll attach that ChimeraX executable. So what is the difference between my development build ChimeraX executable that works and the daily build one that does not work?

There might be a clue in the runtime loader commands for the two executables, shown with the "otool -l" command. Here is the output for my development ChimeraX executable that works and the essex2 unnotarized executable that does not work. I don't see obvious differences.

The nightly build Intel Mac essex2 runs the ancient macOS 10.14.6 while my development build was made on macOS 13.3.1.

$ ls -l ChimeraX.devel 
-rwxr-xr-x  1 goddard  staff  33512 Jun  6 17:19 ChimeraX.devel*

$ otool -l ChimeraX.devel 
ChimeraX.devel:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
   vmaddr 0x0000000000000000
   vmsize 0x0000000100000000
  fileoff 0
 filesize 0
  maxprot 0x00000000
 initprot 0x00000000
   nsects 0
    flags 0x0
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 472
  segname __TEXT
   vmaddr 0x0000000100000000
   vmsize 0x0000000000004000
  fileoff 0
 filesize 16384
  maxprot 0x00000005
 initprot 0x00000005
   nsects 5
    flags 0x0
Section
  sectname __text
   segname __TEXT
      addr 0x0000000100003be0
      size 0x00000000000002a1
    offset 15328
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __stubs
   segname __TEXT
      addr 0x0000000100003e82
      size 0x0000000000000030
    offset 16002
     align 2^1 (2)
    reloff 0
    nreloc 0
     flags 0x80000408
 reserved1 0 (index into indirect symbol table)
 reserved2 6 (size of stubs)
Section
  sectname __const
   segname __TEXT
      addr 0x0000000100003eb4
      size 0x00000000000000c0
    offset 16052
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __cstring
   segname __TEXT
      addr 0x0000000100003f74
      size 0x0000000000000033
    offset 16244
     align 2^0 (1)
    reloff 0
    nreloc 0
     flags 0x00000002
 reserved1 0
 reserved2 0
Section
  sectname __unwind_info
   segname __TEXT
      addr 0x0000000100003fa8
      size 0x0000000000000050
    offset 16296
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 2
      cmd LC_SEGMENT_64
  cmdsize 232
  segname __DATA_CONST
   vmaddr 0x0000000100004000
   vmsize 0x0000000000004000
  fileoff 16384
 filesize 16384
  maxprot 0x00000003
 initprot 0x00000003
   nsects 2
    flags 0x10
Section
  sectname __got
   segname __DATA_CONST
      addr 0x0000000100004000
      size 0x0000000000000048
    offset 16384
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000006
 reserved1 8 (index into indirect symbol table)
 reserved2 0
Section
  sectname __const
   segname __DATA_CONST
      addr 0x0000000100004050
      size 0x0000000000000038
    offset 16464
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 3
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __LINKEDIT
   vmaddr 0x0000000100008000
   vmsize 0x0000000000004000
  fileoff 32768
 filesize 744
  maxprot 0x00000001
 initprot 0x00000001
   nsects 0
    flags 0x0
Load command 4
      cmd LC_DYLD_CHAINED_FIXUPS
  cmdsize 16
  dataoff 32768
 datasize 216
Load command 5
      cmd LC_DYLD_EXPORTS_TRIE
  cmdsize 16
  dataoff 32984
 datasize 32
Load command 6
     cmd LC_SYMTAB
 cmdsize 24
  symoff 33024
   nsyms 15
  stroff 33336
 strsize 176
Load command 7
            cmd LC_DYSYMTAB
        cmdsize 80
      ilocalsym 0
      nlocalsym 5
     iextdefsym 5
     nextdefsym 1
      iundefsym 6
      nundefsym 9
         tocoff 0
           ntoc 0
      modtaboff 0
        nmodtab 0
   extrefsymoff 0
    nextrefsyms 0
 indirectsymoff 33264
  nindirectsyms 17
      extreloff 0
        nextrel 0
      locreloff 0
        nlocrel 0
Load command 8
          cmd LC_LOAD_DYLINKER
      cmdsize 32
         name /usr/lib/dyld (offset 12)
Load command 9
     cmd LC_UUID
 cmdsize 24
    uuid 0AA4677F-CDAC-377D-8046-87A6E871BB40
Load command 10
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform 1
    minos 13.0
      sdk 13.0
   ntools 1
     tool 3
  version 820.1
Load command 11
      cmd LC_SOURCE_VERSION
  cmdsize 16
  version 0.0
Load command 12
       cmd LC_MAIN
   cmdsize 24
  entryoff 15744
 stacksize 0
Load command 13
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name @rpath/Versions/3.11/Python (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 3.11.0
compatibility version 3.11.0
Load command 14
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name /usr/lib/libc++.1.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1300.32.0
compatibility version 1.0.0
Load command 15
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1319.0.0
compatibility version 1.0.0
Load command 16
          cmd LC_RPATH
      cmdsize 40
         path @executable_path/../lib (offset 12)
Load command 17
      cmd LC_FUNCTION_STARTS
  cmdsize 16
  dataoff 33016
 datasize 8
Load command 18
      cmd LC_DATA_IN_CODE
  cmdsize 16
  dataoff 33024
 datasize 0
Load command 19
          cmd LC_RPATH
      cmdsize 72
         path @executable_path/../Library/Frameworks/Python.framework (offset 12)
$ ls -l ChimeraX-essex2-unnotarized 
-rwxr-xr-x  1 goddard  staff  8908 Jun  9 03:06 ChimeraX-essex2-unnotarized*

$ otool -l ChimeraX-essex2-unnotarized 
ChimeraX-essex2-unnotarized:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
   vmaddr 0x0000000000000000
   vmsize 0x0000000100000000
  fileoff 0
 filesize 0
  maxprot 0x00000000
 initprot 0x00000000
   nsects 0
    flags 0x0
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 552
  segname __TEXT
   vmaddr 0x0000000100000000
   vmsize 0x0000000000001000
  fileoff 0
 filesize 4096
  maxprot 0x00000005
 initprot 0x00000005
   nsects 6
    flags 0x0
Section
  sectname __text
   segname __TEXT
      addr 0x0000000100000b40
      size 0x00000000000002e5
    offset 2880
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __stubs
   segname __TEXT
      addr 0x0000000100000e26
      size 0x0000000000000030
    offset 3622
     align 2^1 (2)
    reloff 0
    nreloc 0
     flags 0x80000408
 reserved1 0 (index into indirect symbol table)
 reserved2 6 (size of stubs)
Section
  sectname __stub_helper
   segname __TEXT
      addr 0x0000000100000e58
      size 0x0000000000000060
    offset 3672
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __const
   segname __TEXT
      addr 0x0000000100000eb8
      size 0x00000000000000c0
    offset 3768
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __cstring
   segname __TEXT
      addr 0x0000000100000f78
      size 0x0000000000000033
    offset 3960
     align 2^0 (1)
    reloff 0
    nreloc 0
     flags 0x00000002
 reserved1 0
 reserved2 0
Section
  sectname __unwind_info
   segname __TEXT
      addr 0x0000000100000fac
      size 0x0000000000000048
    offset 4012
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 2
      cmd LC_SEGMENT_64
  cmdsize 392
  segname __DATA
   vmaddr 0x0000000100001000
   vmsize 0x0000000000001000
  fileoff 4096
 filesize 4096
  maxprot 0x00000003
 initprot 0x00000003
   nsects 4
    flags 0x0
Section
  sectname __nl_symbol_ptr
   segname __DATA
      addr 0x0000000100001000
      size 0x0000000000000008
    offset 4096
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000006
 reserved1 8 (index into indirect symbol table)
 reserved2 0
Section
  sectname __got
   segname __DATA
      addr 0x0000000100001008
      size 0x0000000000000010
    offset 4104
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000006
 reserved1 9 (index into indirect symbol table)
 reserved2 0
Section
  sectname __la_symbol_ptr
   segname __DATA
      addr 0x0000000100001018
      size 0x0000000000000040
    offset 4120
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000007
 reserved1 11 (index into indirect symbol table)
 reserved2 0
Section
  sectname __const
   segname __DATA
      addr 0x0000000100001060
      size 0x0000000000000038
    offset 4192
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 3
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __LINKEDIT
   vmaddr 0x0000000100002000
   vmsize 0x0000000000001000
  fileoff 8192
 filesize 716
  maxprot 0x00000001
 initprot 0x00000001
   nsects 0
    flags 0x0
Load command 4
            cmd LC_DYLD_INFO_ONLY
        cmdsize 48
     rebase_off 8192
    rebase_size 8
       bind_off 8200
      bind_size 40
  weak_bind_off 0
 weak_bind_size 0
  lazy_bind_off 8240
 lazy_bind_size 136
     export_off 8376
    export_size 32
Load command 5
     cmd LC_SYMTAB
 cmdsize 24
  symoff 8416
   nsyms 15
  stroff 8732
 strsize 176
Load command 6
            cmd LC_DYSYMTAB
        cmdsize 80
      ilocalsym 0
      nlocalsym 4
     iextdefsym 4
     nextdefsym 1
      iundefsym 5
      nundefsym 10
         tocoff 0
           ntoc 0
      modtaboff 0
        nmodtab 0
   extrefsymoff 0
    nextrefsyms 0
 indirectsymoff 8656
  nindirectsyms 19
      extreloff 0
        nextrel 0
      locreloff 0
        nlocrel 0
Load command 7
          cmd LC_LOAD_DYLINKER
      cmdsize 32
         name /usr/lib/dyld (offset 12)
Load command 8
     cmd LC_UUID
 cmdsize 24
    uuid 4B5C56F4-3E9D-3C6E-90F9-E6DF54E4256B
Load command 9
      cmd LC_VERSION_MIN_MACOSX
  cmdsize 16
  version 10.13
      sdk 10.14
Load command 10
      cmd LC_SOURCE_VERSION
  cmdsize 16
  version 0.0
Load command 11
       cmd LC_MAIN
   cmdsize 24
  entryoff 3408
 stacksize 0
Load command 12
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name @rpath/Versions/3.11/Python (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 3.11.0
compatibility version 3.11.0
Load command 13
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name /usr/lib/libc++.1.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 400.9.4
compatibility version 1.0.0
Load command 14
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1252.250.1
compatibility version 1.0.0
Load command 15
          cmd LC_RPATH
      cmdsize 40
         path @executable_path/../lib (offset 12)
Load command 16
      cmd LC_FUNCTION_STARTS
  cmdsize 16
  dataoff 8408
 datasize 8
Load command 17
      cmd LC_DATA_IN_CODE
  cmdsize 16
  dataoff 8416
 datasize 0
Load command 18
          cmd LC_RPATH
      cmdsize 72
         path @executable_path/../Library/Frameworks/Python.framework (offset 12)

comment:12 by Tom Goddard, 2 years ago

Another clue.

The ChimeraX daily build starts on essex2.

So maybe the trouble is somehow the ancient macOS 10.14.6 build environment with our Python 3.11 ChimeraX is having some macOS compatibility issue with newer macOS. That may be hard to work around without updating macOS or XCode on the build machine.

Let's see if with Zach's patch to PyOpenGL if we run into other problems with Mac Intel ChimeraX related to the old macOS 10.14.6 build environment. If there are none maybe best to let sleeping dogs lie.

comment:13 by Tom Goddard, 2 years ago

Our Mac Python I believe is just a relocatable version of the standard Python binary distribution (Zach, is this true for python 3.11?). And that says it is compatible with macOS 10.9 and later.

https://www.python.org/downloads/release/python-3114/

Zach noted that Mac Intel ChimeraX daily will start if using python3.11 to run the core module instead of using the ChimeraX binary executable. So it does seem to be something about our compilation of the ChimeraX executable, not a Python problem.

comment:14 by Zach Pearson, 2 years ago

Yes that's true, it's still a relocatable Python.

I downloaded this morning's Intel daily build and it does launch, but only from the command line or by clicking on Contents/bin/ChimeraX.

If I try to run the executable at Contents/MacOS/ChimeraX, which runs when clicking the icon or .app, the system complains that it is damaged.

comment:15 by Zach Pearson, 2 years ago

Oh, well, actually I re-extracted it and it just launched from the exe in Contents/MacOS/ChimeraX. I think I got impatient and double clicked the app _and_ tried a command line launch at the same time, and that did something. So now either exe works, but just clicking on the .app still makes the system complain that it's damaged.

comment:16 by Zach Pearson, 2 years ago

I've read online that if the binaries in the .app work but the .app itself doesn't it can be a codesigning issue and I think I've confirmed that it is. After I made a self-signed certificate and resigned the app, I could launch it by double clicking it again.

comment:17 by Zach Pearson, 2 years ago

I just downloaded _another_ Intel daily build and it worked from double clicking the .app, so maybe it was a transient notarization error. Hopefully it isn't the system getting confused and thinking that because I signed one ChimeraX, all ChimeraXes are OK. Can you download tomorrow's build (12/06/23) and try it?

comment:18 by Eric Pettersen, 2 years ago

Okay, will do.

comment:19 by goddard@…, 2 years ago

I tried todays ChimeraX Mac daily builds on ARM and Intel and both worked.

comment:20 by Zach Pearson, 2 years ago

Resolution: fixed
Status: assignedclosed

Daily build now opens

Note: See TracTickets for help on using tickets.