Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#4013 closed defect (fixed)

macOS daily build, "developer can't be verified", even though notarization succeeded

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Platform Version:
Keywords: Cc: pett
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.2.dev202012030440 (2020-12-03 04:40:12 UTC)
Description
Mac daily build Dec 3, 2020 seems not to be signed.  After downloading and dragging app to desktop starting it says "Apple could not verify the developer"  as in the attached image.  Requires, ctrl-click -> Open to start the first time.

Build logs suggest notarization succeeded and builds email does not report that notarization failed.

Log:
Startup Messages  
---  
warning | Unable to load numpy_formathandler accelerator from
OpenGL_accelerate  
notes | OpenGL_accelerate module loaded  
Using accelerated ArrayDatatype  
Lock 5355951008 acquired on
/Users/goddard/Library/Caches/ChimeraX/1.2/toolshed/bundle_info.cache.lock  
Lock 5355951008 released on
/Users/goddard/Library/Caches/ChimeraX/1.2/toolshed/bundle_info.cache.lock  
  
UCSF ChimeraX version: 1.2.dev202012030440 (2020-12-03)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  




OpenGL version: 4.1 ATI-3.10.18
OpenGL renderer: AMD Radeon Pro Vega 20 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro15,3
      Processor Name: 8-Core Intel Core i9
      Processor Speed: 2.4 GHz
      Number of Processors: 1
      Total Number of Cores: 8
      L2 Cache (per Core): 256 KB
      L3 Cache: 16 MB
      Hyper-Threading Technology: Enabled
      Memory: 32 GB
      Boot ROM Version: 1037.147.4.0.0 (iBridge: 17.16.16610.0.0,0)

Software:

    System Software Overview:

      System Version: macOS 10.15.7 (19H2)
      Kernel Version: Darwin 19.6.0
      Time since boot: 21 days 13 minutes

Graphics/Displays:

    Intel UHD Graphics 630:

      Chipset Model: Intel UHD Graphics 630
      Type: GPU
      Bus: Built-In
      VRAM (Dynamic, Max): 1536 MB
      Vendor: Intel
      Device ID: 0x3e9b
      Revision ID: 0x0002
      Automatic Graphics Switching: Supported
      gMux Version: 5.0.0
      Metal: Supported, feature set macOS GPUFamily2 v1

    Radeon Pro Vega 20:

      Chipset Model: Radeon Pro Vega 20
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x8
      VRAM (Total): 4 GB
      Vendor: AMD (0x1002)
      Device ID: 0x69af
      Revision ID: 0x00c0
      ROM Revision: 113-D2060I-087
      VBIOS Version: 113-D20601MA0T-016
      Option ROM Version: 113-D20601MA0T-016
      EFI Driver Version: 01.01.087
      Automatic Graphics Switching: Supported
      gMux Version: 5.0.0
      Metal: Supported, feature set macOS GPUFamily2 v1
      Displays:
        Color LCD:
          Display Type: Built-In Retina LCD
          Resolution: 2880 x 1800 Retina
          Framebuffer Depth: 24-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal

Locale: (None, 'UTF-8')
PySide2 version: 5.15.1
Qt version: 5.15.1
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.2
    Babel: 2.9.0
    backcall: 0.2.0
    biopython: 1.78
    blockdiag: 2.0.1
    certifi: 2020.11.8
    cftime: 1.3.0
    chardet: 3.0.4
    ChimeraX-AddH: 2.1.3
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.9.5
    ChimeraX-AtomicLibrary: 1.1
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.2
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-CommandLine: 1.1.3
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.dev202012030440
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.0.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-DataFormats: 1.0.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1
    ChimeraX-DistUI: 1.0
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.0
    ChimeraX-Hbonds: 2.1
    ChimeraX-Help: 1.0
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0
    ChimeraX-Label: 1.0
    ChimeraX-ListInfo: 1.1
    ChimeraX-Log: 1.1.1
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Map: 1.0.2
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.0
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 1.1
    ChimeraX-MDcrds: 2.1
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.0
    ChimeraX-mmCIF: 2.2
    ChimeraX-MMTF: 2.0
    ChimeraX-Modeller: 1.0
    ChimeraX-ModelPanel: 1.0
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.0
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0
    ChimeraX-OpenCommand: 1.3.1
    ChimeraX-PDB: 2.2
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-Read-Pbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.2.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.2.1
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.0
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.0.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.2.2
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.0
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Tempy: 0.6.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0
    ChimeraX-ToolshedUtils: 1.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.3.1
    ChimeraX-uniprot: 2.0
    ChimeraX-ViewDockX: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.3
    comtypes: 1.1.7
    cxservices: 1.0
    cycler: 0.10.0
    Cython: 0.29.21
    decorator: 4.4.2
    distlib: 0.3.1
    docutils: 0.16
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 2.10.0
    html2text: 2020.1.16
    idna: 2.10
    ihm: 0.17
    imagecodecs: 2020.5.30
    imagecodecs-lite: 2020.1.31
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.7.0
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.5.2
    lz4: 3.1.0
    MarkupSafe: 1.1.1
    matplotlib: 3.3.2
    MolecularDynamicsViewer: 1.1
    msgpack: 1.0.0
    netCDF4: 1.5.4
    networkx: 2.5
    numexpr: 2.7.1
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.7
    parso: 0.7.1
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 20.3
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.8
    psutil: 5.7.2
    ptyprocess: 0.6.0
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PySide2: 5.15.1
    python-dateutil: 2.8.1
    pytz: 2020.4
    pyzmq: 20.0.0
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    Send2Trash: 1.5.0
    setuptools: 50.3.2
    sfftk-rw: 0.6.7.dev1
    shiboken2: 5.15.1
    six: 1.15.0
    snowballstemmer: 2.0.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 1.0.3
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.4
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.36.0
    wheel-filename: 1.2.0
File attachment: Screen Shot 2020-12-03 at 4.06.17 PM.png

Screen Shot 2020-12-03 at 4.06.17 PM.png

Attachments (2)

Screen Shot 2020-12-03 at 4.06.17 PM.png (189.9 KB ) - added by goddard@… 5 years ago.
Added by email2trac
daily.out.txt (3.9 MB ) - added by Tom Goddard 5 years ago.
Daily build output shows notarization success

Change History (23)

by goddard@…, 5 years ago

Added by email2trac

comment:1 by Tom Goddard, 5 years ago

Cc: pett added
Component: UnassignedPlatform
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionmacOS daily build, "developer can't be verified", even though notarization succeeded

by Tom Goddard, 5 years ago

Attachment: daily.out.txt added

Daily build output shows notarization success

comment:2 by Tom Goddard, 5 years ago

Eric, any ideas how notarization appears to work but "developer cannot be verified" on starting ChimeraX?

comment:3 by Tom Goddard, 5 years ago

ChimeraX 1.1.1 installs and opens fine. So it does look like a problem with the notarization, not a problem on Apple's end.

comment:4 by pett, 5 years ago

Could it somehow be related to the switch to PySide2?

in reply to:  7 comment:5 by goddard@…, 5 years ago

Seems likely.  But the 4400 lines of output from notarize.py in the daily build log shows it signing all that PySide2 junk, stapling and validating the dmg.  No sign of an error, although in 4400 lines who knows what might be lurking.

comment:6 by pett, 5 years ago

Some intensive Googling and examination of the notarization output hasn't really yielded anything useful, other than the fact that Gatekeeper (the program that okays executables to run) can fail notarized programs, and it's not easy to find out why (the spctl utility, which supposedly also checks things will pass applications [like ours] that GateKeeper fails).

comment:7 by Tom Goddard, 5 years ago

The daily build has the same type of notarization files in ChimeraX_Daily.app/Contents/_CodeSignature/CodeResources, about 4 Mbytes of xml similar to yesterday's daily build that opens correctly.

codesign seems to think the notarization is fine:

$ codesign --test-requirement="=notarized" --verify --verbose ~/Desktop/ChimeraX_Daily.app
/Users/goddard/Desktop/ChimeraX_Daily.app: valid on disk
/Users/goddard/Desktop/ChimeraX_Daily.app: satisfies its Designated Requirement
/Users/goddard/Desktop/ChimeraX_Daily.app: explicit requirement satisfied

spctl seems to think the daily build notarization is fine:

$ spctl -a -vv ~/Desktop/ChimeraX_Daily.app
/Users/goddard/Desktop/ChimeraX_Daily.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: UCSF Department of Medicine (LWV8X224YF)

comment:8 by Tom Goddard, 5 years ago

This looks like it is on the right track

https://developer.apple.com/forums/thread/128038

Probably GateKeeper is mad because there is some RPATH in a PySIde2 library.

in reply to:  11 comment:9 by goddard@…, 5 years ago

And this post seems likely what we got, a stray rpath, likely in PySIde2

https://stackoverflow.com/questions/57174961/macos-notarize-gatekeeper-does-not-recognize-notarized-app

Apple is really doing a bad job making it so hard to find the cause of GateKeeper failure.

comment:10 by Tom Goddard, 5 years ago

I wasn't able to find any gatekeeper related error messages in system.log.

Looking at PySide2 and shiboken2 modules in site-packages, the use @rpath to dynamically link their many libraries to each other and set LC_RPATH in each .so to include @loader_path and @loader_path/Qt/lib. This all looks ok. But even one mistake in the 100 libraries might be the cause of GateKeeper rejecting.

It looks like I need to find a gatekeeper error message or this is going to be hopeless. The previous comment 9 link suggests how to get such an error message by an extremely elaborate method using a clean virtual machine since apparently gatekeeper caches its conclusions. Still I searche system.log and tried starting this daily build only today.

comment:11 by Tom Goddard, 5 years ago

Mac system.log has only this message each time (including the first time) I try to run ChimeraX_Daily.app and it fails

Dec 3 16:00:18 Toms-MBP com.apple.xpc.launchd[1] (com.apple.xpc.launchd.oneshot.0x10000108.ChimeraX[35195]): removing service since it exited with consistent failure - OS_REASON_EXEC | Gatekeeper policy blocked execution

comment:12 by Tom Goddard, 5 years ago

Gatekeeper blocks launching an executable if any library paths go outside the bundle and not to system locations, and none of the checking tools flag this. It is just a blind guess that PySide2 has such a stray library path.

https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG207

comment:13 by Tom Goddard, 5 years ago

One desperate attempt to narrow down the search might be to notarize the app without PySIde2 and shiboken2 and see if Gatekeeper allows it to start. (Of course it will fail immediately, but still get to see if Gatekeeper allows it.) Have to do that on essex.cgl.ucsf.edu since only it has the notarization keys. If it works, could then try adding just shiboken2. If that works, try adding half of PySide2....

comment:14 by Tom Goddard, 5 years ago

Fishing around with otool -L in PySIde2 I see a /usr/local/opt library reference among the > 2000 library references. That will cause Gatekeeper to block launch.

cd site-packages/PySide2/Qt
otool -L plugins/*/*.dylib

...
plugins/sqldrivers/libqsqlodbc.dylib

/usr/local/opt/libiodbc/lib/libiodbc.2.dylib (compatibility version 4.0.0, current version 4.25.0)

also tried all Qt frameworks but only saw @rpath, /System/Library and /usr/lib paths

otool -L lib/*/Versions/5/Qt*

comment:15 by Tom Goddard, 5 years ago

A more thorough check reveals two referenced libraries outside the bundle

PySide2/Qt/plugins/sqldrivers/libqsqlodbc.dylib:

/usr/local/opt/libiodbc/lib/libiodbc.2.dylib (compatibility version 4.0.0, current version 4.25.0)

PySide2/Qt/plugins/sqldrivers/libqsqlpsql.dylib:

/Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.9.0)

Here are the commands that found these

$ cd /Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/lib/python3.8/site-packages
$ otool -L PySide2/Qt/plugins/*/*.dylib | awk '!/@rpath|\/System|\/usr\/lib/{print}'
PySide2/Qt/plugins/assetimporters/libassimp.dylib:

libassimp.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/assetimporters/libuip.dylib:

libuip.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/audio/libqtaudio_coreaudio.dylib:

libqtaudio_coreaudio.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/bearer/libqgenericbearer.dylib:

libqgenericbearer.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/canbus/libqtpassthrucanbus.dylib:

libqtpassthrucanbus.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/canbus/libqtpeakcanbus.dylib:

libqtpeakcanbus.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/canbus/libqttinycanbus.dylib:

libqttinycanbus.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/canbus/libqtvirtualcanbus.dylib:

libqtvirtualcanbus.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/designer/libqquickwidget.dylib:

libqquickwidget.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/designer/libqwebengineview.dylib:

libqwebengineview.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/gamepads/libdarwingamepad.dylib:

libdarwingamepad.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/generic/libqtuiotouchplugin.dylib:

libqtuiotouchplugin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geometryloaders/libdefaultgeometryloader.dylib:

libdefaultgeometryloader.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geometryloaders/libgltfgeometryloader.dylib:

libgltfgeometryloader.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_esri.dylib:

libqtgeoservices_esri.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_itemsoverlay.dylib:

libqtgeoservices_itemsoverlay.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_mapbox.dylib:

libqtgeoservices_mapbox.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_mapboxgl.dylib:

libqtgeoservices_mapboxgl.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_nokia.dylib:

libqtgeoservices_nokia.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/geoservices/libqtgeoservices_osm.dylib:

libqtgeoservices_osm.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/iconengines/libqsvgicon.dylib:

libqsvgicon.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqgif.dylib:

libqgif.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqicns.dylib:

libqicns.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqico.dylib:

libqico.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqjpeg.dylib:

libqjpeg.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqmacheif.dylib:

libqmacheif.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqmacjp2.dylib:

libqmacjp2.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqpdf.dylib:

libqpdf.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqsvg.dylib:

libqsvg.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqtga.dylib:

libqtga.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqtiff.dylib:

libqtiff.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqwbmp.dylib:

libqwbmp.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/imageformats/libqwebp.dylib:

libqwebp.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/mediaservice/libqavfcamera.dylib:

libqavfcamera.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/mediaservice/libqavfmediaplayer.dylib:

libqavfmediaplayer.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/mediaservice/libqtmedia_audioengine.dylib:

libqtmedia_audioengine.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.dylib:

libqtvirtualkeyboardplugin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platforms/libqcocoa.dylib:

libqcocoa.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platforms/libqminimal.dylib:

libqminimal.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platforms/libqoffscreen.dylib:

libqoffscreen.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platforms/libqwebgl.dylib:

libqwebgl.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/platformthemes/libqxdgdesktopportal.dylib:

libqxdgdesktopportal.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/playlistformats/libqtmultimedia_m3u.dylib:

libqtmultimedia_m3u.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/position/libqtposition_cl.dylib:

libqtposition_cl.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/position/libqtposition_positionpoll.dylib:

libqtposition_positionpoll.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/position/libqtposition_serialnmea.dylib:

libqtposition_serialnmea.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/printsupport/libcocoaprintersupport.dylib:

libcocoaprintersupport.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_debugger.dylib:

libqmldbg_debugger.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_inspector.dylib:

libqmldbg_inspector.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_local.dylib:

libqmldbg_local.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_messages.dylib:

libqmldbg_messages.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_native.dylib:

libqmldbg_native.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_nativedebugger.dylib:

libqmldbg_nativedebugger.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_preview.dylib:

libqmldbg_preview.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_profiler.dylib:

libqmldbg_profiler.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_quickprofiler.dylib:

libqmldbg_quickprofiler.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_server.dylib:

libqmldbg_server.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/qmltooling/libqmldbg_tcp.dylib:

libqmldbg_tcp.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/renderers/libopenglrenderer.dylib:

libopenglrenderer.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/renderplugins/libscene2d.dylib:

libscene2d.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sceneparsers/libassimpsceneimport.dylib:

libassimpsceneimport.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sceneparsers/libgltfsceneexport.dylib:

libgltfsceneexport.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sceneparsers/libgltfsceneimport.dylib:

libgltfsceneimport.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sensorgestures/libqtsensorgestures_plugin.dylib:

libqtsensorgestures_plugin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sensorgestures/libqtsensorgestures_shakeplugin.dylib:

libqtsensorgestures_shakeplugin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sensors/libqtsensors_generic.dylib:

libqtsensors_generic.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sensors/libqtsensors_ios.dylib:

libqtsensors_ios.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sqldrivers/libqsqlite.dylib:

libqsqlite.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/sqldrivers/libqsqlodbc.dylib:

libqsqlodbc.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/opt/libiodbc/lib/libiodbc.2.dylib (compatibility version 4.0.0, current version 4.25.0)

PySide2/Qt/plugins/sqldrivers/libqsqlpsql.dylib:

libqsqlpsql.dylib (compatibility version 0.0.0, current version 0.0.0)
/Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.9.0)

PySide2/Qt/plugins/styles/libqmacstyle.dylib:

libqmacstyle.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/texttospeech/libqtexttospeech_speechosx.dylib:

libqtexttospeech_speechosx.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/virtualkeyboard/libqtvirtualkeyboard_hangul.dylib:

libqtvirtualkeyboard_hangul.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/virtualkeyboard/libqtvirtualkeyboard_openwnn.dylib:

libqtvirtualkeyboard_openwnn.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/virtualkeyboard/libqtvirtualkeyboard_pinyin.dylib:

libqtvirtualkeyboard_pinyin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/virtualkeyboard/libqtvirtualkeyboard_tcime.dylib:

libqtvirtualkeyboard_tcime.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/virtualkeyboard/libqtvirtualkeyboard_thai.dylib:

libqtvirtualkeyboard_thai.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/webview/libqtwebview_darwin.dylib:

libqtwebview_darwin.dylib (compatibility version 0.0.0, current version 0.0.0)

PySide2/Qt/plugins/webview/libqtwebview_webengine.dylib:

libqtwebview_webengine.dylib (compatibility version 0.0.0, current version 0.0.0)

$ otool -L PySide2/Qt/lib/*/Versions/5/Qt* | awk '!/@rpath|\/System|\/usr\/lib/{print}'
PySide2/Qt/lib/Qt3DAnimation.framework/Versions/5/Qt3DAnimation:
PySide2/Qt/lib/Qt3DCore.framework/Versions/5/Qt3DCore:
PySide2/Qt/lib/Qt3DExtras.framework/Versions/5/Qt3DExtras:
PySide2/Qt/lib/Qt3DInput.framework/Versions/5/Qt3DInput:
PySide2/Qt/lib/Qt3DLogic.framework/Versions/5/Qt3DLogic:
PySide2/Qt/lib/Qt3DQuick.framework/Versions/5/Qt3DQuick:
PySide2/Qt/lib/Qt3DQuickAnimation.framework/Versions/5/Qt3DQuickAnimation:
PySide2/Qt/lib/Qt3DQuickExtras.framework/Versions/5/Qt3DQuickExtras:
PySide2/Qt/lib/Qt3DQuickInput.framework/Versions/5/Qt3DQuickInput:
PySide2/Qt/lib/Qt3DQuickRender.framework/Versions/5/Qt3DQuickRender:
PySide2/Qt/lib/Qt3DQuickScene2D.framework/Versions/5/Qt3DQuickScene2D:
PySide2/Qt/lib/Qt3DRender.framework/Versions/5/Qt3DRender:
PySide2/Qt/lib/QtBluetooth.framework/Versions/5/QtBluetooth:
PySide2/Qt/lib/QtBodymovin.framework/Versions/5/QtBodymovin:
PySide2/Qt/lib/QtCharts.framework/Versions/5/QtCharts:
PySide2/Qt/lib/QtConcurrent.framework/Versions/5/QtConcurrent:
PySide2/Qt/lib/QtCore.framework/Versions/5/QtCore:
PySide2/Qt/lib/QtDBus.framework/Versions/5/QtDBus:
PySide2/Qt/lib/QtDataVisualization.framework/Versions/5/QtDataVisualization:
PySide2/Qt/lib/QtDesigner.framework/Versions/5/QtDesigner:
PySide2/Qt/lib/QtDesignerComponents.framework/Versions/5/QtDesignerComponents:
PySide2/Qt/lib/QtGamepad.framework/Versions/5/QtGamepad:
PySide2/Qt/lib/QtGui.framework/Versions/5/QtGui:
PySide2/Qt/lib/QtHelp.framework/Versions/5/QtHelp:
PySide2/Qt/lib/QtLocation.framework/Versions/5/QtLocation:
PySide2/Qt/lib/QtMacExtras.framework/Versions/5/QtMacExtras:
PySide2/Qt/lib/QtMultimedia.framework/Versions/5/QtMultimedia:
PySide2/Qt/lib/QtMultimediaQuick.framework/Versions/5/QtMultimediaQuick:
PySide2/Qt/lib/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets:
PySide2/Qt/lib/QtNetwork.framework/Versions/5/QtNetwork:
PySide2/Qt/lib/QtNetworkAuth.framework/Versions/5/QtNetworkAuth:
PySide2/Qt/lib/QtNfc.framework/Versions/5/QtNfc:
PySide2/Qt/lib/QtOpenGL.framework/Versions/5/QtOpenGL:
PySide2/Qt/lib/QtPdf.framework/Versions/5/QtPdf:
PySide2/Qt/lib/QtPdfWidgets.framework/Versions/5/QtPdfWidgets:
PySide2/Qt/lib/QtPositioning.framework/Versions/5/QtPositioning:
PySide2/Qt/lib/QtPositioningQuick.framework/Versions/5/QtPositioningQuick:
PySide2/Qt/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport:
PySide2/Qt/lib/QtPurchasing.framework/Versions/5/QtPurchasing:
PySide2/Qt/lib/QtQml.framework/Versions/5/QtQml:
PySide2/Qt/lib/QtQmlModels.framework/Versions/5/QtQmlModels:
PySide2/Qt/lib/QtQmlWorkerScript.framework/Versions/5/QtQmlWorkerScript:
PySide2/Qt/lib/QtQuick.framework/Versions/5/QtQuick:
PySide2/Qt/lib/QtQuick3D.framework/Versions/5/QtQuick3D:
PySide2/Qt/lib/QtQuick3DAssetImport.framework/Versions/5/QtQuick3DAssetImport:
PySide2/Qt/lib/QtQuick3DRender.framework/Versions/5/QtQuick3DRender:
PySide2/Qt/lib/QtQuick3DRuntimeRender.framework/Versions/5/QtQuick3DRuntimeRender:
PySide2/Qt/lib/QtQuick3DUtils.framework/Versions/5/QtQuick3DUtils:
PySide2/Qt/lib/QtQuickControls2.framework/Versions/5/QtQuickControls2:
PySide2/Qt/lib/QtQuickParticles.framework/Versions/5/QtQuickParticles:
PySide2/Qt/lib/QtQuickShapes.framework/Versions/5/QtQuickShapes:
PySide2/Qt/lib/QtQuickTemplates2.framework/Versions/5/QtQuickTemplates2:
PySide2/Qt/lib/QtQuickTest.framework/Versions/5/QtQuickTest:
PySide2/Qt/lib/QtQuickWidgets.framework/Versions/5/QtQuickWidgets:
PySide2/Qt/lib/QtRemoteObjects.framework/Versions/5/QtRemoteObjects:
PySide2/Qt/lib/QtScript.framework/Versions/5/QtScript:
PySide2/Qt/lib/QtScriptTools.framework/Versions/5/QtScriptTools:
PySide2/Qt/lib/QtScxml.framework/Versions/5/QtScxml:
PySide2/Qt/lib/QtSensors.framework/Versions/5/QtSensors:
PySide2/Qt/lib/QtSerialBus.framework/Versions/5/QtSerialBus:
PySide2/Qt/lib/QtSerialPort.framework/Versions/5/QtSerialPort:
PySide2/Qt/lib/QtSql.framework/Versions/5/QtSql:
PySide2/Qt/lib/QtSvg.framework/Versions/5/QtSvg:
PySide2/Qt/lib/QtTest.framework/Versions/5/QtTest:
PySide2/Qt/lib/QtTextToSpeech.framework/Versions/5/QtTextToSpeech:
PySide2/Qt/lib/QtVirtualKeyboard.framework/Versions/5/QtVirtualKeyboard:
PySide2/Qt/lib/QtWebChannel.framework/Versions/5/QtWebChannel:
PySide2/Qt/lib/QtWebEngine.framework/Versions/5/QtWebEngine:
PySide2/Qt/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore:
PySide2/Qt/lib/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets:
PySide2/Qt/lib/QtWebSockets.framework/Versions/5/QtWebSockets:
PySide2/Qt/lib/QtWebView.framework/Versions/5/QtWebView:
PySide2/Qt/lib/QtWidgets.framework/Versions/5/QtWidgets:
PySide2/Qt/lib/QtXml.framework/Versions/5/QtXml:
PySide2/Qt/lib/QtXmlPatterns.framework/Versions/5/QtXmlPatterns:

$ otool -L PySide2/*.so | awk '!/@rpath|\/System|\/usr\/lib/{print}'
PySide2/Qt3DAnimation.abi3.so:
PySide2/Qt3DCore.abi3.so:
PySide2/Qt3DExtras.abi3.so:
PySide2/Qt3DInput.abi3.so:
PySide2/Qt3DLogic.abi3.so:
PySide2/Qt3DRender.abi3.so:
PySide2/QtCharts.abi3.so:
PySide2/QtConcurrent.abi3.so:
PySide2/QtCore.abi3.so:
PySide2/QtDataVisualization.abi3.so:
PySide2/QtGui.abi3.so:
PySide2/QtHelp.abi3.so:
PySide2/QtLocation.abi3.so:
PySide2/QtMacExtras.abi3.so:
PySide2/QtMultimedia.abi3.so:
PySide2/QtMultimediaWidgets.abi3.so:
PySide2/QtNetwork.abi3.so:
PySide2/QtOpenGL.abi3.so:
PySide2/QtOpenGLFunctions.abi3.so:
PySide2/QtPositioning.abi3.so:
PySide2/QtPrintSupport.abi3.so:
PySide2/QtQml.abi3.so:
PySide2/QtQuick.abi3.so:
PySide2/QtQuickControls2.abi3.so:
PySide2/QtQuickWidgets.abi3.so:
PySide2/QtRemoteObjects.abi3.so:
PySide2/QtScript.abi3.so:
PySide2/QtScriptTools.abi3.so:
PySide2/QtScxml.abi3.so:
PySide2/QtSensors.abi3.so:
PySide2/QtSerialPort.abi3.so:
PySide2/QtSql.abi3.so:
PySide2/QtSvg.abi3.so:
PySide2/QtTest.abi3.so:
PySide2/QtTextToSpeech.abi3.so:
PySide2/QtUiTools.abi3.so:
PySide2/QtWebChannel.abi3.so:
PySide2/QtWebEngine.abi3.so:
PySide2/QtWebEngineCore.abi3.so:
PySide2/QtWebEngineWidgets.abi3.so:
PySide2/QtWebSockets.abi3.so:
PySide2/QtWidgets.abi3.so:
PySide2/QtXml.abi3.so:
PySide2/QtXmlPatterns.abi3.so:

$ otool -L shiboken2/*.so shiboken2/*.dylib | awk '!/@rpath|\/System|\/usr\/lib/{print}'
shiboken2/shiboken2.abi3.so:
shiboken2/libshiboken2.abi3.5.15.dylib:

comment:16 by Tom Goddard, 5 years ago

Removed offending PySide2 plugins/sqldrivers/*.dylib files. Let's see if that fixes launching the Mac app tomorrow.

comment:17 by Tom Goddard, 5 years ago

Removing the sql PySIde2 plugins did not fix Gatekeeper approval. Still says "developer cannot be verified".

comment:18 by Tom Goddard, 5 years ago

Notarized ChimeraX app on essex with PySide2 and shiboken2 removed and Gatekeeper accepts it.
Notarized ChimeraX app with PySide2/Qt removed and Gatekeeper rejects it.
PySide2/pyside2-lupdate executable sets LC_RPATH /Users/qt/work/install/lib outside app.
Removed PySide2/Qt and PySide2/pyside2-lupdate and Gatekeeper accepts it.
Removed only PySide2/pyside2-lupdate (and sql plugins removed by build) and Gatekeeper accepts it.

I removed pyside2-lupdate in ChimeraX pip app-install. This should make Gatekeeper allow ChimeraX to start.

I reported these external dependencies in a PySide2 bug report

https://bugreports.qt.io/browse/PYSIDE-1445

Last edited 5 years ago by Tom Goddard (previous) (diff)

comment:19 by Tom Goddard, 5 years ago

Resolution: fixed
Status: assignedclosed

Fixed.

New PySide2 releases may add or remove external non-system library dependencies, so this bug may recur.

comment:20 by Tom Goddard, 5 years ago

Updated PySide2 from version 15.1 to 15.2 (using Qt 5.15.2) and it has the same external non-system library dependencies.

comment:21 by Tom Goddard, 5 years ago

Gatekeeper is still allowing ChimeraX to start with PySide2 15.2.

Note: See TracTickets for help on using tickets.