diff --git a/0001-Revert-Modify-headers-installation-for-CMake-builds.patch b/0001-Revert-Modify-headers-installation-for-CMake-builds.patch new file mode 100644 index 000000000..c7d42e7a9 --- /dev/null +++ b/0001-Revert-Modify-headers-installation-for-CMake-builds.patch @@ -0,0 +1,258 @@ +From adbe7308629c10aa40b2418d829ba737d2b4708d Mon Sep 17 00:00:00 2001 +From: Yao Zi +Date: Wed, 18 Mar 2026 14:29:23 +0000 +Subject: [PATCH] Revert "Modify headers installation for CMake builds" + +This reverts commit 77c37b1937c9500a2af5a1bed2366058de74d1b7. +--- + build_scripts/platforms/unix.py | 8 ++++---- + build_scripts/platforms/windows_desktop.py | 6 +++--- + build_scripts/wheel_files.py | 4 ---- + sources/pyside6/PySide6/CMakeLists.txt | 2 +- + sources/pyside6/PySide6/QtCore/CMakeLists.txt | 2 +- + sources/pyside6/PySide6/QtDBus/CMakeLists.txt | 2 +- + .../pyside6/PySide6/QtDataVisualization/CMakeLists.txt | 2 +- + sources/pyside6/PySide6/QtDesigner/CMakeLists.txt | 2 +- + sources/pyside6/PySide6/QtGraphs/CMakeLists.txt | 2 +- + sources/pyside6/PySide6/QtGui/CMakeLists.txt | 2 +- + sources/pyside6/cmake/Macros/PySideModules.cmake | 2 +- + sources/pyside6/libpyside/CMakeLists.txt | 4 ++-- + sources/pyside6/libpysideqml/CMakeLists.txt | 3 ++- + sources/pyside6/libpysideremoteobjects/CMakeLists.txt | 2 +- + sources/shiboken6/data/shiboken6.pc.in | 2 +- + sources/shiboken6/libshiboken/CMakeLists.txt | 4 ++-- + 16 files changed, 23 insertions(+), 26 deletions(-) + +diff --git a/build_scripts/platforms/unix.py b/build_scripts/platforms/unix.py +index 59c63fda3b84..c3844899b793 100644 +--- a/build_scripts/platforms/unix.py ++++ b/build_scripts/platforms/unix.py +@@ -108,11 +108,11 @@ def prepare_packages_posix(pyside_build, _vars, cross_build=False): + "{st_build_dir}/{st_package_name}/scripts/shiboken_tool.py", + force=False, _vars=_vars) + +- if config.is_internal_shiboken_module_build() or config.is_internal_pyside_build(): +- # /{cmake_package_name}/include/* -> /{st_package_name}/include ++ if config.is_internal_shiboken_generator_build() or config.is_internal_pyside_build(): ++ # /include/* -> /{st_package_name}/include + copydir( +- "{install_dir}/{cmake_package_name}/include", +- destination_dir / "include", ++ "{install_dir}/include/{cmake_package_name}", ++ "{st_build_dir}/{st_package_name}/include", + _vars=_vars) + + if config.is_internal_pyside_build(): +diff --git a/build_scripts/platforms/windows_desktop.py b/build_scripts/platforms/windows_desktop.py +index e023ff003f07..7fa7e5e93bae 100644 +--- a/build_scripts/platforms/windows_desktop.py ++++ b/build_scripts/platforms/windows_desktop.py +@@ -94,10 +94,10 @@ def prepare_packages_win32(pyside_build, _vars): + _filter=pdbs, + recursive=False, _vars=_vars) + +- if config.is_internal_shiboken_module_build() or config.is_internal_pyside_build(): +- # /{cmake_package_name}/include/* -> /{st_package_name}/include ++ if config.is_internal_shiboken_generator_build() or config.is_internal_pyside_build(): ++ # /include/* -> /{st_package_name}/include + copydir( +- "{install_dir}/{cmake_package_name}/include", ++ "{install_dir}/include/{cmake_package_name}", + destination_dir / "include", + _vars=_vars) + +diff --git a/build_scripts/wheel_files.py b/build_scripts/wheel_files.py +index 187fcac56aa9..22e5292d61be 100644 +--- a/build_scripts/wheel_files.py ++++ b/build_scripts/wheel_files.py +@@ -318,10 +318,6 @@ def module_QtCore() -> ModuleData: + data.qtlib.append("libicuuc*") + data.qtlib.append("libicuio*") + +- # add the include folders for libpyside binaries +- # this is useful for downstream cmake projects like QtBridges +- data.include.append("pyside6/*.h") +- + return data + + +diff --git a/sources/pyside6/PySide6/CMakeLists.txt b/sources/pyside6/PySide6/CMakeLists.txt +index c1934d9ca7aa..ccfa8430f12e 100644 +--- a/sources/pyside6/PySide6/CMakeLists.txt ++++ b/sources/pyside6/PySide6/CMakeLists.txt +@@ -119,7 +119,7 @@ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/widgets_common.xml + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/datavisualization_common.xml + DESTINATION share/PySide6${pyside_SUFFIX}/typesystems) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pyside6_global.h +- DESTINATION ${BINDING_NAME}${pyside6_SUFFIX}/include) ++ DESTINATION include/${BINDING_NAME}${pyside6_SUFFIX}) + + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/QtAsyncio" + DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}") +diff --git a/sources/pyside6/PySide6/QtCore/CMakeLists.txt b/sources/pyside6/PySide6/QtCore/CMakeLists.txt +index 2f49b610e7ff..6359ff491ffd 100644 +--- a/sources/pyside6/PySide6/QtCore/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtCore/CMakeLists.txt +@@ -306,4 +306,4 @@ if (APPLE) + endif() + + install(FILES ${pyside6_SOURCE_DIR}/qtcorehelper.h ${pyside6_SOURCE_DIR}/qiopipe.h +- DESTINATION PySide6/include/QtCore/) ++ DESTINATION include/PySide6/QtCore/) +diff --git a/sources/pyside6/PySide6/QtDBus/CMakeLists.txt b/sources/pyside6/PySide6/QtDBus/CMakeLists.txt +index 49e86d121738..5ee8dc67c08d 100644 +--- a/sources/pyside6/PySide6/QtDBus/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtDBus/CMakeLists.txt +@@ -51,4 +51,4 @@ create_pyside_module(NAME QtDBus + TYPESYSTEM_PATH QtDBus_SOURCE_DIR + SOURCES QtDBus_SRC) + +-install(FILES ${pyside6_SOURCE_DIR}/qtdbushelper.h DESTINATION PySide6/include/QtDBus) ++install(FILES ${pyside6_SOURCE_DIR}/qtdbushelper.h DESTINATION include/PySide6/QtDBus) +diff --git a/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt b/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt +index 424799b225a7..1276b424f6fb 100644 +--- a/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt +@@ -68,4 +68,4 @@ create_pyside_module(NAME QtDataVisualization + STATIC_SOURCES QtDataVisualization_src) + + install(FILES ${pyside6_SOURCE_DIR}/qtdatavisualization_helper.h +- DESTINATION PySide6/include/QtDataVisualization) ++ DESTINATION include/PySide6/QtDataVisualization) +diff --git a/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt b/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt +index 570ed0f0b154..e91532b87b22 100644 +--- a/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt +@@ -67,4 +67,4 @@ create_pyside_module(NAME QtDesigner + STATIC_SOURCES QtDesigner_static_src + TYPESYSTEM_NAME ${QtDesigner_BINARY_DIR}/typesystem_designer.xml) + +-install(FILES ${pyside6_SOURCE_DIR}/qpydesignerextensions.h DESTINATION PySide6/include/QtDesigner) ++install(FILES ${pyside6_SOURCE_DIR}/qpydesignerextensions.h DESTINATION include/PySide6/QtDesigner) +diff --git a/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt b/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt +index f416078780a0..29a7b2544ee8 100644 +--- a/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt +@@ -96,4 +96,4 @@ create_pyside_module(NAME QtGraphs + DROPPED_ENTRIES QtGraphs_DROPPED_ENTRIES) + + install(FILES ${pyside6_SOURCE_DIR}/qtgraphs_helper.h +- DESTINATION PySide6/include/QtGraphs) ++ DESTINATION include/PySide6/QtGraphs) +diff --git a/sources/pyside6/PySide6/QtGui/CMakeLists.txt b/sources/pyside6/PySide6/QtGui/CMakeLists.txt +index b9e842912b33..1d2d411a610b 100644 +--- a/sources/pyside6/PySide6/QtGui/CMakeLists.txt ++++ b/sources/pyside6/PySide6/QtGui/CMakeLists.txt +@@ -366,4 +366,4 @@ create_pyside_module(NAME QtGui + + install(FILES ${pyside6_SOURCE_DIR}/qpytextobject.h + ${pyside6_SOURCE_DIR}/qtguihelper.h +- DESTINATION PySide6/include/QtGui/) ++ DESTINATION include/PySide6/QtGui/) +diff --git a/sources/pyside6/cmake/Macros/PySideModules.cmake b/sources/pyside6/cmake/Macros/PySideModules.cmake +index 86791f4c7ae0..7bb7714cc284 100644 +--- a/sources/pyside6/cmake/Macros/PySideModules.cmake ++++ b/sources/pyside6/cmake/Macros/PySideModules.cmake +@@ -378,7 +378,7 @@ macro(create_pyside_module) + + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide6/${module_NAME}/pyside6_${lower_module_name}_python.h +- DESTINATION PySide6${pyside6_SUFFIX}/include/${module_NAME}/) ++ DESTINATION include/PySide6${pyside6_SUFFIX}/${module_NAME}/) + file(GLOB typesystem_files ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_*.xml ${typesystem_path}) + + # Copy typesystem files and remove module names from the element +diff --git a/sources/pyside6/libpyside/CMakeLists.txt b/sources/pyside6/libpyside/CMakeLists.txt +index 75c232874488..f8b25a42ea47 100644 +--- a/sources/pyside6/libpyside/CMakeLists.txt ++++ b/sources/pyside6/libpyside/CMakeLists.txt +@@ -101,7 +101,7 @@ append_size_optimization_flags(pyside6) + + target_include_directories(pyside6 PUBLIC + $ +- $ ++ $ + ) + + target_compile_definitions(pyside6 PRIVATE -DQT_LEAN_HEADERS=1 -DQT_NO_KEYWORDS=1) +@@ -177,7 +177,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide6ConfigVersion.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/PySide6ConfigVersion.cmake" @ONLY) + + install(FILES ${libpyside_HEADERS} +- DESTINATION ${BINDING_NAME}${pyside6_SUFFIX}/include) ++ DESTINATION include/${BINDING_NAME}${pyside6_SUFFIX}) + + # build-time installation + install(TARGETS pyside6 EXPORT PySide6Targets +diff --git a/sources/pyside6/libpysideqml/CMakeLists.txt b/sources/pyside6/libpysideqml/CMakeLists.txt +index 1430334c81a5..4f58b9a24fa0 100644 +--- a/sources/pyside6/libpysideqml/CMakeLists.txt ++++ b/sources/pyside6/libpysideqml/CMakeLists.txt +@@ -45,6 +45,7 @@ add_library(PySide6::pyside6qml ALIAS pyside6qml) + + target_include_directories(pyside6qml PUBLIC + $ ++ $ + ) + + target_compile_definitions(pyside6qml PRIVATE -DQT_LEAN_HEADERS=1 -DQT_NO_KEYWORDS=1) +@@ -84,7 +85,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D QT_NO_CAST_FROM_ASCII -D QT_NO_CAST_T + qfp_strip_library("pyside6qml") + + install(FILES ${libpysideqml_HEADERS} +- DESTINATION ${BINDING_NAME}${pyside6qml_SUFFIX}/include) ++ DESTINATION include/${BINDING_NAME}${pyside6qml_SUFFIX}) + + #built-time installation + install(TARGETS pyside6qml EXPORT PySide6Targets +diff --git a/sources/pyside6/libpysideremoteobjects/CMakeLists.txt b/sources/pyside6/libpysideremoteobjects/CMakeLists.txt +index caaadc241d95..4669fb677075 100644 +--- a/sources/pyside6/libpysideremoteobjects/CMakeLists.txt ++++ b/sources/pyside6/libpysideremoteobjects/CMakeLists.txt +@@ -80,7 +80,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D QT_NO_CAST_FROM_ASCII -D QT_NO_CAST_T + # + + install(FILES ${libpysideremoteobjects_HEADERS} +- DESTINATION ${BINDING_NAME}${pyside6remoteobjects_SUFFIX}/include) ++ DESTINATION include/${BINDING_NAME}${pyside6remoteobjects_SUFFIX}) + + install(TARGETS pyside6remoteobjects EXPORT PySide6RemoteObjectsTargets + LIBRARY DESTINATION "${LIB_INSTALL_DIR}" +diff --git a/sources/shiboken6/data/shiboken6.pc.in b/sources/shiboken6/data/shiboken6.pc.in +index 917b706a3def..a82d23168958 100644 +--- a/sources/shiboken6/data/shiboken6.pc.in ++++ b/sources/shiboken6/data/shiboken6.pc.in +@@ -1,7 +1,7 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=@CMAKE_INSTALL_PREFIX@ + libdir=@CMAKE_INSTALL_PREFIX@/@LIB_INSTALL_DIR@ +-includedir=@CMAKE_INSTALL_PREFIX@/shiboken6/include ++includedir=@CMAKE_INSTALL_PREFIX@/include/shiboken6 + python_interpreter=@Python_EXECUTABLE@ + python_include_dir=@Python_INCLUDE_DIRS@ + +diff --git a/sources/shiboken6/libshiboken/CMakeLists.txt b/sources/shiboken6/libshiboken/CMakeLists.txt +index 61366324a307..973d14b6b2f7 100644 +--- a/sources/shiboken6/libshiboken/CMakeLists.txt ++++ b/sources/shiboken6/libshiboken/CMakeLists.txt +@@ -111,7 +111,7 @@ add_library(Shiboken6::libshiboken ALIAS libshiboken) + target_include_directories(libshiboken PUBLIC + $ + $ +- $ ++ $ + ) + + if (NOT "${NUMPY_INCLUDE_DIR}" STREQUAL "") +@@ -196,7 +196,7 @@ install(FILES + signature.h + signature_p.h + +- DESTINATION shiboken6${shiboken6_SUFFIX}/include) ++ DESTINATION include/shiboken6${shiboken6_SUFFIX}) + install(TARGETS libshiboken EXPORT Shiboken6Targets + LIBRARY DESTINATION "${LIB_INSTALL_DIR}" + ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" +-- +2.53.0 + diff --git a/0002-Revert-PySide6-Cleanup-CMake-configuration-files.patch b/0002-Revert-PySide6-Cleanup-CMake-configuration-files.patch new file mode 100644 index 000000000..b641ff94f --- /dev/null +++ b/0002-Revert-PySide6-Cleanup-CMake-configuration-files.patch @@ -0,0 +1,111 @@ +From 264c17cc0bc0ea0b283dbca7710ca47872705a6b Mon Sep 17 00:00:00 2001 +From: Yao Zi +Date: Wed, 18 Mar 2026 16:29:40 +0000 +Subject: [PATCH] Revert "PySide6: Cleanup CMake configuration files" + +This reverts commit 05e328476f2d6ef8a0f3f44aca1e5b1cdb7499fc. +--- + sources/pyside6/cmake/PySideSetup.cmake | 1 - + sources/pyside6/libpyside/CMakeLists.txt | 37 +++++++------------ + .../libpyside/PySide6Config-spec.cmake.in | 4 -- + 3 files changed, 14 insertions(+), 28 deletions(-) + +diff --git a/sources/pyside6/cmake/PySideSetup.cmake b/sources/pyside6/cmake/PySideSetup.cmake +index 72d6a1ccf6f4..71c8206465d0 100644 +--- a/sources/pyside6/cmake/PySideSetup.cmake ++++ b/sources/pyside6/cmake/PySideSetup.cmake +@@ -52,7 +52,6 @@ set(BINDING_API_MINOR_VERSION "${pyside_MINOR_VERSION}") + set(BINDING_API_MICRO_VERSION "${pyside_MICRO_VERSION}") + set(BINDING_API_PRE_RELEASE_VERSION_TYPE "${pyside_PRE_RELEASE_VERSION_TYPE}") + set(BINDING_API_PRE_RELEASE_VERSION "${pyside_PRE_RELEASE_VERSION}") +-set(pyside6_library_so_version "${SHIBOKEN_SO_VERSION}") + + # Detect if the Python interpreter is actually PyPy + execute_process( +diff --git a/sources/pyside6/libpyside/CMakeLists.txt b/sources/pyside6/libpyside/CMakeLists.txt +index f8b25a42ea47..15ab474946b9 100644 +--- a/sources/pyside6/libpyside/CMakeLists.txt ++++ b/sources/pyside6/libpyside/CMakeLists.txt +@@ -146,29 +146,28 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pyside6.pc.in" + include(CMakePackageConfigHelpers) + + # Build-tree / super project package config file. +-set(PYSIDE_PYTHONPATH "${PYTHON_SITE_PACKAGES}/PySide6") +-set(PYSIDE_TYPESYSTEMS "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/typesystems") +-set(PYSIDE_GLUE "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/glue") ++set(PYSIDE_PYTHONPATH "${pysidebindings_BINARY_DIR}/PySide6") ++set(PYSIDE_TYPESYSTEMS "${pysidebindings_SOURCE_DIR}/PySide6/templates/") ++set(PYSIDE_GLUE "${pysidebindings_SOURCE_DIR}/PySide6/glue") + + configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config-spec.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" +- INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" +- PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE +- INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" ++ INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" ++ PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE ++ INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + ) + +-# Install-tree / wheel configuration +-set(PYSIDE_PYTHONPATH "") +-set(PYSIDE_TYPESYSTEMS "typesystems") +-set(PYSIDE_GLUE "glue") +-set(PYSIDE_SOVERSION "${pyside6_library_so_version}") ++set(PYSIDE_PYTHONPATH "${PYTHON_SITE_PACKAGES}/PySide6") ++set(PYSIDE_TYPESYSTEMS "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/typesystems") ++set(PYSIDE_GLUE "${CMAKE_INSTALL_PREFIX}/share/PySide6${pyside6_SUFFIX}/glue") + ++# Install-tree / relocatable package config file. + configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config-spec.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/install/PySide6Config${SHIBOKEN_PYTHON_CONFIG_SUFFIX}.cmake" +- INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6" +- PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE ++ INSTALL_DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6" ++ PATH_VARS PYSIDE_PYTHONPATH PYSIDE_TYPESYSTEMS PYSIDE_GLUE + ) + + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide6Config.cmake.in" +@@ -179,20 +178,12 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/PySide6ConfigVersion.cmake.in" + install(FILES ${libpyside_HEADERS} + DESTINATION include/${BINDING_NAME}${pyside6_SUFFIX}) + +-# build-time installation + install(TARGETS pyside6 EXPORT PySide6Targets + LIBRARY DESTINATION "${LIB_INSTALL_DIR}" + ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" + RUNTIME DESTINATION bin) +- +-# wheel installation +-set_target_properties(pyside6 PROPERTIES +- VERSION ${PYSIDE_SOVERSION}) +- +-install(TARGETS pyside6 EXPORT PySide6WheelTargets +- LIBRARY DESTINATION "PySide6" +- ARCHIVE DESTINATION "PySide6" +- RUNTIME DESTINATION "PySide6") ++install(EXPORT PySide6Targets NAMESPACE PySide6:: ++ DESTINATION "${LIB_INSTALL_DIR}/cmake/PySide6") + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pyside6${pyside6_SUFFIX}.pc" + DESTINATION "${LIB_INSTALL_DIR}/pkgconfig") +diff --git a/sources/pyside6/libpyside/PySide6Config-spec.cmake.in b/sources/pyside6/libpyside/PySide6Config-spec.cmake.in +index f9e9a4900e4d..fd3de1e759c1 100644 +--- a/sources/pyside6/libpyside/PySide6Config-spec.cmake.in ++++ b/sources/pyside6/libpyside/PySide6Config-spec.cmake.in +@@ -10,10 +10,6 @@ if (NOT TARGET PySide6::pyside6) + include("${CMAKE_CURRENT_LIST_DIR}/PySide6Targets.cmake") + endif() + +-# set static variables +-set(PYSIDE_PYTHON_CONFIG_SUFFIX "@PYTHON_CONFIG_SUFFIX@") +-set(PYSIDE_SO_VERSION "@pyside6_library_so_version@") +- + # Set relocatable variables. + set_and_check(PYSIDE_PYTHONPATH "@PACKAGE_PYSIDE_PYTHONPATH@") + set_and_check(PYSIDE_TYPESYSTEMS "@PACKAGE_PYSIDE_TYPESYSTEMS@") +-- +2.53.0 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000..33309925a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,148 @@ +# Maintainer: Yao Zi + +pkgbase=pyside6 +pkgname=(pyside6 pyside6-tools shiboken6) +pkgver=6.10.0 +pkgrel=1 +url='https://doc.qt.io/qtforpython-6/' +arch=(x86_64 aarch64 riscv64 loongarch64) +license=('(GPL-2.0-only AND (GPL-2.0-only OR GPL-3.0-or-later) AND GPL-3.0-only WITH QT-GPL-exception-1.0) OR LGPL-3.0-only') +makedepends=(python-numpy + python-setuptools + qt6-3d + qt6-charts + qt6-connectivity + qt6-declarative-devel + qt6-location + qt6-multimedia + qt6-networkauth + qt6-positioning + qt6-quick3d + qt6-remoteobjects + qt6-remoteobjects-devel + qt6-sensors + qt6-serialport + qt6-shadertools + qt6-speech + qt6-svg + qt6-tools + qt6-webchannel + qt6-websockets + llvm-devel + ninja) +# 0001: Should be upstreamed, revert upstream commit that causes headers to be +# installed in /usr/PySide +# 0002: Should be upstreamed, fix CMake configuration file which sets +# typesystem directory to /usr/typesystem, even though they're installed +# in /usr/share/PySide6/typesystems. +source=("https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-6.10.0-src/pyside-setup-everywhere-src-$pkgver.tar.xz" + 0001-Revert-Modify-headers-installation-for-CMake-builds.patch + 0002-Revert-PySide6-Cleanup-CMake-configuration-files.patch) +sha256sums=('f6e18dc880f59fb6c5c37f9f408971d65642dfc7510a15d794b4a3a8e15fcecc' + 'd16b1f75b77353b33134ac6ae9a6cc41e1692fb498bcd144ec2114b4732b9acf' + 'c3304a522202915a220efc7835ed327d16eaf0615e4c0f956513882a2cef123f') +_srcdir="pyside-setup-everywhere-src-$pkgver" + +prepare() { + _patch_ "$_srcdir" +} + +build() { + local _pylibs="$(pkg-config --libs python3-embed)" + export PATH="/usr/lib/qt6/bin:$PATH" + + # It's officially recommended to build the packages through setup.py, + # however, it would vendor too many libraries when built in this way. + # + # The CMakeLists.txt compares NO_QT_TOOLS/FORCE_LIMITED_API with + # literal string "yes"/"no", thus we must inconsistently pass those + # strings. + CFLAGS+=" -D_LARGEFILE64_SOURCE" CXXFLAGS+=" -D_LARGEFILE64_SOURCE" + cmake -S "$_srcdir" -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DSHIBOKEN_PYTHON_LIBRARIES="$_pylibs" \ + -DBUILD_TESTS=OFF \ + -DNO_QT_TOOLS=yes \ + -DFORCE_LIMITED_API=no + + PYTHONPATH="$PWD/build/sources" cmake --build build +} + +_install_egg_info() { + local _pythonpath="$(python -c "from sysconfig import get_path; print(get_path('platlib'))")" + + cp -rf "$1" "$pkgdir/$_pythonpath" +} + +_do_install_license() { + _licenses=(GPL-2.0-only.txt + GPL-3.0-only.txt + LGPL-3.0-only.txt + Qt-GPL-exception-1.0.txt) + for license in "${_licenses[@]}"; do + _install_license_ "$srcdir/$_srcdir/LICENSES/$license" \ + "$license" + done +} + +package_pyside6() { + pkgdesc='Python binding for Qt 6.0+ framework' + depends=(musl llvm-libs python qt6-base qt6-declarative shiboken6 + python) + # Dependencies for Python binding shared libraries. + optdepends=(qt6-3d + qt6-charts + qt6-connectivity + qt6-location + qt6-multimedia + qt6-networkauth + qt6-positioning + qt6-quick3d + qt6-remoteobjects + qt6-remoteobjects-devel + qt6-sensors + qt6-serialport + qt6-shadertools + qt6-speech + qt6-svg + qt6-tools + qt6-webchannel + qt6-websockets) + + DESTDIR="$pkgdir" cmake --install build/sources/pyside6 + + cd "$_srcdir" + PATH="/usr/lib/qt6/bin:$PATH" python setup.py egg_info \ + --build-type pyside6 + _install_egg_info PySide6.egg-info + _do_install_license +} + +package_pyside6-tools() { + pkgdesc='Tools for PySide 6' + depends=(pyside6 python) + + DESTDIR="$pkgdir" cmake --install build/sources/pyside-tools + _do_install_license +} + +package_shiboken6() { + pkgdesc='Generate CPython bindings from C/C++ headers' + depends=(qt6-base clang libxml2 libxslt llvm-libs musl python) + + DESTDIR="$pkgdir" cmake --install build/sources/shiboken6 + + cd "$_srcdir" + PATH="/usr/lib/qt6/bin:$PATH" python setup.py egg_info \ + --build-type shiboken6 + PATH="/usr/lib/qt6/bin:$PATH" python setup.py egg_info \ + --build-type shiboken6-generator + _install_egg_info shiboken6.egg-info + _install_egg_info shiboken6_generator.egg-info + + _do_install_license +}