# Template file for 'python-PyQt5'
pkgname=python-PyQt5
version=5.13.0
revision=1
_sipver=4.19.18
lib32disabled=yes
wrksrc="PyQt5_gpl-${version}"
pycompile_module="PyQt5"
hostmakedepends="pkg-config
 python-devel python3-devel python-sip-devel python3-sip-devel python-dbus-devel
 qt5-tools-devel qt5-connectivity-devel qt5-declarative-devel qt5-location-devel
 qt5-multimedia-devel qt5-sensors-devel qt5-serialport-devel qt5-svg-devel
 qt5-webchannel-devel qt5-webkit-devel qt5-websockets-devel
 qt5-x11extras-devel qt5-xmlpatterns-devel qt5-networkauth-devel pulseaudio-devel
 python-enum34"
makedepends="${hostmakedepends/pkg-config/}"
depends="python-sip-PyQt5>=${_sipver} python-enum34"
short_desc="Python2 bindings for the Qt5 toolkit"
maintainer="Alessio Sergi <al3hex@gmail.com>"
homepage="https://riverbankcomputing.com/software/pyqt/intro"
license="GPL-3.0-only"
distfiles="https://www.riverbankcomputing.com/static/Downloads/PyQt5/${version}/PyQt5_gpl-${version}.tar.gz"
checksum=0cdbffe5135926527b61cc3692dd301cd0328dd87eeaf1313e610787c46faff9

pre_build() {
	mkdir -p pyqt5-${py2_ver}
	mv * pyqt5-${py2_ver} || true
	cp -a pyqt5-${py2_ver} pyqt5-${py3_ver}
	rm -rf pyqt5-${py2_ver}/pyuic/uic/port_v3
	rm -rf pyqt5-${py3_ver}/pyuic/uic/port_v2
}
do_build() {
	local _sysroot= _configuration= py_abiver= qt_version
	for pyver in $py2_ver $py3_ver; do
		if [ "$pyver" = "$py3_ver" ]; then
			py_abiver="$py3_abiver"
		fi

		cd $wrksrc/pyqt5-$pyver
		if [ "$CROSS_BUILD" ]; then
			qt_version=$(qmake -query QT_VERSION)
cat > pyqt5_${XBPS_CROSS_TRIPLET}.cfg <<EOF
py_platform = linux
py_inc_dir = %(sysroot)/usr/include/python%(py_major).%(py_minor)${py_abiver}
py_pyshlib = python%(py_major).%(py_minor)${py_abiver}.so
pyqt_disabled_features = PyQt_Desktop_OpenGL PyQt_qreal_double

qt_shared = True

[Qt ${qt_version}]
# _QOpenGLFunctions_ES2 doesn't work
pyqt_modules = QtCore QtGui QtHelp QtMultimedia
    QtMultimediaWidgets QtNetwork QtOpenGL QtPrintSupport QtQml QtQuick
    QtSql QtSvg QtTest QtWebKit QtWebKitWidgets QtWidgets QtXml
    QtXmlPatterns QtDesigner QtDBus QtSensors QtSerialPort
    QtX11Extras QtBluetooth QtPositioning QtQuickWidgets QtWebSockets
    QtWebChannel QtLocation QtNfc QtNetworkAuth
EOF

			_sysroot="--sysroot $XBPS_CROSS_BASE"
			_configuration="--configuration $wrksrc/pyqt5-$pyver/pyqt5_${XBPS_CROSS_TRIPLET}.cfg"
		fi

		python${pyver} configure.py --confirm-license --assume-shared --no-dist-info $_sysroot $_configuration \
			QMAKE_CC="${CC}" QMAKE_CFLAGS="${CFLAGS}" QMAKE_CXX="${CXX}" QMAKE_CXXFLAGS="${CXXFLAGS}" \
			QMAKE_LINK="${CXX}" QMAKE_LINK_SHLIB="${CXX}" QMAKE_LFLAGS="${LDFLAGS}" QMAKE_STRIP=""

		if [ "$CROSS_BUILD" ]; then
			# Fix location of libraries
			find . -name Makefile | xargs sed -i -E "s|(/usr/lib/libQt5[^ ]+so)|${XBPS_CROSS_BASE}\1|g"
		fi

		make ${makejobs}
	done
}
do_install() {
	# install python-pyqt5
	make -C pyqt5-${py2_ver} DESTDIR=${DESTDIR} INSTALL_ROOT=${DESTDIR} install
	for f in pylupdate5 pyrcc5 pyuic5; do
		sed -i 's,/usr/bin/python2.7,/usr/bin/python2,' ${DESTDIR}/usr/bin/${f}
		mv ${DESTDIR}/usr/bin/{,python2-}${f}
	done

	# install python3-pyqt5
	make -C pyqt5-${py3_ver} DESTDIR=${DESTDIR} INSTALL_ROOT=${DESTDIR} install
	for f in pylupdate5 pyrcc5 pyuic5; do
		sed -i 's,/usr/bin/python3[.0-9]*,/usr/bin/python3,' ${DESTDIR}/usr/bin/${f}
		mv ${DESTDIR}/usr/bin/{,python3-}${f}
	done
}

python-PyQt5-devel-tools_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - development tools"
	alternatives="
	 pyqt5:pylupdate5:/usr/bin/python2-pylupdate5
	 pyqt5:pyrcc5:/usr/bin/python2-pyrcc5
	 pyqt5:pyuic5:/usr/bin/python2-pyuic5"
	pycompile_module="PyQt5"
	pkg_install() {
		vmove usr/bin/python2-*
		vmove ${py2_sitelib}/PyQt5/pylupdate.so
		vmove ${py2_sitelib}/PyQt5/pylupdate_main.py
		vmove ${py2_sitelib}/PyQt5/pyrcc.so
		vmove ${py2_sitelib}/PyQt5/pyrcc_main.py
	}
}
python3-PyQt5-devel-tools_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - development tools"
	alternatives="
	 pyqt5:pylupdate5:/usr/bin/python3-pylupdate5
	 pyqt5:pyrcc5:/usr/bin/python3-pyrcc5
	 pyqt5:pyuic5:/usr/bin/python3-pyuic5"
	pycompile_module="PyQt5"
	pkg_install() {
		vmove usr/bin/python3-*
		vmove ${py3_sitelib}/PyQt5/pylupdate.so
		vmove ${py3_sitelib}/PyQt5/pylupdate_main.py
		vmove ${py3_sitelib}/PyQt5/pyrcc.so
		vmove ${py3_sitelib}/PyQt5/pyrcc_main.py
	}
}
python-PyQt5-devel_package() {
	depends="python-sip-devel python3-sip-devel
	 python-PyQt5-${version}_${revision} python3-PyQt5-${version}_${revision}"
	short_desc+=" - development files"
	pkg_install() {
		vmove usr/share/sip
	}
}
python-PyQt5-dbus_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision} python-dbus"
	short_desc+=" - dbus support"
	pkg_install() {
		vmove ${py2_sitelib}/dbus/mainloop/pyqt5.so
	}
}
python-PyQt5-connectivity_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - connectivity module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtBluetooth.so
		vmove ${py2_sitelib}/PyQt5/QtNfc.so
	}
}
python-PyQt5-multimedia_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - multimedia module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtMultimedia.so
		vmove ${py2_sitelib}/PyQt5/QtMultimediaWidgets.so
	}
}
python-PyQt5-networkauth_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision} python-enum34"
	short_desc+=" - networkauth module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtNetworkAuth.so
	}
}
python-PyQt5-opengl_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - opengl module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtOpenGL.so
		if [ -z "$CROSS_BUILD" ]; then
			vmove ${py2_sitelib}/PyQt5/_QOpenGLFunctions_*.so
		fi
	}

}
python-PyQt5-location_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - location module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtLocation.so
		vmove ${py2_sitelib}/PyQt5/QtPositioning.so
	}
}
python-PyQt5-quick_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - quick module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtQml.so
		vmove ${py2_sitelib}/PyQt5/QtQuick.so
		vmove ${py2_sitelib}/PyQt5/QtQuickWidgets.so
	}
}
python-PyQt5-sensors_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - sensors module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtSensors.so
	}
}
python-PyQt5-serialport_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - serialport module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtSerialPort.so
	}
}
python-PyQt5-sql_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - sql module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtSql.so
	}
}
python-PyQt5-svg_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - svg module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtSvg.so
	}
}
python-PyQt5-tools_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - designer, help modules"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtHelp.so
		vmove ${py2_sitelib}/PyQt5/QtDesigner.so
	}
}
python-PyQt5-webchannel_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - webchannel module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtWebChannel.so
	}
}
python-PyQt5-webkit_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - webkit module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtWebKit.so
		vmove ${py2_sitelib}/PyQt5/QtWebKitWidgets.so
	}
}
python-PyQt5-websockets_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - websockets module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtWebSockets.so
	}
}
python-PyQt5-x11extras_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - x11extras module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtX11Extras.so
	}
}
python-PyQt5-xmlpatterns_package() {
	lib32disabled=yes
	depends="${sourcepkg}-${version}_${revision}"
	short_desc+=" - xmlpatterns module"
	pkg_install() {
		vmove ${py2_sitelib}/PyQt5/QtXmlPatterns.so
	}
}
python3-PyQt5_package() {
	lib32disabled=yes
	pycompile_module="PyQt5"
	depends="python3-sip-PyQt5>=${_sipver}"
	short_desc="${short_desc/Python2/Python3}"
	pkg_install() {
		vmove ${py3_sitelib}
	}
}
python3-PyQt5-dbus_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision} python3-dbus"
	short_desc="${short_desc/Python2/Python3} - dbus support"
	pkg_install() {
		vmove ${py3_sitelib}/dbus/mainloop/pyqt5.so
	}
}
python3-PyQt5-connectivity_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - connectivity module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtBluetooth.pyi
		vmove ${py3_sitelib}/PyQt5/QtBluetooth.so
		vmove ${py3_sitelib}/PyQt5/QtNfc.pyi
		vmove ${py3_sitelib}/PyQt5/QtNfc.so
	}
}
python3-PyQt5-multimedia_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - multimedia module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtMultimedia.pyi
		vmove ${py3_sitelib}/PyQt5/QtMultimedia.so
		vmove ${py3_sitelib}/PyQt5/QtMultimediaWidgets.pyi
		vmove ${py3_sitelib}/PyQt5/QtMultimediaWidgets.so
	}
}
python3-PyQt5-networkauth_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - networkauth module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtNetworkAuth.pyi
		vmove ${py3_sitelib}/PyQt5/QtNetworkAuth.so
	}
}
python3-PyQt5-opengl_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - opengl module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtOpenGL.pyi
		vmove ${py3_sitelib}/PyQt5/QtOpenGL.so
		if [ -z "$CROSS_BUILD" ]; then
			vmove ${py3_sitelib}/PyQt5/_QOpenGLFunctions_*.so
		fi
	}
}
python3-PyQt5-location_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - location module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtLocation.pyi
		vmove ${py3_sitelib}/PyQt5/QtLocation.so
		vmove ${py3_sitelib}/PyQt5/QtPositioning.pyi
		vmove ${py3_sitelib}/PyQt5/QtPositioning.so
	}
}
python3-PyQt5-quick_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - quick module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtQml.pyi
		vmove ${py3_sitelib}/PyQt5/QtQml.so
		vmove ${py3_sitelib}/PyQt5/QtQuick.pyi
		vmove ${py3_sitelib}/PyQt5/QtQuick.so
		vmove ${py3_sitelib}/PyQt5/QtQuickWidgets.pyi
		vmove ${py3_sitelib}/PyQt5/QtQuickWidgets.so
		vmove usr/lib/qt5/plugins/PyQt5/libpyqt5qmlplugin.so
	}
}
python3-PyQt5-sensors_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - sensors module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtSensors.pyi
		vmove ${py3_sitelib}/PyQt5/QtSensors.so
	}
}
python3-PyQt5-serialport_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - serialport module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtSerialPort.pyi
		vmove ${py3_sitelib}/PyQt5/QtSerialPort.so
	}
}
python3-PyQt5-sql_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - sql module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtSql.pyi
		vmove ${py3_sitelib}/PyQt5/QtSql.so
	}
}
python3-PyQt5-svg_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - svg module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtSvg.pyi
		vmove ${py3_sitelib}/PyQt5/QtSvg.so
	}
}
python3-PyQt5-tools_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - designer, help modules"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtHelp.pyi
		vmove ${py3_sitelib}/PyQt5/QtHelp.so
		vmove ${py3_sitelib}/PyQt5/QtDesigner.pyi
		vmove ${py3_sitelib}/PyQt5/QtDesigner.so
		vmove usr/lib/qt5/plugins/designer/libpyqt5.so
	}
}
python3-PyQt5-webchannel_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - webchannel module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtWebChannel.pyi
		vmove ${py3_sitelib}/PyQt5/QtWebChannel.so
	}
}
python3-PyQt5-webkit_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - webkit module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtWebKit.pyi
		vmove ${py3_sitelib}/PyQt5/QtWebKit.so
		vmove ${py3_sitelib}/PyQt5/QtWebKitWidgets.pyi
		vmove ${py3_sitelib}/PyQt5/QtWebKitWidgets.so
	}
}
python3-PyQt5-websockets_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - websockets module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtWebSockets.pyi
		vmove ${py3_sitelib}/PyQt5/QtWebSockets.so
	}
}
python3-PyQt5-x11extras_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - x11extras module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtX11Extras.pyi
		vmove ${py3_sitelib}/PyQt5/QtX11Extras.so
	}
}
python3-PyQt5-xmlpatterns_package() {
	lib32disabled=yes
	depends="python3-PyQt5-${version}_${revision}"
	short_desc="${short_desc/Python2/Python3} - xmlpatterns module"
	pkg_install() {
		vmove ${py3_sitelib}/PyQt5/QtXmlPatterns.pyi
		vmove ${py3_sitelib}/PyQt5/QtXmlPatterns.so
	}
}