Commit 4f0a5e15 authored by Loïc Bartoletti's avatar Loïc Bartoletti
Browse files

PyQt: Update sip to 6.5.0, reintroduce sip4 and simplify PyQt framework.

SIP:
As mentioned in the update from sip to sip5, this is a transitional version
to remove what is deprecated in sip4.
Sip6 completely removes the deprecated parts.
Unfortunately, some ports — mostly cura things — can not use sip6, so we
reintroduce sip4.

PyQt:
At the same time, we took the opportunity to simplify PyQT and propose only one
package as for devel/pyside2. */py-qt5-* have been merged — excepted chart,
networkauth and webengine — into devel/py-qt5-pyqt.

This allows us to be in adequacy with the packages that the author of these
libraries proposes, namely:

PyQt - devel/py-qt5-pyqt
PyQt-Charts - x11-toolkits/py-qt5-chart
PyQt-NetworkAuth – net/py-qt5-networkauth
PyQt-WebEngine – www/py-qt5-webengine
SIP – devel/py-sip
py-sip - devel/py-qt5-sip
PyQt-builder - devel/py-qtbuilder
Qscintilla - devel/py-qt5-qscintilla2

Reviewed by:	diizzy, kde
Tested by:	kai, rhurlin, arrowd, madpilot
Approved by:	makc, tcberner, kde
Differential Revision:	https://reviews.freebsd.org/D33237
Exp-run by:	antoine
parent cc7a787d
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -10,6 +10,26 @@ in the release notes and/or placed into UPDATING.

All ports committers are allowed to commit to this file.

20220127:
AUTHOR: kde@FreeBSD.org

  PyQt modules have been merged into devel/py-qt5-pyqt.

  This allows us to simplify PyQt framework and to be in adequacy with the
  packages that the author of these libraries proposes, namely:

  * PyQt - devel/py-qt5-pyqt
  * PyQt-Charts - x11-toolkits/py-qt5-chart
  * PyQt-NetworkAuth – net/py-qt5-networkauth
  * PyQt-WebEngine – www/py-qt5-webengine
  * SIP – devel/py-sip
  * py-sip - devel/py-qt5-sip
  * PyQt-builder - devel/py-qtbuilder
  * Qscintilla - devel/py-qt5-qscintilla2

  Ports depending on PyQt, must be declared with USE_PYQT=pyqt5 instead of
  USE_PYQT=core gui svg etc.

20220117:
AUTHOR: tobik@FreeBSD.org

+32 −0
Original line number Diff line number Diff line
@@ -16845,3 +16845,35 @@ net/php73-ldap|net/php74-ldap|2022-01-26|Has expired: Security support ended on
net/php73-soap|net/php74-soap|2022-01-26|Has expired: Security support ended on 2021-12-06
mail/bogofilter|mail/bogofilter-bdb|2022-01-26|Port renamed to make LMDB the new default DB
mail/bogofilter-lmdb|mail/bogofilter|2022-01-26|Port renamed to make LMDB the new default DB
comms/py-qt5-sensors|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
comms/py-qt5-serialport|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
databases/py-qt5-sql|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-core|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-dbus|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-dbussupport|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-designer|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-designerplugin|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-help|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-location|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-positioning|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-remoteobjects|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
devel/py-qt5-test|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
graphics/py-qt5-svg|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
lang/py-qt5-qml|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
misc/py-qt5-demo|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
multimedia/py-qt5-multimedia|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
multimedia/py-qt5-multimediawidgets|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
net/py-qt5-network|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
print/py-qt5-printsupport|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
textproc/py-qt5-xml|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
textproc/py-qt5-xmlpatterns|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
www/py-qt5-webchannel|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
www/py-qt5-webkit|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
www/py-qt5-webkitwidgets|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
www/py-qt5-websockets|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11-toolkits/py-qt5-gui|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11-toolkits/py-qt5-quick|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11-toolkits/py-qt5-quick3d|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11-toolkits/py-qt5-quickwidgets|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11-toolkits/py-qt5-widgets|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
x11/py-qt5-opengl|deve/py-qt5-pyqt|Merged into devel/py-qt5-pyqt
+50 −127
Original line number Diff line number Diff line
@@ -57,61 +57,35 @@ MASTER_SITES_PYQTSIP= https://pypi.python.org/packages/source/P/PyQt5-sip/
MASTER_SITES_PYQTCHART=	https://pypi.python.org/packages/source/P/PyQtChart/
MASTER_SITES_PYQTNETWORKAUTH=	https://pypi.python.org/packages/source/P/PyQtNetworkAuth/
MASTER_SITES_PYQTBUILDER=	https://pypi.io/packages/source/P/PyQt-builder/
MASTER_SITES_PYQTWEBENGINE=	https://pypi.python.org/packages/source/P/PyQtWebEngine/
#https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.12.0/QScintilla_src-2.12.0.tar.gz
MASTER_SITES_QSCI2=	RIVERBANK/QScintilla/${PORTVERSION} \
			SF/pyqt/QScintilla2/QScintilla-${PORTVERSION} \
			GENTOO

SIP_VERSION=		5.5.0
SIP_VERSION=		6.3.1
SIP4_VERSION=		4.19.25
QSCI2_VERSION=		2.13.0
PYQT5_VERSION=		5.15.4
PYQTCHART_VERSION=	${PYQT5_VERSION} # can be different
PYQTNETWORKAUTH_VERSION=${PYQT5_VERSION}
PYQTWEBENGINE_VERSION=	${PYQT5_VERSION}
PYQTSIP_VERSION=	12.9.0
PYQTBUILDER_VERSION=	1.9.1
PYQTBUILDER_VERSION=	1.12.0

SIP_DISTNAME=		sip-${SIP_VERSION}
SIP4_DISTNAME=		sip-${SIP4_VERSION}
PYQT5_DISTNAME=		PyQt5-${PYQT5_VERSION}
PYQTSIP_DISTNAME=	PyQt5_sip-${PYQTSIP_VERSION}
PYQTCHART_DISTNAME=	PyQtChart-${PYQT_VERSION}
PYQTNETWORKAUTH_DISTNAME=	PyQtNetworkAuth-${PYQT_VERSION}
PYQTCHART_DISTNAME=	PyQtChart-${PYQTCHART_VERSION}
PYQTNETWORKAUTH_DISTNAME=	PyQtNetworkAuth-${PYQTNETWORKAUTH_VERSION}
PYQTBUILDER_DISTNAME=	PyQt-builder-${PYQTBUILDER_VERSION}
PYQTWEBENGINE_DISTNAME=	PyQtWebEngine-${PYQTWEBENGINE_VERSION}
PYQT5_DISTINFO_FILE=	${.CURDIR:H:H}/devel/${PYQT_RELNAME}/distinfo
QSCI2_DISTNAME=		QScintilla_src-${QSCI2_VERSION}
PYQT5_LICENSE=		GPLv3

_USE_PYQT_COMMS=	sensors serialport
_USE_PYQT_DATABASES=	sql
_USE_PYQT_DEVEL=	core dbus dbussupport help location \
			designer designerplugin remoteobjects test 
_USE_PYQT_GRAPHICS=	svg
_USE_PYQT_LANG=		qml
_USE_PYQT_LOCATION=	location
_USE_PYQT_MISC=		demo
_USE_PYQT_MULTIMEDIA=	multimedia multimediawidgets
_USE_PYQT_NET=		network networkauth
_USE_PYQT_POSITIONING=	positioning
_USE_PYQT_PRINT=	printsupport
_USE_PYQT_TEXTPROC=	xml xmlpatterns
_USE_PYQT_WWW=		webchannel webengine webkit webkitwidgets websockets
_USE_PYQT_X11=		opengl
_USE_PYQT_X11-TOOLKITS=	chart gui widgets quick quick3d quickwidgets

# Keep these synchronized with OPTIONS_DEFINE in devel/py-qt5
# PyQt components split up into pyqt5/...
_USE_PYQT_ALL=		${_USE_PYQT_COMMS} \
			${_USE_PYQT_DATABASES} \
			${_USE_PYQT_DEVEL} \
			${_USE_PYQT_GRAPHICS} \
			${_USE_PYQT_LANG} \
			${_USE_PYQT_LOCATION} \
			${_USE_PYQT_MISC} \
			${_USE_PYQT_MULTIMEDIA} \
			${_USE_PYQT_NET} \
			${_USE_PYQT_POSITIONING} \
			${_USE_PYQT_PRINT} \
			${_USE_PYQT_TEXTPROC} \
			${_USE_PYQT_WWW} \
			${_USE_PYQT_X11} \
			${_USE_PYQT_X11-TOOLKITS}
_USE_PYQT_ALL=		pyqt5 chart networkauth webengine
_USE_SIP_ALL=		sip pysip
_USE_QSCINTILLA=	qscintilla2
_USE_PYQTBUILDER=	qtbuilder
@@ -130,10 +104,10 @@ py-sip_PATH= ${PYTHON_PKGNAMEPREFIX}sip>=${SIP_VERSION}
py-pysip_PATH=			${PYQT_PY_RELNAME}-sip>=${PYQTSIP_VERSION}
py-qscintilla2_PATH=		${PYQT_PY_RELNAME}-qscintilla2>=${QSCI2_VERSION}
py-qtbuilder_PATH=		${PYTHON_PKGNAMEPREFIX}qtbuilder>=${PYQTBUILDER_VERSION}

.  for _component in ${_USE_PYQT_ALL}
py-${_component}_PATH?=${PYQT_PY_RELNAME}-${_component}>=${PYQT_VERSION}
.  endfor
py-pyqt5_PATH=			${PYQT_PY_RELNAME}-pyqt>=${PYQT5_VERSION}
py-chart_PATH=			${PYQT_PY_RELNAME}-chart>=${PYQT5_VERSION}
py-networkauth_PATH=		${PYQT_PY_RELNAME}-networkauth>=${PYQT5_VERSION}
py-webengine_PATH=		${PYQT_PY_RELNAME}-webengine>=${PYQT5_VERSION}

# PORT
py-sip_PORT=			devel/py-sip
@@ -141,53 +115,13 @@ py-qtbuilder_PORT= devel/py-qtbuilder
py-pysip_PORT=			devel/${PYQT_RELNAME}-sip
py-qscintilla2_PORT=		devel/${PYQT_RELNAME}-qscintilla2
py-positioning_PORT=		devel/${PYQT_RELNAME}-positioning

.  for _categorie in comms databases devel graphics lang misc multimedia net print textproc www x11 x11-toolkits
_PYQT_CATEGORIE=	_USE_PYQT_${_categorie:tu}
.    for _component in ${${_PYQT_CATEGORIE}}
py-${_component}_PORT?=${_categorie}/${PYQT_RELNAME}-${_component}
.    endfor
.  endfor

py-core_DESC=			Python bindings for QtCore module
py-chart_DESC=			Python bindings for QtChart module
py-dbus_DESC=			Python bindings for QtDBus module
py-dbussupport_DESC=		Qt event loop support for dbus-python
py-demo_DESC=			PyQt demo and examples
py-designer_DESC=		Python bindings for QtDesigner module
py-designerplugin_DESC=		Python bindings for QtDesigner plugin
py-gui_DESC=			Python bindings for QtGui module
py-help_DESC=			Python bindings for QtHelp module
py-location_DESC=		Python bindings for Location module
py-multimedia_DESC=		Python bindings for Multimedia module
py-multimediawidgets_DESC=	Python bindings for QtMultimediaWidgets module
py-network_DESC=		Python bindings for QtNetwork module
py-networkauth_DESC=		Python bindings for QtNetworkAuth module
py-opengl_DESC=			Python bindings for QtOpenGL module
py-positioning_DESC=		Python bindings for QtPositioning module
py-printsupport_DESC=		Python bindings for Printsupport module
py-qml_DESC=			Python bindings for Qml module
py-qscintilla2_DESC=		Python bindings for QScintilla2
py-quick_DESC=			Python bindings for QtQuick module
py-quick3d_DESC=		Python bindings for QtQuick3D module
py-quickwidgets_DESC=		Python bindings for QtQuickWidgets module
py-remoteobjects_DESC=		Python bindings for QtRemoteObjects module
py-sip_DESC=			Python bindings generator for C and C++ libraries
py-sensors_DESC=		Python bindings for QtSensors
py-serialport_DESC=		Python bindings for QtSerialPort
py-sql_DESC=			Python bindings for QtSql module
py-svg_DESC=			Python bindings for QtSvg module
py-test_DESC=			Python bindings for QtTest module
py-webchannel_DESC=		Python bindings for QtWebChannel module
py-webengine_DESC=		Python bindings for QtWebEngine module
py-webkit_DESC=			Python bindings for QtWebKit module
py-webkitwidgets_DESC=		Python bindings for QtWebKitWidgets module
py-widgets_DESC=		Python bindings for QTWidgets module
py-xml_DESC=			Python bindings for QtXml module
py-xmlpatterns_DESC=		Python bindings for QtXmlPatterns module
py-pyqt5_PORT=			devel/${PYQT_RELNAME}-pyqt
py-chart_PORT=			x11-toolkits/${PYQT_RELNAME}-chart
py-networkauth_PORT=		net/${PYQT_RELNAME}-networkauth
py-webengine_PORT=		www/${PYQT_RELNAME}-webengine

# The versionned executable of sip
SIP=		${LOCALBASE}/bin/sip5-${PYTHON_VER}
SIP=		${LOCALBASE}/bin/sip-build-${PYTHON_VER}

# Relative directories
_VERSION_SUBDIR_REL=	PyQt${_PYQT_VERSION}/${PYTHON_VER}
@@ -217,49 +151,38 @@ PLIST_SUB+= PYQT_APIDIR=${_APIDIR_REL} \
		PYQT_PYQTVERSION=${PYQT_VERSION}

.  if defined(PYQT_DIST)
PORTVERSION=	${PYQT_VERSION}
MASTER_SITES=	${PYQT_MASTERSITES}
PKGNAMEPREFIX=	${PYQT_PY_RELNAME}-
DISTNAME=	${PYQT_DISTNAME}
DISTINFO_FILE=	${PYQT_DISTINFO_FILE}
LICENSE?=	${PYQT_LICENSE}
HAS_CONFIGURE=	yes

.    if ${_PYQT_VERSION} > 4
# PyQt5's configure.py generates .pro files and calls qmake to generate the
# Makefiles. qmake's Makefiles use INSTALL_ROOT instead of DESTDIR.
DESTDIRNAME=	INSTALL_ROOT
# Limit PyQt5's version to the Qt5 version in ports
PORTSCOUT?=	limit:^${_QT_VERSION:R}
PLIST_SUB+=	PYTHON_MAJOR_VER="${PYTHON_MAJOR_VER}"

SIP_ARGS=	--qmake ${QMAKE} \
		--verbose \
		--no-make \
		--build-dir build \
		--protected-is-public \
		--api-dir ${PYQT_APIDIR}
.	if ${PORTNAME} == "pyqt"
SIP_ARGS+=	--confirm-license
.	endif

PATCHDIR=	${.CURDIR}/../../devel/${PYQT_RELNAME}-core/files
CONFIGURE_ARGS+=-b ${PREFIX}/bin \
		-d ${PYTHONPREFIX_SITELIBDIR} \
		-q ${QMAKE} \
		--confirm-license \
		--sip ${SIP} \
		--sipdir ${PYQT_SIPDIR}
.    if ${_PYQT_VERSION:M5}
# Move the designer plugin and qml libraries to versioned folders.
CONFIGURE_ARGS+=--qml-plugindir ${PYQT_QMLDIR} \
		--designer-plugindir ${PYQT_DESIGNERDIR}
# Further do not gernate the dinstinfo files.
CONFIGURE_ARGS+=--no-dist-info
.  if ${PORTNAME} == "pyqt"
.    if !target(post-patch)
post-patch:
	${REINPLACE_CMD} -e "s#%%PYQT_DESIGNERDIR%%#${PYQT_DESIGNERDIR}#" ${WRKSRC}/project.py
	${REINPLACE_CMD} -e "s#%%PYQT_QMLDIR%%#${PYQT_QMLDIR}#" ${WRKSRC}/project.py
.    endif  # !target(post-patch)
.  endif
# One of the things PyQt looks for to determine whether to build the Qt DBus
# main loop module (${PYQT_RELNAME}-dbussupport) is whether the dbus/ directory is
# present. Only extract it for that port then.
.    if ${PORTNAME} != "dbussupport"
EXTRACT_AFTER_ARGS+=	--exclude "${DISTNAME}/dbus"
.    endif  # ${PORTNAME} != "dbussupport"

.    if !target(do-configure)
do-configure:
	${REINPLACE_CMD} -e "s/sip-module/sip-module-${PYTHON_VER}/" ${WRKSRC}/configure.py
	cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
		${PYTHON_CMD} configure.py ${CONFIGURE_ARGS}
.    endif  # !target(do-configure)
.    if !target(do-build)
do-build:
	(cd ${WRKSRC}; ${SIP} ${SIP_ARGS}; ${MAKE} -C ./build)

.    endif  # !target(do-build)

.    if !target(do-install)
do-install:
	(cd ${WRKSRC} ; ${MAKE} -C ./build install INSTALL_ROOT=${STAGEDIR} )
.    endif  # !target(do-install)

.  endif  # defined(PYQT_DIST)

# Set build, run and test depends -- we need to prefix them internally with "py-"
+7 −0
Original line number Diff line number Diff line
@@ -5,6 +5,13 @@ they are unavoidable.
You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.
20220127:
  AFFECTS: users of PyQt
  AUTHOR: kde@FreeBSD.org
  Most of the PyQt ports have been merged into single port devel/py-qt5-pyqt. 
  `pkg upgrade` will handle update automatically .
20220126:
  AFFECTS: users of mail/bogofilter, mail/bogofilter-lmdb
  AUTHOR: mandree@FreeBSD.org
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ USE_GITHUB= yes
GH_ACCOUNT=	falkTX
GH_PROJECT=	Cadence
USE_QT=		core gui widgets buildtools_build
USE_PYQT=	core_run gui_run network_run opengl_run svg_run widgets_run xml_run sip xml dbussupport
USE_PYQT=	pyqt5 sip

CXXFLAGS+=	-DJACKBRIDGE_PROPER_CPP11_SUPPORT=yes
# Give the Makefile the proper versioned binaries of PyQt
Loading