Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New port py-pyside6, version 6.8.2.1 #27901

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

johankytt
Copy link
Contributor

Ticket reference: https://trac.macports.org/ticket/70343

Description

Type(s)
  • bugfix
  • enhancement
  • security fix
Tested on

macOS 15.3.2 24D81 arm64
Xcode 16.2 16C5032a

Verification

Have you

  • followed our Commit Message Guidelines?
  • squashed and minimized your commits?
  • checked that there aren't other open pull requests for the same change?
  • referenced existing tickets on Trac with full URL in commit message?
  • checked your Portfile with port lint?
  • tried existing tests with sudo port test?
  • tried a full install with sudo port -vst install? # -s and -t don't work with some core python ports
  • tested basic functionality of all binary files?
  • checked that the Portfile's most important variants haven't been broken?

Sorry, something went wrong.

@johankytt
Copy link
Contributor Author

johankytt commented Mar 16, 2025

I have no means to debug the MacOS 13 build failure. Can someone figure it out or should I just set the minimum OS to 14 (darwin >= 23)? The error message given during build is not very helpful. @reneeotten, any thoughts?

Port limited to MacOS >= 14 (darwin >= 23) due to build issues.
Ticket reference: https://trac.macports.org/ticket/70343
@johankytt
Copy link
Contributor Author

As there have been no comments, the platform has been limited to darwin >= 23 (MacOS >= 14)

Copy link
Member

@i0ntempest i0ntempest left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build log indicates potential missing dependency qt6-qtwebengine:

2025-03-20T13:13:54.1834120Z CMake Warning at cmake/PySideHelpers.cmake:134 (find_package):
2025-03-20T13:13:54.1834480Z   By not providing "FindQt6WebEngineQuick.cmake" in CMAKE_MODULE_PATH this
2025-03-20T13:13:54.1835010Z   project has asked CMake to find a package configuration file provided by
2025-03-20T13:13:54.1835340Z   "Qt6WebEngineQuick", but CMake did not find one.
2025-03-20T13:13:54.1835490Z 
2025-03-20T13:13:54.1835630Z   Could not find a package configuration file provided by "Qt6WebEngineQuick"
2025-03-20T13:13:54.1835910Z   with any of the following names:
2025-03-20T13:13:54.1836030Z 
2025-03-20T13:13:54.1836090Z     Qt6WebEngineQuickConfig.cmake
2025-03-20T13:13:54.1836270Z     qt6webenginequick-config.cmake
2025-03-20T13:13:54.1836390Z 
2025-03-20T13:13:54.1836550Z   Add the installation prefix of "Qt6WebEngineQuick" to CMAKE_PREFIX_PATH or
2025-03-20T13:13:54.1836890Z   set "Qt6WebEngineQuick_DIR" to a directory containing one of the above
2025-03-20T13:13:54.1837240Z   files.  If "Qt6WebEngineQuick" provides a separate development package or
2025-03-20T13:13:54.1837500Z   SDK, be sure it has been installed.
2025-03-20T13:13:54.1837680Z Call Stack (most recent call first):
2025-03-20T13:13:54.1837900Z   cmake/PySideSetup.cmake:168 (collect_optional_modules)
2025-03-20T13:13:54.1838100Z   CMakeLists.txt:12 (include)

Also can you please confirm this port installs pkgconfig .pc files and .cmake files? pyside2 port is missing these files and is blocking me from enabling python bindings for one of my ports. See https://trac.macports.org/ticket/65411.
Can you also temporarily comment out the platform restriction so I can see the failure on macOS 13? No guarantee but I might be able to provide some pointers.

@johankytt
Copy link
Contributor Author

Build log indicates potential missing dependency qt6-qtwebengine:

2025-03-20T13:13:54.1834120Z CMake Warning at cmake/PySideHelpers.cmake:134 (find_package):
2025-03-20T13:13:54.1834480Z   By not providing "FindQt6WebEngineQuick.cmake" in CMAKE_MODULE_PATH this
2025-03-20T13:13:54.1835010Z   project has asked CMake to find a package configuration file provided by
2025-03-20T13:13:54.1835340Z   "Qt6WebEngineQuick", but CMake did not find one.
2025-03-20T13:13:54.1835490Z 
2025-03-20T13:13:54.1835630Z   Could not find a package configuration file provided by "Qt6WebEngineQuick"
2025-03-20T13:13:54.1835910Z   with any of the following names:
2025-03-20T13:13:54.1836030Z 
2025-03-20T13:13:54.1836090Z     Qt6WebEngineQuickConfig.cmake
2025-03-20T13:13:54.1836270Z     qt6webenginequick-config.cmake
2025-03-20T13:13:54.1836390Z 
2025-03-20T13:13:54.1836550Z   Add the installation prefix of "Qt6WebEngineQuick" to CMAKE_PREFIX_PATH or
2025-03-20T13:13:54.1836890Z   set "Qt6WebEngineQuick_DIR" to a directory containing one of the above
2025-03-20T13:13:54.1837240Z   files.  If "Qt6WebEngineQuick" provides a separate development package or
2025-03-20T13:13:54.1837500Z   SDK, be sure it has been installed.
2025-03-20T13:13:54.1837680Z Call Stack (most recent call first):
2025-03-20T13:13:54.1837900Z   cmake/PySideSetup.cmake:168 (collect_optional_modules)
2025-03-20T13:13:54.1838100Z   CMakeLists.txt:12 (include)

I just did a clean install of both py313-pyside6 and py313-pyside6+addons. By clean I mean that I let MP reinstall qt6 as well according to pyside6 requirements. I'm not seeing this warning.

@johankytt
Copy link
Contributor Author

Also can you please confirm this port installs pkgconfig .pc files and .cmake files? pyside2 port is missing these files and is blocking me from enabling python bindings for one of my ports. See https://trac.macports.org/ticket/65411.

I didn't find these files in /opt/local/... at the moment. I will try with --skip-cmake removed as well. I'm not a qt6 nor pyside developer, I only use them, so I'm not exactly sure if, where and when these files should be installed. Aren't they configuration files used for installing the libraries themselves and removing them afterwards should be expected?

@i0ntempest
Copy link
Member

Build log indicates potential missing dependency qt6-qtwebengine:

2025-03-20T13:13:54.1834120Z CMake Warning at cmake/PySideHelpers.cmake:134 (find_package):
2025-03-20T13:13:54.1834480Z   By not providing "FindQt6WebEngineQuick.cmake" in CMAKE_MODULE_PATH this
2025-03-20T13:13:54.1835010Z   project has asked CMake to find a package configuration file provided by
2025-03-20T13:13:54.1835340Z   "Qt6WebEngineQuick", but CMake did not find one.
2025-03-20T13:13:54.1835490Z 
2025-03-20T13:13:54.1835630Z   Could not find a package configuration file provided by "Qt6WebEngineQuick"
2025-03-20T13:13:54.1835910Z   with any of the following names:
2025-03-20T13:13:54.1836030Z 
2025-03-20T13:13:54.1836090Z     Qt6WebEngineQuickConfig.cmake
2025-03-20T13:13:54.1836270Z     qt6webenginequick-config.cmake
2025-03-20T13:13:54.1836390Z 
2025-03-20T13:13:54.1836550Z   Add the installation prefix of "Qt6WebEngineQuick" to CMAKE_PREFIX_PATH or
2025-03-20T13:13:54.1836890Z   set "Qt6WebEngineQuick_DIR" to a directory containing one of the above
2025-03-20T13:13:54.1837240Z   files.  If "Qt6WebEngineQuick" provides a separate development package or
2025-03-20T13:13:54.1837500Z   SDK, be sure it has been installed.
2025-03-20T13:13:54.1837680Z Call Stack (most recent call first):
2025-03-20T13:13:54.1837900Z   cmake/PySideSetup.cmake:168 (collect_optional_modules)
2025-03-20T13:13:54.1838100Z   CMakeLists.txt:12 (include)

I just did a clean install of both py313-pyside6 and py313-pyside6+addons. By clean I mean that I let MP reinstall qt6 as well according to pyside6 requirements. I'm not seeing this warning.

Do you have qt6-qtwebengine installed when building the port? If you do you most likely won't see it, and your portfile does not declare dependency on qtwebengine so the buildbots will not install it.

@i0ntempest
Copy link
Member

i0ntempest commented Mar 28, 2025

Aren't they configuration files used for installing the libraries themselves and removing them afterwards should be expected?

The project itself does use some .cmake files internally, but some .pc and .cmake are installed for pkg-config and cmake to provide info about the port to other softwares to include/link against.

@johankytt
Copy link
Contributor Author

I just did a clean install of both py313-pyside6 and py313-pyside6+addons. By clean I mean that I let MP reinstall qt6 as well according to pyside6 requirements. I'm not seeing this warning.

Do you have qt6-qtwebengine installed when building the port? If you do you most likely won't see it, and your portfile does not declare dependency on qtwebengine so the buildbots will not install it.

As I wrote, I did a clean install and had MP reinstall qt6 based on pyside requirements So no, I did not have qtwebengine installed. qtwebengine is a dependency of qtwebview, which is listed in pyside portfile.

…platform restriction for testing. Fixed formatting of comments.
@johankytt
Copy link
Contributor Author

Also can you please confirm this port installs pkgconfig .pc files and .cmake files? pyside2 port is missing these files and is blocking me from enabling python bindings for one of my ports. See https://trac.macports.org/ticket/65411.

I didn't find these files in /opt/local/... at the moment. I will try with --skip-cmake removed as well. I'm not a qt6 nor pyside developer, I only use them, so I'm not exactly sure if, where and when these files should be installed. Aren't they configuration files used for installing the libraries themselves and removing them afterwards should be expected?

Removing the --skip-cmake argument from destroot only causes more warnings. It has no effect on the requested .pc and .cmake files.

I removed the platform version restriction for now so you can have a look at the error.

@i0ntempest
Copy link
Member

I removed the platform version restriction for now so you can have a look at the error.

I took a look at the log for macOS 13 - newest Qt version supporting that is 6.7, which the newest version of pyside6 might not support anymore. If you do not want to dig in and try to fix this, you could use qt6.blacklist {< 6.8} instead of a hard OS version lock. If you do, then chatgpt told me this:

2025-03-28T22:44:45.1805020Z /opt/local/var/macports/build/_Users_runner_work_macports-ports_macports-ports_ports_python_py-pyside6/py310-pyside6/work/pyside-setup-everywhere-src-6.8.2/sources/shiboken6/ApiExtractor/qtdocparser.cpp:77:50: error: no viable conversion from 'const QStringView' to 'const QString'
2025-03-28T22:44:45.1810480Z     const auto it = packageToModuleDir.constFind(package);
2025-03-28T22:44:45.1813320Z                                                  ^~~~~~~

This is a type mismatch error and implicit conversion isn't allowed in Qt 6.7. You could try patching the code and change it to

const auto it = packageToModuleDir.constFind(QString(package));

@i0ntempest
Copy link
Member

i0ntempest commented Mar 29, 2025

Removing the --skip-cmake argument from destroot only causes more warnings. It has no effect on the requested .pc and .cmake files.

Let's ignore this for now.

I just did a clean install of both py313-pyside6 and py313-pyside6+addons. By clean I mean that I let MP reinstall qt6 as well according to pyside6 requirements. I'm not seeing this warning.

Do you have qt6-qtwebengine installed when building the port? If you do you most likely won't see it, and your portfile does not declare dependency on qtwebengine so the buildbots will not install it.

As I wrote, I did a clean install and had MP reinstall qt6 based on pyside requirements So no, I did not have qtwebengine installed. qtwebengine is a dependency of qtwebview, which is listed in pyside portfile.

That dependency is in a nondefault variant so it isn't installed. It's better to just drop the addon variant and always install those dependencies, which is what pyside2 port do.

@johankytt
Copy link
Contributor Author

Removing the --skip-cmake argument from destroot only causes more warnings. It has no effect on the requested .pc and .cmake files.

Let's ignore this for now.

I just did a clean install of both py313-pyside6 and py313-pyside6+addons. By clean I mean that I let MP reinstall qt6 as well according to pyside6 requirements. I'm not seeing this warning.

Do you have qt6-qtwebengine installed when building the port? If you do you most likely won't see it, and your portfile does not declare dependency on qtwebengine so the buildbots will not install it.

As I wrote, I did a clean install and had MP reinstall qt6 based on pyside requirements So no, I did not have qtwebengine installed. qtwebengine is a dependency of qtwebview, which is listed in pyside portfile.

That dependency is in a nondefault variant so it isn't installed. It's better to just drop the addon variant and always install those dependencies, which is what pyside2 port do.

The base installation only requires qttools. qtwebengine is one of the extra modules provided by the "addons" variant. So it should not have anything to do with the base installation. What install command are you using or what order are you installing things in or ...? Do you maybe have the qt6 installation in some kind of an incompatible state before installing pyside6? With a clean installation (all qt6 related stuff removed) I am not able to get the warning that you describe.

I'm not keen on removing the variant as I don't like bloating installations where a user may not need the extra components.

johankytt and others added 5 commits March 30, 2025 00:29
Change version fallback to be based on Qt version
@i0ntempest
Copy link
Member

i0ntempest commented Mar 30, 2025

What install command are you using

Github check will just install the port from a clean enviroment with only default variants. You can check the log of the last build here. By not providing those dependencies by default a lot of the features are disabled:

2025-03-30T00:57:31.7752430Z -- optional module Qt6DBus found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6DBus
2025-03-30T00:57:31.7845770Z -- optional module Qt6Designer found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Designer
2025-03-30T00:57:31.7858260Z -- optional module Qt6Xml found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Xml
2025-03-30T00:57:31.7922290Z -- optional module Qt6Help found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Help
2025-03-30T00:57:31.7986500Z -- optional module Qt6Multimedia skipped. Looked in: Qt6Multimedia_DIR-NOTFOUND
2025-03-30T00:57:31.8049760Z -- optional module Qt6MultimediaWidgets skipped. Looked in: Qt6MultimediaWidgets_DIR-NOTFOUND
2025-03-30T00:57:31.8062470Z -- optional module Qt6OpenGL found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6OpenGL
2025-03-30T00:57:31.8075440Z -- optional module Qt6OpenGLWidgets found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6OpenGLWidgets
2025-03-30T00:57:31.8137540Z -- optional module Qt6Pdf skipped. Looked in: Qt6Pdf_DIR-NOTFOUND
2025-03-30T00:57:31.8199760Z -- optional module Qt6PdfWidgets skipped. Looked in: Qt6PdfWidgets_DIR-NOTFOUND
2025-03-30T00:57:31.8262270Z -- optional module Qt6Positioning skipped. Looked in: Qt6Positioning_DIR-NOTFOUND
2025-03-30T00:57:31.8324000Z -- optional module Qt6Location skipped. Looked in: Qt6Location_DIR-NOTFOUND
2025-03-30T00:57:31.8386860Z -- optional module Qt6NetworkAuth skipped. Looked in: Qt6NetworkAuth_DIR-NOTFOUND
2025-03-30T00:57:31.8448770Z -- optional module Qt6Nfc skipped. Looked in: Qt6Nfc_DIR-NOTFOUND
2025-03-30T00:57:31.9638910Z -- optional module Qt6Qml found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Qml
2025-03-30T00:57:31.9859560Z -- optional module Qt6Quick found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Quick
2025-03-30T00:57:31.9924930Z -- optional module Qt6Quick3D skipped. Looked in: Qt6Quick3D_DIR-NOTFOUND
2025-03-30T00:57:32.0022480Z -- optional module Qt6QuickControls2 found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6QuickControls2
2025-03-30T00:57:32.0080890Z -- optional module Qt6QuickTest found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6QuickTest
2025-03-30T00:57:32.0134250Z -- optional module Qt6QuickWidgets found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6QuickWidgets
2025-03-30T00:57:32.0197520Z -- optional module Qt6RemoteObjects skipped. Looked in: Qt6RemoteObjects_DIR-NOTFOUND
2025-03-30T00:57:32.0259320Z -- optional module Qt6Scxml skipped. Looked in: Qt6Scxml_DIR-NOTFOUND
2025-03-30T00:57:32.0320830Z -- optional module Qt6Sensors skipped. Looked in: Qt6Sensors_DIR-NOTFOUND
2025-03-30T00:57:32.0383090Z -- optional module Qt6SerialPort skipped. Looked in: Qt6SerialPort_DIR-NOTFOUND
2025-03-30T00:57:32.0444590Z -- optional module Qt6SerialBus skipped. Looked in: Qt6SerialBus_DIR-NOTFOUND
2025-03-30T00:57:32.0506780Z -- optional module Qt6StateMachine skipped. Looked in: Qt6StateMachine_DIR-NOTFOUND
2025-03-30T00:57:32.0569200Z -- optional module Qt6TextToSpeech skipped. Looked in: Qt6TextToSpeech_DIR-NOTFOUND
2025-03-30T00:57:32.0630410Z -- optional module Qt6Charts skipped. Looked in: Qt6Charts_DIR-NOTFOUND
2025-03-30T00:57:32.0692800Z -- optional module Qt6SpatialAudio skipped. Looked in: Qt6SpatialAudio_DIR-NOTFOUND
2025-03-30T00:57:32.0743920Z -- optional module Qt6Svg found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6Svg
2025-03-30T00:57:32.0797390Z -- optional module Qt6SvgWidgets found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6SvgWidgets
2025-03-30T00:57:32.0861180Z -- optional module Qt6DataVisualization skipped. Looked in: Qt6DataVisualization_DIR-NOTFOUND
2025-03-30T00:57:32.0923090Z -- optional module Qt6Graphs skipped. Looked in: Qt6Graphs_DIR-NOTFOUND
2025-03-30T00:57:32.0985130Z -- optional module Qt6GraphsWidgets skipped. Looked in: Qt6GraphsWidgets_DIR-NOTFOUND
2025-03-30T00:57:32.1046600Z -- optional module Qt6Bluetooth skipped. Looked in: Qt6Bluetooth_DIR-NOTFOUND
2025-03-30T00:57:32.1060530Z -- optional module Qt6UiTools found (). Looked in: /opt/local/libexec/qt6/lib/cmake/Qt6UiTools
2025-03-30T00:57:32.1123090Z -- optional module Qt6WebChannel skipped. Looked in: Qt6WebChannel_DIR-NOTFOUND
2025-03-30T00:57:32.1185350Z -- optional module Qt6WebEngineCore skipped. Looked in: Qt6WebEngineCore_DIR-NOTFOUND
2025-03-30T00:57:32.1248030Z -- optional module Qt6WebEngineWidgets skipped. Looked in: Qt6WebEngineWidgets_DIR-NOTFOUND
2025-03-30T00:57:32.1310200Z -- optional module Qt6WebEngineQuick skipped. Looked in: Qt6WebEngineQuick_DIR-NOTFOUND
2025-03-30T00:57:32.1372610Z -- optional module Qt6WebSockets skipped. Looked in: Qt6WebSockets_DIR-NOTFOUND
2025-03-30T00:57:32.1435080Z -- optional module Qt6HttpServer skipped. Looked in: Qt6HttpServer_DIR-NOTFOUND
2025-03-30T00:57:32.1496720Z -- optional module Qt6WebView skipped. Looked in: Qt6WebView_DIR-NOTFOUND
2025-03-30T00:57:32.1559310Z -- optional module Qt63DCore skipped. Looked in: Qt63DCore_DIR-NOTFOUND
2025-03-30T00:57:32.1621110Z -- optional module Qt63DRender skipped. Looked in: Qt63DRender_DIR-NOTFOUND
2025-03-30T00:57:32.1682200Z -- optional module Qt63DInput skipped. Looked in: Qt63DInput_DIR-NOTFOUND
2025-03-30T00:57:32.1743630Z -- optional module Qt63DLogic skipped. Looked in: Qt63DLogic_DIR-NOTFOUND
2025-03-30T00:57:32.1805990Z -- optional module Qt63DAnimation skipped. Looked in: Qt63DAnimation_DIR-NOTFOUND
2025-03-30T00:57:32.1867990Z -- optional module Qt63DExtras skipped. Looked in: Qt63DExtras_DIR-NOTFOUND

If you have to keep the installation minimal by default and keep this variant, you would have to add a bunch of args to disable all these optional features to prevent opportunistic use of those packages, in the case of they're already installed as dependencies as some other ports. Then in the variant you'll need to turn all the features back on again.
As this is a developer oriented package and future packages might depend on it, you really would want to enable as many features as possible. Also ports cannot depend on variants so if in the future some port would need the addon variant, it would error out for nearly all users and on all macports buildbots. If you do not want to drop the addon variant you can set it as default, so the user would still have the option to opt out using -addon - but you'd still need to add all the args to control optional features.

Also I added a commit to fix the fetch error on macOS 13 and changed version fallback to be based on qt version, reason being that Qt 6.8 might be patched to build on macOS 13 in the future, and if that happens you will not need to change this port.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

3 participants