# Contributor: Mehdi Chinoune _realname=pyside6 pkgbase=mingw-w64-${_realname} pkgname=(${MINGW_PACKAGE_PREFIX}-shiboken6 ${MINGW_PACKAGE_PREFIX}-${_realname} ${MINGW_PACKAGE_PREFIX}-${_realname}-tools) pkgver=6.10.1 pkgrel=2 pkgdesc="Enables the use of Qt6 APIs in Python applications (mingw-w64)" arch=('any') mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') url="https://doc.qt.io/qtforpython/" msys2_repository_url="https://code.qt.io/cgit/pyside/pyside-setup.git" msys2_references=( 'archlinux: pyside6' 'purl: pkg:pypi/pyside6' ) license=("spdx:LGPL-2.1-or-later") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-clang-tools-extra" "${MINGW_PACKAGE_PREFIX}-llvm" "${MINGW_PACKAGE_PREFIX}-libxslt" "${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-python-sphinx" "${MINGW_PACKAGE_PREFIX}-python-packaging" "${MINGW_PACKAGE_PREFIX}-python-numpy" "${MINGW_PACKAGE_PREFIX}-qt6-3d" "${MINGW_PACKAGE_PREFIX}-qt6-activeqt" "${MINGW_PACKAGE_PREFIX}-qt6-base" "${MINGW_PACKAGE_PREFIX}-qt6-charts" "${MINGW_PACKAGE_PREFIX}-qt6-connectivity" "${MINGW_PACKAGE_PREFIX}-qt6-datavis3d" $([[ ${MSYSTEM} == MINGW64 ]] || echo "${MINGW_PACKAGE_PREFIX}-qt6-graphs") "${MINGW_PACKAGE_PREFIX}-qt6-httpserver" "${MINGW_PACKAGE_PREFIX}-qt6-location" "${MINGW_PACKAGE_PREFIX}-qt6-multimedia" "${MINGW_PACKAGE_PREFIX}-qt6-networkauth" $([[ ${MSYSTEM} == MINGW64 ]] || echo "${MINGW_PACKAGE_PREFIX}-qt6-pdf") "${MINGW_PACKAGE_PREFIX}-qt6-quick3d" "${MINGW_PACKAGE_PREFIX}-qt6-positioning" #"${MINGW_PACKAGE_PREFIX}-qt6-remoteobjects" "${MINGW_PACKAGE_PREFIX}-qt6-scxml" "${MINGW_PACKAGE_PREFIX}-qt6-sensors" "${MINGW_PACKAGE_PREFIX}-qt6-serialbus" "${MINGW_PACKAGE_PREFIX}-qt6-serialport" "${MINGW_PACKAGE_PREFIX}-qt6-speech" "${MINGW_PACKAGE_PREFIX}-qt6-svg" "${MINGW_PACKAGE_PREFIX}-qt6-tools" "${MINGW_PACKAGE_PREFIX}-qt6-webchannel" "${MINGW_PACKAGE_PREFIX}-qt6-websockets" "${MINGW_PACKAGE_PREFIX}-vulkan-headers") _pkgfn=pyside-setup-everywhere-src-${pkgver} source=(https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-${pkgver}-src/${_pkgfn}.tar.xz 001-fix-building-on-mingw.patch 002-fix-install-header-files.patch https://invent.kde.org/qt/pyside/pyside-setup/-/commit/c9d602ab.patch https://invent.kde.org/qt/pyside/pyside-setup/-/commit/05e32847.patch) sha256sums=('fd54f40853d61dfd845dbb40d4f89fbd63df5ed341b3d9a2c77bb5c947a0a838' '5f71b618e0ad687e9282fa4b8c3815beaf69b78666516bfce57cb039822f4ac6' '3bc87409ea3dc41847f1d5d7612fd97931b67f1b40510b465543a8ef5c9764ff' 'ac42367f1ed50fa0fb7aa62cf01dc859dcf662643f8ade53b4755c69f66360ee' '8af013e6ef227673143715ec1f08bfdf022a952950e4b018cc46a956cd9a3594') prepare() { cd "${srcdir}"/${_pkgfn} patch -p1 -i "${srcdir}"/001-fix-building-on-mingw.patch # https://gitlab.archlinux.org/archlinux/packaging/packages/pyside6/-/blob/34a42032/fix-header-install-dir.patch patch -p1 -i "${srcdir}"/002-fix-install-header-files.patch # Revert broken cmake files patch -R -p1 -i "${srcdir}"/c9d602ab.patch patch -R -p1 -i "${srcdir}"/05e32847.patch } build() { mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM} declare -a extra_config if check_option "debug" "n"; then extra_config+=("-DCMAKE_BUILD_TYPE=Release") else extra_config+=("-DCMAKE_BUILD_TYPE=Debug") fi _pyver=$(${MINGW_PREFIX}/bin/python -c "import sys;sys.stdout.write('.'.join(map(str, sys.version_info[:2])))") # Skip RemoteObjects Module # https://github.com/msys2/MINGW-packages/pull/23888#issue-2974803968 MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ -GNinja \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ ${extra_config[@]} \ -DBUILD_TESTS=OFF \ -DFORCE_LIMITED_API=OFF \ -DNO_QT_TOOLS="yes" \ -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python \ -DNUMPY_INCLUDE_DIR=${MINGW_PREFIX}/include/python${_pyver}/numpy/_core/include \ -DSKIP_MODULES="DBus;RemoteObjects" \ ../${_pkgfn} PYTHONPATH="${srcdir}"/build-${MSYSTEM}/sources \ ${MINGW_PREFIX}/bin/cmake --build . } package_shiboken6() { pkgdesc="Generates bindings for C++ libraries using CPython source code (mingw-w64)" depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" "${MINGW_PACKAGE_PREFIX}-clang-libs" "${MINGW_PACKAGE_PREFIX}-qt6-base" "${MINGW_PACKAGE_PREFIX}-libxml2" "${MINGW_PACKAGE_PREFIX}-libxslt") DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM}/sources/shiboken6 install -Dm644 ${_pkgfn}/sources/shiboken6/COPYING \ "$pkgdir"${MINGW_PREFIX}/share/licenses/shiboken6/LICENSE # Fix *.pc files local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) sed -s "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i "${pkgdir}"${MINGW_PREFIX}/lib/pkgconfig/shiboken6.pc # Fix *.cmake files for _f in "${pkgdir}"${MINGW_PREFIX}/lib/cmake/Shiboken6/*.cmake; do sed -e "s|${MINGW_PREFIX}|\$\{_IMPORT_PREFIX\}|g" -i ${_f} done # Install egg-info cd "${srcdir}"/${_pkgfn} ${MINGW_PREFIX}/bin/python setup.py egg_info --build-type=shiboken6 ${MINGW_PREFIX}/bin/python setup.py egg_info --build-type=shiboken6-generator _pythonpath=`${MINGW_PREFIX}/bin/python -c "from sysconfig import get_path; print(get_path('platlib'))"` cp -r shiboken6*.egg-info "$pkgdir"/$(cygpath ${_pythonpath}) } package_pyside6() { pkgdesc="Enables the use of Qt6 APIs in Python applications (mingw-w64)" depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-shiboken6" "${MINGW_PACKAGE_PREFIX}-qt6-base" "${MINGW_PACKAGE_PREFIX}-qt6-declarative") optdepends=("${MINGW_PACKAGE_PREFIX}-qt6-3d" "${MINGW_PACKAGE_PREFIX}-qt6-activeqt" "${MINGW_PACKAGE_PREFIX}-qt6-charts" "${MINGW_PACKAGE_PREFIX}-qt6-connectivity" "${MINGW_PACKAGE_PREFIX}-qt6-datavis3d" "${MINGW_PACKAGE_PREFIX}-qt6-graphs" "${MINGW_PACKAGE_PREFIX}-qt6-httpserver" "${MINGW_PACKAGE_PREFIX}-qt6-location" "${MINGW_PACKAGE_PREFIX}-qt6-multimedia" "${MINGW_PACKAGE_PREFIX}-qt6-networkauth" "${MINGW_PACKAGE_PREFIX}-qt6-pdf" "${MINGW_PACKAGE_PREFIX}-qt6-quick3d" "${MINGW_PACKAGE_PREFIX}-qt6-positioning" #"${MINGW_PACKAGE_PREFIX}-qt6-remoteobjects" "${MINGW_PACKAGE_PREFIX}-qt6-scxml" "${MINGW_PACKAGE_PREFIX}-qt6-sensors" "${MINGW_PACKAGE_PREFIX}-qt6-serialbus" "${MINGW_PACKAGE_PREFIX}-qt6-serialport" "${MINGW_PACKAGE_PREFIX}-qt6-speech" "${MINGW_PACKAGE_PREFIX}-qt6-svg" "${MINGW_PACKAGE_PREFIX}-qt6-tools" "${MINGW_PACKAGE_PREFIX}-qt6-webchannel" "${MINGW_PACKAGE_PREFIX}-qt6-websockets") DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM}/sources/pyside6 install -Dm644 ${_pkgfn}/sources/pyside6/COPYING \ "$pkgdir"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE _pythonpath=`${MINGW_PREFIX}/bin/python -c "from sysconfig import get_path; print(get_path('platlib'))"` # Install egg-info cd "${srcdir}"/${_pkgfn} ${MINGW_PREFIX}/bin/python setup.py egg_info --build-type=pyside6 cp -r PySide6.egg-info "$pkgdir"/$(cygpath ${_pythonpath}) # Install pyi files install -Dm644 "${srcdir}"/build-${MSYSTEM}/sources/pyside6/PySide6/*.pyi -t "$pkgdir"/$(cygpath ${_pythonpath})/PySide6 } package_pyside6-tools() { pkgdesc="Tools for PySide6 (mingw-w64)" depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-pyside6") DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM}/sources/pyside-tools } # template start; name=mingw-w64-splitpkg-wrappers; version=1.0; # vim: set ft=bash : # generate wrappers for _name in "${pkgname[@]}"; do _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}" _func="$(declare -f "${_short}")" eval "${_func/#${_short}/package_${_name}}" done # template end;