Index | Thread | Search

From:
Peter Hessler <phessler@theapt.org>
Subject:
Re: py-qt6: split configure and build steps
To:
Theo Buehler <tb@theobuehler.org>
Cc:
ports@openbsd.org
Date:
Tue, 19 Aug 2025 15:48:42 +0200

Download raw body.

Thread
  • Peter Hessler:

    py-qt6: split configure and build steps

  • On 2025 Aug 19 (Tue) at 15:01:48 +0200 (+0200), Theo Buehler wrote:
    :Currently py-qt6 builds itself in the configure step, in a single
    :thread that takes well over two hours on a fast machine. In the
    :latest exopi bulk:
    :
    :max_stuck=291.37/depends=17.09/show-prepare-results=5.24/patch=0.86/configure=8543.77/build=6.05/fake=17.14/package=40.79/clean=0.89
    :
    :With the diff below, I could configure it in 10 minutes and build it
    :in ~15 minutes with -j8 on an 8-core laptop. The plist grew some .pyi
    :files, which I think is fine.
    :
    :I don't use anything using this and don't plan to, so it's only build
    :tested.
    :
    :If this works and is acceptable, I think we can give py-qt5 the
    :same treatment. Setting DPB_PROPERTIES = parallel can then be
    :considered separately.
    :
    
    Yes, please!!!!!!  Many thanks for hunting this down.
    
    
    :Index: Makefile
    :===================================================================
    :RCS file: /cvs/ports/x11/py-qt6/Makefile,v
    :diff -u -p -r1.7 Makefile
    :--- Makefile	9 Feb 2025 08:55:16 -0000	1.7
    :+++ Makefile	19 Aug 2025 12:56:06 -0000
    :@@ -3,6 +3,7 @@ COMMENT=	Python bindings for Qt6
    : MODPY_DISTV=	6.8.0
    : DISTNAME=	PyQt6-${MODPY_DISTV}
    : PKGNAME=	py-qt6-${MODPY_DISTV}
    :+REVISION=	0
    : 
    : CATEGORIES=	x11 devel
    : 
    :@@ -58,13 +59,14 @@ MODPY_PI=	Yes
    : # https://www.riverbankcomputing.com/static/Docs/PyQt6/installation.html#building-pyqt6
    : CONFIGURE_STYLE= simple
    : CONFIGURE_SCRIPT= ${LOCALBASE}/bin/sip-build
    :-CONFIGURE_ARGS =	--verbose --confirm-license --pep484-pyi
    :+CONFIGURE_ARGS=	--no-make --verbose --confirm-license --pep484-pyi
    : 
    : MAKE_FLAGS=	-C build \
    : 		CC=${CC} \
    : 		CXX=${CXX} \
    : 		COPTS="${CFLAGS}" \
    :-		CXXOPTS="${CXXFLAGS}"
    :+		CXXOPTS="${CXXFLAGS}" \
    :+		MAKE_JOBS=${MAKE_JOBS}
    : 
    : FAKE_FLAGS=	INSTALL_ROOT=${DESTDIR}
    : 
    :Index: pkg/PLIST
    :===================================================================
    :RCS file: /cvs/ports/x11/py-qt6/pkg/PLIST,v
    :diff -u -p -r1.4 PLIST
    :--- pkg/PLIST	9 Feb 2025 08:55:16 -0000	1.4
    :+++ pkg/PLIST	19 Aug 2025 12:51:47 -0000
    :@@ -6,38 +6,71 @@ lib/python${MODPY_VERSION}/site-packages
    : lib/python${MODPY_VERSION}/site-packages/PyQt6-${MODPY_DISTV}.dist-info/METADATA
    : lib/python${MODPY_VERSION}/site-packages/PyQt6-${MODPY_DISTV}.dist-info/RECORD
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtBluetooth${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtBluetooth.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtCore${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtCore.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtDBus${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtDBus.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtDesigner${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtDesigner.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtGui${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtGui.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtHelp${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtHelp.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtMultimedia${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtMultimedia.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtMultimediaWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtMultimediaWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtNetwork${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtNetwork.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtNfc${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtNfc.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtOpenGL${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtOpenGL.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtOpenGLWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtOpenGLWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPdf${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPdf.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPdfWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPdfWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPositioning${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPositioning.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPrintSupport${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtPrintSupport.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQml${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQml.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuick${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuick.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuick3D${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuick3D.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuickWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtQuickWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtRemoteObjects${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtRemoteObjects.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSensors${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSensors.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSerialPort${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSerialPort.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSpatialAudio${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSpatialAudio.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSql${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSql.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSvg${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSvg.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSvgWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtSvgWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtTest${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtTest.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtTextToSpeech${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtTextToSpeech.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWebChannel${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWebChannel.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWebSockets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWebSockets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWidgets${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtWidgets.pyi
    : @so lib/python${MODPY_VERSION}/site-packages/PyQt6/QtXml${MODPY_ABI3SO}.so
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/QtXml.pyi
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/__init__.py
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/bindings/
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/bindings/QtBluetooth/
    :@@ -839,6 +872,8 @@ lib/python${MODPY_VERSION}/site-packages
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/lupdate/translation_file.py
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/lupdate/translations.py
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/lupdate/user.py
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/py.typed
    :+lib/python${MODPY_VERSION}/site-packages/PyQt6/sip.pyi
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/uic/
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/uic/Compiler/
    : lib/python${MODPY_VERSION}/site-packages/PyQt6/uic/Compiler/__init__.py
    :
    
    -- 
    When are you BUTTHEADS gonna learn that you can't oppose Gestapo
    tactics *with* Gestapo tactics?
    		-- Reuben Flagg
    
    
  • Peter Hessler:

    py-qt6: split configure and build steps