# Contributor: Luca Weiss <luca@lucaweiss.eu>
# Maintainer:
pkgname=pyside6
pkgver=6.8.0.2
pkgrel=4
_llvmver=19
pkgdesc="Enables the use of Qt6 APIs in Python applications"
url="https://doc.qt.io/qtforpython-6/"
# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
license="LGPL-3.0-only AND GPL-2.0-only"
depends_dev="py3-pyside6"
makedepends="
	bash
	clang$_llvmver-dev
	clang$_llvmver-extra-tools
	clang$_llvmver-static
	cmake
	llvm$_llvmver-dev
	llvm$_llvmver-gtest
	llvm$_llvmver-static
	py3-numpy-dev
	py3-setuptools
	py3-wheel
	python3-dev
	qt6-qtbase-dev
	qt6-qtcharts-dev
	qt6-qtconnectivity-dev
	qt6-qtdatavis3d-dev
	qt6-qtdeclarative-dev
	qt6-qtdeclarative-private-dev
	qt6-qthttpserver-dev
	qt6-qtmultimedia-dev
	qt6-qtnetworkauth-dev
	qt6-qtpositioning-dev
	qt6-qtquick3d-dev
	qt6-qtremoteobjects-dev
	qt6-qtscxml-dev
	qt6-qtsensors-dev
	qt6-qtserialport-dev
	qt6-qtspeech-dev
	qt6-qtsvg-dev
	qt6-qttools-dev
	qt6-qtwebchannel-dev
	qt6-qtwebsockets-dev
	samurai
	"
subpackages="
	py3-pyside6:pyside
	py3-shiboken6:pyshiboken
	$pkgname-dev
	"
source="$pkgver-$pkgname.tar.xz::https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-$pkgver-src/pyside-setup-everywhere-src-${pkgver%.*}.tar.xz
	fix-signature-handling-32-bit.patch
	"
builddir="$srcdir/pyside-setup-everywhere-src-${pkgver%.*}"
options="!check" # Tests fail

case "$CARCH" in
	armhf|ppc64le|s390x|riscv64) makedepends="$makedepends qt6-qt3d-dev" ;;
	x86) makedepends="$makedepends qt6-qtwebview-dev" ;;
	*) makedepends="$makedepends qt6-qt3d-dev qt6-qtwebview-dev" ;;
esac

build() {
	export LLVM_INSTALL_DIR=/usr/lib/llvm$_llvmver
	CFLAGS="$CFLAGS $(pkg-config --cflags python3-embed) -flto=auto" \
	CXXFLAGS="$CXXFLAGS -I/usr/lib/llvm$_llvmver/include -flto=auto" \
	cmake -B build -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_SKIP_RPATH=ON \
		-DBUILD_SHARED_LIBS=True \
		-DSHIBOKEN_PYTHON_LIBRARIES="$(pkg-config --libs python3-embed)" \
		-DBUILD_TESTS=OFF

	PYTHONPATH="$PWD/build/sources" \
	cmake --build build
}

package() {
	DESTDIR="$pkgdir" cmake --install build/sources/pyside6
	DESTDIR="$pkgdir" cmake --install build/sources/shiboken6

	# Install egg info
	export PATH="/usr/lib/qt6/bin:$PATH"
	local pythonpath="$(python3 -c "from sysconfig import get_path; print(get_path('platlib'))")"
	python3 setup.py egg_info --build-type=pyside6
	python3 setup.py egg_info --build-type=shiboken6
	python3 setup.py egg_info --build-type=shiboken6-generator
	cp -r PySide6.egg-info "$pkgdir/$pythonpath"
	cp -r shiboken6*.egg-info "$pkgdir/$pythonpath"
}

pyshiboken() {
	pkgdesc="qt shiboken6 python module"

	amove usr/bin # shiboken6 build tool
	amove usr/lib/libshiboken6* # python object
	amove usr/lib/python3.*/site-packages/shiboken6*
}

pyside() {
	pkgdesc="qt pyside6 python module"

	amove usr/lib/libpyside6* # python object
	amove usr/lib/python3.*/site-packages/PySide6*
	amove usr/share/PySide6
}

sha512sums="
a14d08f678e895571b60b7849ad4ce10eed846e16074433257cc28d6d99a500f8dcb8cc6515be2a2adcbb25a9b6a3eb40ac73cf816b1c0a178657103ee0cd6b9  6.8.0.2-pyside6.tar.xz
3d80c05946b551c81077aac91d84f5b65dbe0d58b857dd4d417ce41307e812d12f5d275d3d71b77600771df316d0a15f1b231631f22c6225ff10ed5a2bea1076  fix-signature-handling-32-bit.patch
"
