# Template file for 'python3-pyside6'
# NOTE: keep in sync with Qt6
pkgname=python3-pyside6
version=6.10.2
revision=2
build_style=cmake
_llvmver=21
configure_args="-DBUILD_TESTS=OFF -DFORCE_LIMITED_API=no -DNO_QT_TOOLS=yes
 -DNUMPY_INCLUDE_DIR=/${py3_sitelib}/numpy/_core/include
 -DPYTHON_EXECUTABLE=/usr/bin/python3
 -DClang_DIR=${XBPS_CROSS_BASE}/usr/lib/llvm/${_llvmver}/lib/cmake/clang"
hostmakedepends="python3-numpy python3-setuptools qt6-base"
makedepends="libedit-devel libxslt-devel llvm${_llvmver}-devel clang${_llvmver}-devel
 python3-devel qt6-3d-devel libxml2-devel
 qt6-base-private-devel qt6-charts-devel qt6-connectivity-devel
 qt6-declarative-private-devel qt6-location-devel qt6-multimedia-devel
 qt6-networkauth-devel qt6-position-devel qt6-quick3d-devel qt6-datavis3d-devel
 qt6-remoteobjects-devel qt6-scxml-devel qt6-sensors-devel qt6-serialport-devel
 qt6-shadertools-devel qt6-speech-devel qt6-speech-plugin-flite
 qt6-speech-plugin-mock qt6-speech-plugin-speechd qt6-svg-devel qt6-tools-devel
 qt6-graphs-devel qt6-serialbus-devel qt6-httpserver-devel
 qt6-webchannel-devel qt6-websockets-devel"
depends="python3-shiboken6"
short_desc="Python bindings of Qt6-based libraries"
maintainer="chrysos349 <chrysostom349@gmail.com>"
license="LGPL-3.0-only, GPL-2.0-only"
homepage="https://doc.qt.io/qtforpython-6"
distfiles="https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz"
checksum=05eec38bb71bffff8860786e3c0766cc4b86affc72439bd246c54889bdcb7400
provides="py3:pyside6-${version}_1"

build_options="pdf webengine"

subpackages="shiboken6
 python3-pyside6-3d
 python3-pyside6-charts
 python3-pyside6-concurrent
 python3-pyside6-connectivity
 python3-pyside6-datavis3d
 python3-pyside6-dbus
 python3-pyside6-quick-test
 python3-pyside6-declarative
 python3-pyside6-designer
 python3-pyside6-graphs
 python3-pyside6-gui
 python3-pyside6-help
 python3-pyside6-httpserver
 python3-pyside6-location
 python3-pyside6-multimedia
 python3-pyside6-network
 python3-pyside6-networkauth
 python3-pyside6-opengl-widgets
 python3-pyside6-positioning
 python3-pyside6-printsupport
 python3-pyside6-remoteobjects
 python3-pyside6-scxml
 python3-pyside6-sensors
 python3-pyside6-serialport
 python3-pyside6-serialbus
 python3-pyside6-speech
 python3-pyside6-sql
 python3-pyside6-svg
 python3-pyside6-test
 python3-pyside6-ui-tools
 python3-pyside6-webchannel
 python3-pyside6-websockets
 python3-pyside6-widgets
 python3-pyside6-xml
 libpyside6 libpyside6-devel
 libshiboken6 libshiboken6-devel python3-shiboken6"

case "$XBPS_TARGET_MACHINE" in
	armv5*|armv6*) build_options_default="" ;;
	*) build_options_default="pdf" ;;
esac

export LLVM_INSTALL_DIR=${XBPS_CROSS_BASE}/usr/lib/llvm/${_llvmver}
export PYTHONPATH=$PYTHONPATH:${XBPS_BUILDDIR}/${pkgname}-${version}/build/sources

if [ "$XBPS_WORDSIZE$XBPS_WORDSIZE" = "64$XBPS_TARGET_WORDSIZE" ]; then
	build_options_default+=" webengine"
fi
case "$XBPS_TARGET_MACHINE" in
	x86_64*|aarch64*)
		makedepends+=" libomp${_llvmver}-devel"
		;;
esac

if [ "$CROSS_BUILD" ]; then
	hostmakedepends+=" libglvnd-devel shiboken6"

	configure_args+="
	 -DQFP_PYTHON_HOST_PATH=/usr/bin/python3
	 -DQFP_SHIBOKEN_HOST_PATH=/usr
	 -DQT_FORCE_BUILD_TOOLS=ON
	 -DSHIBOKEN_BUILD_TOOLS=ON
	 -DSHIBOKEN_ARCH=$XBPS_CROSS_RUST_TARGET
	 -DSYSROOT_INCLUDE_DIRS=$XBPS_CROSS_BASE/usr/include
	 -DQFP_PYTHON_SITE_PACKAGES=/${py3_sitelib}"
fi

if [ "$build_option_pdf" ]; then
	makedepends+=" qt6-pdf-devel"
	subpackages+=" python3-pyside6-pdf"
fi
if [ "$build_option_webengine" ]; then
	makedepends+=" qt6-webengine-devel qt6-webview-devel"
	subpackages+=" python3-pyside6-webengine"
	subpackages+=" python3-pyside6-webview"
fi

post_patch() {
	if [ "$CROSS_BUILD" ]; then
		# fix pkg-config file on cross
		vsed -i sources/shiboken6/data/shiboken6.pc.in \
			-e "s/Python_EXECUTABLE/QFP_PYTHON_HOST_PATH/"
	fi
}

do_install() {
	DESTDIR=${DESTDIR} cmake -P ${wrksrc}/build/cmake_install.cmake
	# remove extraneous scripts/files
	find "$DESTDIR"/usr/bin -not -name shiboken6 -type f -delete
}

libpyside6_package() {
	short_desc+=" - shared library"
	pkg_install() {
		vmove "usr/lib/libpyside*.so.*"
	}
}

libpyside6-devel_package() {
	depends="libpyside6>=${version}_${revision} python3-pyside6>=${version}_${revision}
	 libshiboken6-devel>=${version}_${revision}"
	short_desc+=" - development files"
	pkg_install() {
		vmove "usr/lib/cmake/PySide*"
		vmove "usr/lib/libpyside*.so"
		vmove "usr/lib/libpyside*.a"
		vmove usr/lib/qt6
		vmove usr/include/PySide6
		vmove usr/lib/pkgconfig/pyside6.pc
		vmove usr/share
	}
}

libshiboken6_package() {
	short_desc="CPython bindings generator for C++ libraries - shared library"
	pkg_install() {
		vmove "usr/lib/libshiboken6.so.*"
	}
}

libshiboken6-devel_package() {
	depends="libshiboken6>=${version}_${revision} python3-shiboken6>=${version}_${revision}"
	short_desc="CPython bindings generator for C++ libraries - development files"
	pkg_install() {
		vmove "usr/lib/cmake/Shiboken*"
		vmove usr/include/shiboken6
		vmove usr/lib/libshiboken6.so
		vmove usr/lib/pkgconfig/shiboken6.pc
	}
}

python3-shiboken6_package() {
	short_desc="Python shiboken6 bindings"
	depends="python3"
	pkg_install() {
		vmove ${py3_sitelib}/shiboken6
	}
}

shiboken6_package() {
	short_desc="CPython bindings generator for C++ libraries"
	depends="python3"
	provides="py3:shiboken6-${version}_1"
	pkg_install() {
		vmove "usr/bin/shiboken*"
		vmove ${py3_sitelib}/shiboken6_generator
		vmove "usr/lib/cmake/Shiboken6Tools"
	}
}

python3-pyside6-3d_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - 3D"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/Qt3D*"
	}
}
python3-pyside6-charts_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Charts"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtCharts.*"
	}
}
python3-pyside6-concurrent_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - Concurrent"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtConcurrent.*"
	}
}
python3-pyside6-connectivity_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - Connectivity"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtBluetooth.*"
		vmove "${py3_sitelib}/PySide6/QtNfc.*"
	}
}
python3-pyside6-datavis3d_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}"
	short_desc+=" - Data Visualization 3D"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtDataVisualization.*"
	}
}
python3-pyside6-dbus_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - DBus"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtDBus.*"
	}
}
python3-pyside6-quick-test_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-declarative>=${version}_${revision}
	 ${sourcepkg}-gui>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - Quick Test"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtQuickTest.*"
	}
}
python3-pyside6-declarative_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-network>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Declarative"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtQml.*"
		vmove "${py3_sitelib}/PySide6/QtQuick*"
	}
}
python3-pyside6-designer_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Designer"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtDesigner.*"
	}
}
python3-pyside6-graphs_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-declarative>=${version}_${revision}
	 ${sourcepkg}-gui>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - Graphs"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtGraphs*"
	}
}
python3-pyside6-gui_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - GUI"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtGui.*"
		vmove "${py3_sitelib}/PySide6/QtOpenGL.*"
	}
}
python3-pyside6-help_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Help"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtHelp.*"
	}
}
python3-pyside6-httpserver_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-concurrent>=${version}_${revision}
	 ${sourcepkg}-network>=${version}_${revision} ${sourcepkg}-websockets>=${version}_${revision}"
	short_desc+=" - HTTP Server"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtHttpServer.*"
	}
}
python3-pyside6-location_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-positioning>=${version}_${revision}"
	short_desc+=" - Location"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtLocation.*"
	}
}
python3-pyside6-multimedia_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-network>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Multimedia"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtMultimedia*"
		vmove "${py3_sitelib}/PySide6/QtSpatialAudio*"
	}
}
python3-pyside6-network_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - Network"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtNetwork.*"
	}
}
python3-pyside6-networkauth_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - NetworkAuth"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtNetworkAuth.*"
	}
}
python3-pyside6-opengl-widgets_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - OpenGL Widgets"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtOpenGLWidgets.*"
	}
}
python3-pyside6-pdf_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-network>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - PDF"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtPdf*"
	}
}
python3-pyside6-positioning_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Positioning"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtPositioning.*"
	}
}
python3-pyside6-printsupport_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - PrintSupport"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtPrintSupport.*"
	}
}
python3-pyside6-remoteobjects_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - RemoteObjects"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtRemoteObjects.*"
	}
}
python3-pyside6-scxml_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}"
	short_desc+=" - Scxml"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtScxml.*"
		vmove "${py3_sitelib}/PySide6/QtStateMachine.*"
	}
}
python3-pyside6-sensors_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - Sensors"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtSensors.*"
	}
}
python3-pyside6-serialport_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - SerialPort"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtSerialPort.*"
	}
}
python3-pyside6-serialbus_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}
	 ${sourcepkg}-serialport>=${version}_${revision}"
	short_desc+=" - Serial Bus"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtSerialBus.*"
	}
}
python3-pyside6-speech_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-multimedia>=${version}_${revision}"
	short_desc+=" - Speech"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtTextToSpeech.*"
	}
}
python3-pyside6-sql_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - SQL"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtSql.*"
	}
}
python3-pyside6-svg_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}
	 ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - SVG"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtSvg*"
	}
}
python3-pyside6-test_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - Test"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtTest.*"
	}
}
python3-pyside6-ui-tools_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - UI Tools"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtUiTools.*"
	}
}
python3-pyside6-webchannel_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - WebChannel"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtWebChannel.*"
	}
}
python3-pyside6-webengine_package() {
	depends="python3-pyside6>=${version}_${revision} ${sourcepkg}-declarative>=${version}_${revision}
	 ${sourcepkg}-gui>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}
	 ${sourcepkg}-printsupport>=${version}_${revision} ${sourcepkg}-webchannel>=${version}_${revision}
	 ${sourcepkg}-widgets>=${version}_${revision}"
	short_desc+=" - WebEngine component"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtWebEngine*"
	}
}
python3-pyside6-websockets_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-network>=${version}_${revision}"
	short_desc+=" - WebSockets"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtWebSockets.*"
	}
}
python3-pyside6-webview_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}"
	short_desc+=" - WebView"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtWebView*"
	}
}
python3-pyside6-widgets_package() {
	depends="${sourcepkg}>=${version}_${revision} ${sourcepkg}-gui>=${version}_${revision}"
	short_desc+=" - Widgets"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtWidgets.*"
	}
}
python3-pyside6-xml_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - Xml"
	pkg_install() {
		vmove "${py3_sitelib}/PySide6/QtXml.*"
	}
}
