# SPDX-FileCopyrightText: (C) 2026 Institute of Software, Chinese Academy of Sciences (ISCAS) # SPDX-FileCopyrightText: (C) 2026 openRuyi Project Contributors # SPDX-FileContributor: yyjeqhc # # SPDX-License-Identifier: MulanPSL-2.0 %global pypi_name pyside6 %global camel_name PySide6 %global qt6ver 6.10.1 Name: python-%{pypi_name} Version: 6.10.1 Release: %autorelease Summary: Python bindings for the Qt 6 cross-platform application and UI framework License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0 URL: https://wiki.qt.io/Qt_for_Python VCS: git:https://github.com/qtproject/pyside-pyside-setup #!RemoteAsset sha256:fd54f40853d61dfd845dbb40d4f89fbd63df5ed341b3d9a2c77bb5c947a0a838 Source0: https://download.qt.io/official_releases/QtForPython/%{pypi_name}/%{camel_name}-%{qt6ver}-src/pyside-setup-everywhere-src-%{version}.tar.xz BuildSystem: cmake # Revert header installation paths to use standard system include directories. Patch0: 0001-Revert-Modify-headers-installation-for-CMake-builds.patch # Unconditionally link against Python libraries on all platforms. Patch1: 0002-Always-link-to-python-libraries.patch # Install CMake configuration files and binaries to standard system locations. Patch2: 0003-Fix-installation.patch BuildOption(conf): -DCMAKE_BUILD_TYPE=Release BuildOption(conf): -DBUILD_TESTING=OFF BuildOption(conf): -DBUILD_DOCS=OFF BuildOption(conf): -DNO_QT_TOOLS=yes BuildOption(conf): -DCMAKE_SKIP_INSTALL_RPATH=ON BuildOption(conf): -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON BuildOption(conf): -DFORCE_LIMITED_API=no BuildRequires: cmake BuildRequires: ninja BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: clang-devel BuildRequires: pkgconfig(python3) BuildRequires: python3dist(numpy) BuildRequires: python3dist(setuptools) BuildRequires: python3dist(wheel) BuildRequires: python3dist(packaging) BuildRequires: qt6-macros BuildRequires: qt6-qttools BuildRequires: qt6-doctools BuildRequires: pkgconfig(libffi) BuildRequires: pkgconfig(libxslt) BuildRequires: cmake(Qt6Core) BuildRequires: cmake(Qt6Gui) BuildRequires: cmake(Qt6CorePrivate) BuildRequires: cmake(Qt6Widgets) BuildRequires: cmake(Qt6Network) BuildRequires: cmake(Qt6DBus) BuildRequires: cmake(Qt6Test) BuildRequires: cmake(Qt6Concurrent) BuildRequires: cmake(Qt6Sql) BuildRequires: cmake(Qt6Xml) BuildRequires: cmake(Qt6PrintSupport) BuildRequires: cmake(Qt6OpenGL) BuildRequires: cmake(Qt6OpenGLWidgets) BuildRequires: cmake(Qt6Qml) BuildRequires: cmake(Qt6Quick) BuildRequires: cmake(Qt6Multimedia) BuildRequires: cmake(Qt6MultimediaWidgets) BuildRequires: pkgconfig(Qt6Positioning) BuildRequires: cmake(Qt6Location) BuildRequires: cmake(Qt6NetworkAuth) BuildRequires: cmake(Qt6Nfc) BuildRequires: cmake(Qt6Quick3D) BuildRequires: cmake(Qt6Scxml) BuildRequires: cmake(Qt6Sensors) BuildRequires: cmake(Qt6SerialPort) BuildRequires: cmake(Qt6SerialBus) BuildRequires: cmake(Qt6StateMachine) BuildRequires: cmake(Qt6TextToSpeech) BuildRequires: cmake(Qt6Charts) BuildRequires: cmake(Qt6SpatialAudio) BuildRequires: cmake(Qt6Svg) BuildRequires: cmake(Qt6SvgWidgets) BuildRequires: cmake(Qt6DataVisualization) BuildRequires: cmake(Qt6Graphs) BuildRequires: cmake(Qt6GraphsWidgets) BuildRequires: cmake(Qt6Bluetooth) BuildRequires: cmake(Qt6WebChannel) # we don't have yet. # BuildRequires: cmake(Qt6WebEngineCore) # BuildRequires: cmake(Qt6WebEngineWidgets) # BuildRequires: cmake(Qt6WebEngineQuick) BuildRequires: cmake(Qt6WebSockets) BuildRequires: cmake(Qt6HttpServer) BuildRequires: cmake(Qt63DCore) BuildRequires: cmake(Qt63DRender) BuildRequires: cmake(Qt63DInput) BuildRequires: cmake(Qt63DLogic) BuildRequires: cmake(Qt63DAnimation) BuildRequires: cmake(Qt63DExtras) BuildRequires: cmake(Qt6RemoteObjects) BuildRequires: cmake(Qt6UiPlugin) BuildRequires: qt6-designer Provides: python3-%{pypi_name} %python_provide python3-%{pypi_name} %description PySide6 is the official Python module from the Qt for Python project, which provides access to the complete Qt 6+ framework. %package -n python-%{pypi_name}-devel Summary: Development files related to %{name} Requires: pyside6-tools Requires: shiboken6 Provides: python3-%{pypi_name}-devel %description -n python-%{pypi_name}-devel Development files for PySide6. %package -n pyside6-tools Summary: PySide6 tools for the Qt 6 framework Requires: python-%{pypi_name} %description -n pyside6-tools PySide6 tools. %package -n shiboken6 Summary: Python / C++ bindings generator for %camel_name %description -n shiboken6 Shiboken binding generator. %package -n python-shiboken6 Summary: Python / C++ bindings libraries for %camel_name Provides: python3-shiboken6 %python_provide python3-shiboken6 %description -n python-shiboken6 Shiboken Python libraries. %package -n python-shiboken6-devel Summary: Python / C++ bindings helper module for %camel_name Requires: shiboken6 Requires: python-shiboken6 Provides: python3-shiboken6-devel %description -n python-shiboken6-devel Shiboken development files. %prep -a sed -i 's#${base}/../shiboken6/##' sources/pyside6/CMakeLists.txt %build -p # fix can't find stddef.h CLANG_INC=$(ls -d /usr/lib/clang/*/include | head -n 1) echo "Injecting CPATH=$CLANG_INC into shiboken_wrapper.sh" find . -name "shiboken_wrapper.sh" -exec sed -i "2i export CPATH=\"$CLANG_INC:\$CPATH\"" {} + export PYTHONPATH="$PWD/%{_vpath_builddir}/sources:$PYTHONPATH" %install -a cp -r %{_vpath_builddir}/sources/shiboken6/shibokenmodule/{*.py,*.txt} sources/shiboken6/shibokenmodule/ cp -r %{_vpath_builddir}/sources/pyside6/PySide6/*.py sources/pyside6/PySide6/ %{__python3} setup.py --qtpaths=/usr/%{_lib}/qt6/bin/qtpaths install_scripts --install-dir=%{buildroot}%{_bindir} for name in PySide6 shiboken6 shiboken6_generator; do mkdir -p %{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info cp -p $name.egg-info/{PKG-INFO,top_level.txt} \ %{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info/ if [ -f $name.egg-info/entry_points.txt ]; then cp -p $name.egg-info/entry_points.txt %{buildroot}%{python3_sitearch}/$name-%{version}-py%{python3_version}.egg-info/ fi done ln -sfr %{buildroot}%{_bindir}/shiboken6 \ %{buildroot}%{python3_sitelib}/shiboken6_generator/shiboken6 # Add symlinks for tools used by pyside_tool.py mkdir -p %{buildroot}%{python3_sitelib}/%{camel_name}/Qt/libexec ln -sfr %{_qt6_libexecdir}/{qmlcachegen,qmlimportscanner,qmltyperegistrar,rcc,uic} %{buildroot}%{python3_sitelib}/%{camel_name}/Qt/libexec/ ln -sfr %{_qt6_bindir}/{assistant,balsam,balsamui,designer,linguist,lrelease,lupdate,qmlformat,qmllint,qmlls,qsb} %{buildroot}%{python3_sitelib}/%{camel_name}/ # Create scripts folders (this basically replicates prepare_packages() in build_scripts/main.py) mkdir -p %{buildroot}%{python3_sitelib}/%{camel_name}/scripts mv %{buildroot}%{_bindir}/{android_deploy.py,deploy_lib,deploy.py,metaobjectdump.py,project_lib,project.py,pyside_tool.py,qml.py,qtpy2cpp_lib,qtpy2cpp.py,requirements-android.txt} %{buildroot}%{python3_sitelib}/%{camel_name}/scripts mkdir -p %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts mv %{buildroot}%{_bindir}/shiboken_tool.py %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts # Fix CMake config files to use correct absolute paths (OpenSUSE solution) # The upstream build is designed for wheel installation with relative paths, # but for system installation we need absolute paths sed -i 's#/typesystems#/share/PySide6/typesystems#g' %{buildroot}%{_libdir}/cmake/PySide6/*.cmake sed -i 's#/glue#/share/PySide6/glue#g' %{buildroot}%{_libdir}/cmake/PySide6/*.cmake # Fix all Python shebangs recursively # -p preserves timestamps # -n prevents creating ~backup files # -i specifies the interpreter for the shebang # Need to list files that do not match ^[a-zA-Z0-9_]+\.py$ explicitly! %py3_shebang_fix %{buildroot}%{python3_sitelib}/%{camel_name}/scripts %py3_shebang_fix %{buildroot}%{python3_sitelib}/shiboken6_generator/scripts %check export LD_LIBRARY_PATH="%{buildroot}%{_libdir}" %py3_check_import PySide6 %py3_check_import shiboken6 %files %license LICENSES/* %{_libdir}/libpyside6*.so.6* %{python3_sitelib}/PySide6/ %{python3_sitearch}/PySide6-%{version}-py%{python3_version}.egg-info/ %files -n python-pyside6-devel %{_datadir}/PySide6/ %{_includedir}/PySide6/ %{_libdir}/libpyside6*.so %{_libdir}/libpyside6remoteobjects.a %{_libdir}/cmake/PySide6* %{_libdir}/pkgconfig/pyside6.pc %files -n pyside6-tools %{_bindir}/pyside* %{_libdir}/qt6/plugins/designer/libPySidePlugin.so %files -n shiboken6 %{_libdir}/cmake/Shiboken6Tools/* %files -n python-shiboken6 %{_libdir}/libshiboken6*.so.6* %{python3_sitelib}/shiboken6/ %{python3_sitearch}/shiboken6-%{version}-py%{python3_version}.egg-info/ %files -n python-shiboken6-devel %{_bindir}/shiboken6* %{_includedir}/shiboken6/ %{_libdir}/cmake/Shiboken6/ %{_libdir}/libshiboken6*.so %{_libdir}/pkgconfig/shiboken6.pc %{python3_sitelib}/shiboken6_generator/ %{python3_sitearch}/shiboken6_generator-%{version}-py%{python3_version}.egg-info/ %changelog %{?autochangelog}