SUMMARY="Python v2 and v3 bindings for Qt application framework"
DESCRIPTION="PyQt combines all the advantages of Qt and Python. A programmer \
has all the power of Qt, but is able to exploit it with the \
simplicity of Python."
HOMEPAGE="http://www.riverbankcomputing.com/software/pyqt/"
COPYRIGHT="2015-2019 Riverbank Computing Limited"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://pypi.python.org/packages/source/P/PyQt5/PyQt5-$portVersion.tar.gz"
CHECKSUM_SHA256="80343bcab95ffba619f2ed2467fd828ffeb0a251ad7225be5fc06dcc333af452"
SOURCE_DIR="PyQt5-$portVersion"
PYTHON3_VERSION="3.8"

ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"

commandSuffix=$secondaryArchSuffix
commandBinDir=$binDir
if [ "$targetArchitecture" = x86_gcc2 ]; then
	commandSuffix=
	commandBinDir=$prefix/bin
fi

portVersionCompat="$portVersion compat >= ${portVersion%%.*}"
qtVersion="${portVersion%.*}"

PROVIDES="
	pyqt5$secondaryArchSuffix = $portVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	lib:libQt5Bluetooth$secondaryArchSuffix
	lib:libQt5Core$secondaryArchSuffix
	lib:libQt5Designer$secondaryArchSuffix
	lib:libQt5DBus$secondaryArchSuffix
	lib:libQt5Gui$secondaryArchSuffix
	lib:libQt5Help$secondaryArchSuffix
	lib:libQt5Location$secondaryArchSuffix
	lib:libQt5Multimedia$secondaryArchSuffix
	lib:libQt5MultimediaWidgets$secondaryArchSuffix
	lib:libQt5Network$secondaryArchSuffix
	lib:libQt5Nfc$secondaryArchSuffix
	lib:libQt5OpenGL$secondaryArchSuffix
	lib:libQt5PrintSupport$secondaryArchSuffix
	lib:libQt5Positioning$secondaryArchSuffix
	lib:libQt5Qml$secondaryArchSuffix
	lib:libQt5Quick$secondaryArchSuffix
	lib:libQt5QuickWidgets$secondaryArchSuffix
	lib:libQt5Sensors$secondaryArchSuffix
	lib:libQt5SerialPort$secondaryArchSuffix
	lib:libQt5Sql$secondaryArchSuffix
	lib:libQt5Svg$secondaryArchSuffix
	lib:libQt5Test$secondaryArchSuffix
	lib:libQt5WebChannel$secondaryArchSuffix
	lib:libQt5WebKit$secondaryArchSuffix
	lib:libQt5WebKitWidgets$secondaryArchSuffix
	lib:libQt5WebSockets$secondaryArchSuffix
	lib:libQt5Widgets$secondaryArchSuffix
	lib:libQt5Xml$secondaryArchSuffix
	lib:libQt5XmlPatterns$secondaryArchSuffix
	lib:libGL${secondaryArchSuffix}
	"
REPLACES="
	pyqt$secondaryArchSuffix
	"
PROVIDES_python38="
	pyqt5${secondaryArchSuffix}_python38 = $portVersionCompat
	cmd:pylupdate5$commandSuffix
	cmd:pyrcc5$commandSuffix
	cmd:pyuic5$commandSuffix
	"
REQUIRES_python38="
	haiku$secondaryArchSuffix
	pyqt5$secondaryArchSuffix == $portVersion base
	pyqt5_sip_python38
	cmd:python$PYTHON3_VERSION
	$REQUIRES
	"
REPLACES_python38="
	pyqt${secondaryArchSuffix}_python3
	"

if [ "$targetArchitecture" = "x86_gcc2" ]; then
	PROVIDES_python38+="
		pyqt5_python38 = $portVersionCompat
		"
fi

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	pyqt_builder_python38
	setuptools_python38
	sip_python38 >= 6
	devel:libQt5Bluetooth$secondaryArchSuffix >= $qtVersion
	devel:libQt5Core$secondaryArchSuffix >= $qtVersion
	devel:libQt5Designer$secondaryArchSuffix >= $qtVersion
	devel:libQt5DBus$secondaryArchSuffix >= $qtVersion
	devel:libQt5Gui$secondaryArchSuffix >= $qtVersion
	devel:libQt5Help$secondaryArchSuffix >= $qtVersion
	devel:libQt5Location$secondaryArchSuffix >= $qtVersion
	devel:libQt5Multimedia$secondaryArchSuffix >= $qtVersion
	devel:libQt5MultimediaWidgets$secondaryArchSuffix >= $qtVersion
	devel:libQt5Network$secondaryArchSuffix >= $qtVersion
	devel:libQt5Nfc$secondaryArchSuffix >= $qtVersion
	devel:libQt5OpenGL$secondaryArchSuffix >= $qtVersion
	devel:libQt5PrintSupport$secondaryArchSuffix >= $qtVersion
	devel:libQt5Positioning$secondaryArchSuffix >= $qtVersion
	devel:libQt5Qml$secondaryArchSuffix >= $qtVersion
	devel:libQt5Quick$secondaryArchSuffix >= $qtVersion
	devel:libQt5QuickWidgets$secondaryArchSuffix >= $qtVersion
	devel:libQt5Sensors$secondaryArchSuffix >= $qtVersion
	devel:libQt5SerialPort$secondaryArchSuffix >= $qtVersion
	devel:libQt5Sql$secondaryArchSuffix >= $qtVersion
	devel:libQt5Svg$secondaryArchSuffix >= $qtVersion
	devel:libQt5Test$secondaryArchSuffix >= $qtVersion
	devel:libQt5WebChannel$secondaryArchSuffix >= $qtVersion
	devel:libQt5WebKit$secondaryArchSuffix
	devel:libQt5WebKitWidgets$secondaryArchSuffix
	devel:libQt5WebSockets$secondaryArchSuffix >= $qtVersion
	devel:libQt5Widgets$secondaryArchSuffix >= $qtVersion
	devel:libQt5Xml$secondaryArchSuffix >= $qtVersion
	devel:libQt5XmlPatterns$secondaryArchSuffix >= $qtVersion
	devel:libGL${secondaryArchSuffix}
	"
BUILD_PREREQUIRES="
	cmd:python$PYTHON3_VERSION
	cmd:gcc${secondaryArchSuffix}
	cmd:make
	cmd:ld${secondaryArchSuffix}
	cmd:sip >= 6
	cmd:qmake${secondaryArchSuffix} >= 5
	"

PATCH()
{
	# disable checking for sip, since it doesn't work for python2 as __init__.py
	# is not provided by sip.
	sed -i 's|from PyQt5 import sip|pass|g' configure.py
}

BUILD()
{
	OLDPYTHONPATH=$PYTHONPATH

	local packageLinksDir=$(dirname $portPackageLinksDir)
	local python3PackageName="${portName}_python38-$portFullVersion"

	# GENERIC: all python_setuptools-based installs need this
	python=$packageLinksDir/$python3PackageName/cmd~python$PYTHON3_VERSION/bin/python$PYTHON3_VERSION
	pythonVersion=$($python --version 2>&1 | sed 's/Python //' | head -c3)
	installLocation=/lib/python$pythonVersion/vendor-packages/
	export PYTHONPATH=$installLocation:$OLDPYTHONPATH

	sip-build \
		--confirm-license \
		--no-designer-plugin \
		--no-qml-plugin \
		--no-make \
		--target-dir=$installLocation \
		--api-dir=$dataDir/sip/PyQt5

	cd build
	make $jobArgs
}

INSTALL()
{
	OLDPYTHONPATH=$PYTHONPATH

	local packageLinksDir=$(dirname $portPackageLinksDir)
	local python3PackageName="${portName}_python38-$portFullVersion"

	# GENERIC: all python_setuptools-based installs need this
	python=$packageLinksDir/$python3PackageName/cmd~python$PYTHON3_VERSION/bin/python$PYTHON3_VERSION
	pythonVersion=$($python --version 2>&1 | sed 's/Python //' | head -c3)
	installLocation=lib/python$pythonVersion/vendor-packages/
	export PYTHONPATH=$installLocation:$OLDPYTHONPATH

	mkdir -p $installLocation
	cd build
	make install INSTALL_ROOT="$prefix"

	$python -m compileall -d / $prefix/lib/python$pythonVersion
	$python -O -m compileall -d / $prefix/lib/python$pythonVersion

	packageEntries python38 \
		$installLocation \
		$commandBinDir

	rmdir $prefix/lib/python$pythonVersion
}
