Skip to content

pyside6-essentials: Add version 6.11.2 - #3255

Draft
luhenry wants to merge 12 commits into
mainfrom
pyside6-essentials
Draft

luhenry wants to merge 12 commits into
mainfrom
pyside6-essentials

Conversation

@luhenry

@luhenry luhenry commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Compiles PySide6's 22 Essentials Qt modules (Core, Gui, Widgets, Qml, Quick, Sql, Svg, ...) via shiboken6. Upstream publishes no riscv64 wheel for any pyside6-* distribution.

Mirrors pyside-setup's own release recipe (setup.py bdist_wheel --build-type=... --standalone + create_wheels.py); the project has no public CI workflow to link (Gerrit, not GitHub Actions).

Differs from upstream

  • Qt/libclang toolchain - Rocky 10 AppStream dnf packages (qt6-*-devel, clang-devel, llvm-devel), not a Qt installer, since the build runs inside manylinux_2_39_riscv64.
  • Qt minor version - the image ships Qt 6.10.1, not 6.11.x, so wheels expose a 6.10 API surface under the 6.11.2 version.

Matrix: single cp310-abi3 build (built on cp312), matching upstream's limited-API wheel.

Testing

License: wheel bundles the Qt 6.10.1 runtime (LGPL-3.0-only, same licence as this package); sources are Rocky 10 AppStream's public SRPMs.

Base of the pyside6 family (shiboken6 #1696 -> essentials -> addons -> pyside6). The same build tree carves out PySide6_Addons and the PySide6 meta-wheel too; unlike addons, essentials needs none of the 9 Qt modules Rocky 10 doesn't package (WebEngine/Pdf/Graphs/HttpServer/WebView).

luhenry added a commit that referenced this pull request Oct 15, 2026
@luhenry
luhenry marked this pull request as draft October 15, 2026 12:14
Base of the pyside6 family (shiboken6 -> pyside6-essentials -> pyside6-addons
-> pyside6); pyside-setup's build_scripts/config.py only exposes
all/shiboken6/shiboken6-generator/pyside6 as --build-type values, so this
workflow runs the full --build-type=pyside6 --standalone build and carves
wheels out with the repo's own create_wheels.py, publishing only the
Essentials wheel. The same build tree also produces PySide6_Addons and the
PySide6 meta-wheel for a future port to extend.
shiboken6's ApiExtractor looks for libclang's builtin headers under
$LLVM_INSTALL_DIR/lib/clang/<ver>/include, falling back to
`llvm-config --libdir`. On Rocky 10 that reports /usr/lib64/llvm21/lib64,
while clang-libs installs the headers in /usr/lib/clang/21/include, so
every Qt module's generator run failed with "stddef.h file not found".
Set LLVM_INSTALL_DIR=/usr for the pyside6 build so it finds them.
libpyside/dynamicqmetaobject.cpp calls QMetaPropertyBuilder::setVirtual()
and setOverride(), which Qt only added in 6.11. The manylinux_riscv64
image's Qt6 AppStream packages are 6.10.1 (noted in this PR's own
description as a known 6.10/6.11 API-surface gap), so the pyside6 build
failed:

  dynamicqmetaobject.cpp:352:17: error: 'class QMetaPropertyBuilder' has
  no member named 'setVirtual'; did you mean 'setFinal'?
  dynamicqmetaobject.cpp:353:17: error: 'class QMetaPropertyBuilder' has
  no member named 'setOverride'

Guard both calls behind a QT_VERSION check so the module still builds
against 6.10.1, same tradeoff as every other 6.11-only surface this
build already exposes as 6.10. Apply it via the usual patches/ mechanism,
which needs this repo checked out alongside pyside-setup.
@luhenry
luhenry force-pushed the pyside6-essentials branch from b052972 to 8009452 Compare November 5, 2026 16:32
CMake AUTOMOC failed on QtCore because qbasicreadwritelock_wrapper.cpp
is listed unconditionally but shiboken only generates it for Qt >= 6.11
(typesystem since="6.11"), and the image ships Qt 6.10.1. Guard that
and the other since="6.11" wrappers (QtGui QQuaternion::Axes, QtGraphs
QCustomSeries, QtWebView classes) by Qt version.
Run 42480097603's QtWidgets build failed:

  fatal error: /work/build/.../PySide6/QtWidgets/PySide6/QtWidgets/
  qstyleoptionmenuitemv2_wrapper.cpp: No such file or directory

typesystem_widgets_common.xml marks QStyleOptionMenuItemV2 since="6.11"
same as the QBasicReadWriteLock/Axes/QCustomSeries/QWebView* classes
0002 already guards, so shiboken generates no wrapper for it against
Rocky 10's Qt 6.10.1, but QtWidgets/CMakeLists.txt still lists the
*_wrapper.cpp unconditionally. QtWidgets isn't AUTOMOC'd like the other
modules, so the gap surfaces later, as a ninja Unity-build compile
failure rather than an AutoGen error. Extend 0002's same guard to it.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant