'import Quartz' to work on macOS 15 with MacPorts Python 3.12

Nils Breunese breun at macports.org
Fri Oct 18 23:26:48 UTC 2024


Joshua Root <jmr at macports.org> wrote:

> On 17/10/2024 09:28, Nils Breunese wrote:
>> Joshua Root <jmr at macports.org> wrote:
>>>> On 16/10/2024 22:12, Nils Breunese wrote:
>>>> Interesting, thanks for checking. Anyone else on macOS 15 who could check if this works or not?
>>>> I’ve also tried bumping PyObjC to the latest version (10.3.1), but the import still doesn’t work for me on macOS 15.
>>> 
>>> When you built the updated pyobjc, did the Quartz module fail to build?
>> I don’t know exactly what you mean by the Quartz module, but I bumped the version and the port built successfully. The PR for this version bump is here: https://github.com/macports/macports-ports/pulls <https:// github.com/macports/macports-ports/pulls>
>> Nils.
> 
> PyObjC consists of a number of python modules. Each has its own directory in site-packages: AVFoundation, AVKit, etc. through to WebKit.

In /opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages I see several directories with names that start with pyobjc_framework_. I don't see any such directory with Quartz in its name. Should I? Is there such a directory on macOS 14 or older when py312-pyobjc is installed?

> Just because the build overall reported success doesn't mean that some part of it didn't fail. It's perhaps not the best idea, but some build systems will silently continue when that happens and just not produce the failed component.

Hm ok, I didn’t expect that.

> You'd have to check the log to know.

I’ve attached the output of ‘sudo port install -d py312-pyobjc’ to https://trac.macports.org/ticket/71103. I see a bunch of files with Quartz in their name getting installed, but I don’t know if this means that the Quartz module is getting successfully installed or not.

These are the files installed by py312-pyobjc with quartz in their name:

——
❯ port contents py312-pyobjc | grep -i quartz
  /opt/local/share/doc/py312-pyobjc/html/_downloads/73554b4089ac871b7534606ab1eab54f/PyObjCExample-Quartz2DBasics.zip
  /opt/local/share/doc/py312-pyobjc/html/_sources/apinotes/Quartz.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/apinotes/QuartzComposer.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/apinotes/QuartzCore.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/apinotes/QuartzFilters.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Graphics/CGRotation/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Graphics/CGShading Demo/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Graphics/Quartz2DBasics/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Image/CIBevelSample/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Image/CIHazeFilterSample/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Image/CIMicroPaint/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Core Image/CITransitionSelectorSample/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/ImageKit/ImageBrowser/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/PDFKit/PDFKitViewer/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/PathDemo/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Programming with Quartz/BasicDrawing/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/Programming with Quartz/CocoaDrawingShell/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/QuartzComposer/Chart/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/examples/Quartz/TLayer/index.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/_sources/notes/quartz-vs-coregraphics.rst.txt
  /opt/local/share/doc/py312-pyobjc/html/apinotes/Quartz.html
  /opt/local/share/doc/py312-pyobjc/html/apinotes/QuartzComposer.html
  /opt/local/share/doc/py312-pyobjc/html/apinotes/QuartzCore.html
  /opt/local/share/doc/py312-pyobjc/html/apinotes/QuartzFilters.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Graphics/CGRotation/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Graphics/CGShading Demo/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Graphics/Quartz2DBasics/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Image/CIBevelSample/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Image/CIHazeFilterSample/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Image/CIMicroPaint/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Core Image/CITransitionSelectorSample/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/ImageKit/ImageBrowser/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/PDFKit/PDFKitViewer/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/PathDemo/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Programming with Quartz/BasicDrawing/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/Programming with Quartz/CocoaDrawingShell/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/QuartzComposer/Chart/index.html
  /opt/local/share/doc/py312-pyobjc/html/examples/Quartz/TLayer/index.html
  /opt/local/share/doc/py312-pyobjc/html/notes/quartz-vs-coregraphics.html
——

These mostly look like documentation and examples. Do people on older macOS versions have more Quartz-related files installed by py312-pyobjc?

Nils.


More information about the macports-dev mailing list