[neon/forks/pyqt-builder/Neon/release] /: New upstream version 1.17.0+dfsg
Dmitry Shachnev
null at kde.org
Wed Dec 3 06:33:47 GMT 2025
Git commit 772c39543d5937366418d7f0eb59e185b83b0023 by Dmitry Shachnev.
Committed on 08/12/2024 at 15:40.
Pushed by carlosdem into branch 'Neon/release'.
New upstream version 1.17.0+dfsg
M +1 -1 docs/conf.py
M +26 -0 docs/releases.md
M +12 -4 pyqtbuild/builder.py
M +1 -0 pyqtbuild/bundle/packages/__init__.py
M +0 -1 pyqtbuild/bundle/packages/pyqt3d.py
M +14 -21 pyqtbuild/bundle/packages/pyqt5.py
M +80 -31 pyqtbuild/bundle/packages/pyqt6.py
M +0 -1 pyqtbuild/bundle/packages/pyqt6_3d.py
M +2 -2 pyqtbuild/bundle/packages/pyqt6_charts.py
M +2 -2 pyqtbuild/bundle/packages/pyqt6_datavisualization.py
C +7 -4 pyqtbuild/bundle/packages/pyqt6_graphs.py [from: pyqtbuild/bundle/packages/pyqtchart.py - 065% similarity]
M +1 -1 pyqtbuild/bundle/packages/pyqt6_webengine.py
M +1 -1 pyqtbuild/bundle/packages/pyqtchart.py
M +1 -1 pyqtbuild/bundle/packages/pyqtdatavisualization.py
M +1 -1 pyqtbuild/bundle/packages/pyqtpurchasing.py
M +1 -1 pyqtbuild/bundle/packages/pyqtwebengine.py
M +15 -15 pyqtbuild/bundle/qt_metadata.py
M +7 -1 pyqtbuild/bundle/qt_wheel.py
M +17 -13 pyqtbuild/project.py
https://invent.kde.org/neon/forks/pyqt-builder/-/commit/772c39543d5937366418d7f0eb59e185b83b0023
diff --git a/docs/conf.py b/docs/conf.py
index fe8b564..2a405f1 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -13,7 +13,7 @@ project = 'PyQt-builder'
copyright = '{0} Phil Thompson <phil at riverbankcomputing.com>'.format(
date.today().year)
author = 'Phil Thompson'
-version = 'v1.16.4'
+version = 'v1.17.0'
# -- General configuration ---------------------------------------------------
diff --git a/docs/releases.md b/docs/releases.md
index 7c2ceff..554a8e2 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -1,6 +1,32 @@
# Release Notes
+## v1.17.0
+
+### Added support for Qt v6.8
+
+- Added support for the QtGraphs module.
+- Linux wheels now require GLIBC v2.35 (eg. Ubuntu 22.04) on Intel and v2.39
+ (eg. Ubuntu 24.04) on Arm.
+
+Resolves [#16](https://github.com/Python-PyQt/PyQt-builder/issues/16)
+
+### Re-signing of bundled macOS Qt dynamic libraries
+
+Prior to Qt v6.8 the macOS dynamic libraries were not signed. They are
+signed in v6.8 and the signature becomes invalid when `lipo` is used to
+extract the individual architecture-specific libraries (which is done to
+produce smaller wheels). The individual architecture-specific libraries are
+now re-signed by `pyqt-bundle`.
+
+Resolves [#21](https://github.com/Python-PyQt/PyQt-builder/issues/21)
+
+### Python shared library name on macOS incorrect
+
+The name of the Python shared library on macOS was incorrect which broke
+PyQt's `qmlscene` and `Designer` plugins.
+
+
## v1.16.4
### Support for Windows on Arm for Qt6
diff --git a/pyqtbuild/builder.py b/pyqtbuild/builder.py
index 502d139..1cd0eb3 100644
--- a/pyqtbuild/builder.py
+++ b/pyqtbuild/builder.py
@@ -5,7 +5,6 @@
import os
import sys
-import sysconfig
from sipbuild import (Buildable, BuildableModule, Builder, Option, Project,
PyProjectOptionException, UserException)
@@ -98,10 +97,19 @@ class QmakeBuilder(Builder):
# Set the default minimum GLIBC version. This is actually a
# function of the build platform and it should really be determined
# by inspecting the compiled extension module. These defaults
- # reflect the minimum versions provided by the supported Qt
- # platforms at any particular time.
+ # reflect the minimum versions required by the Qt online installer
+ # for a particular version.
if not project.minimum_glibc_version:
- if self.qt_version >= 0x060000:
+ if self.qt_version >= 0x060800:
+ from platform import processor
+
+ # The arm64 build is based on Ubuntu 24.04 rather than
+ # 22.04.
+ if processor() == 'aarch64':
+ project.minimum_glibc_version = '2.39'
+ else:
+ project.minimum_glibc_version = '2.35'
+ elif self.qt_version >= 0x060000:
project.minimum_glibc_version = '2.28'
else:
project.minimum_glibc_version = '2.17'
diff --git a/pyqtbuild/bundle/packages/__init__.py b/pyqtbuild/bundle/packages/__init__.py
index 48f61b9..af9f889 100644
--- a/pyqtbuild/bundle/packages/__init__.py
+++ b/pyqtbuild/bundle/packages/__init__.py
@@ -8,6 +8,7 @@ from .pyqt6 import PyQt6
from .pyqt6_3d import PyQt6_3D
from .pyqt6_charts import PyQt6_Charts
from .pyqt6_datavisualization import PyQt6_DataVisualization
+from .pyqt6_graphs import PyQt6_Graphs
from .pyqt6_networkauth import PyQt6_NetworkAuth
from .pyqt6_webengine import PyQt6_WebEngine
diff --git a/pyqtbuild/bundle/packages/pyqt3d.py b/pyqtbuild/bundle/packages/pyqt3d.py
index 71a6237..c892a0e 100755
--- a/pyqtbuild/bundle/packages/pyqt3d.py
+++ b/pyqtbuild/bundle/packages/pyqt3d.py
@@ -16,7 +16,6 @@ _QT_METADATA = {
'Qt3DCore':
VersionedMetadata(
lib_deps={'': ('Qt3DQuick', )},
- qml=True,
qml_names=('Qt3D', )),
'Qt3DExtras':
diff --git a/pyqtbuild/bundle/packages/pyqt5.py b/pyqtbuild/bundle/packages/pyqt5.py
index 718dac1..f00ba50 100644
--- a/pyqtbuild/bundle/packages/pyqt5.py
+++ b/pyqtbuild/bundle/packages/pyqt5.py
@@ -27,7 +27,7 @@ _QT_METADATA = {
lib_deps={
'linux': ('QtConcurrent', ),
'macos': ('QtConcurrent', )},
- qml=True),
+ ),
'QtCore':
VersionedMetadata(
@@ -60,9 +60,7 @@ _QT_METADATA = {
VersionedMetadata(),
'QtLocation':
- VersionedMetadata(
- lib_deps={'': ('QtPositioningQuick', )},
- qml=True),
+ VersionedMetadata(lib_deps={'': ('QtPositioningQuick', )}),
'QtMacExtras':
VersionedMetadata(),
@@ -73,7 +71,7 @@ _QT_METADATA = {
'': ('QtMultimediaQuick', ),
'linux': ('QtMultimediaGstTools', )
},
- qml=True, qml_names=('QtAudioEngine', 'QtMultimedia')),
+ qml_names=('QtAudioEngine', 'QtMultimedia')),
'QtMultimediaWidgets':
VersionedMetadata(),
@@ -85,27 +83,24 @@ _QT_METADATA = {
VersionedMetadata(legacy=True),
'QtNfc':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtOpenGL':
VersionedMetadata(),
'QtPositioning':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtPrintSupport':
VersionedMetadata(),
'QtQml':
- VersionedMetadata(
- lib_deps={'': ('QtQmlModels', 'QtQmlWorkerScript')},
- qml=True),
+ VersionedMetadata(lib_deps={'': ('QtQmlModels', 'QtQmlWorkerScript')}),
'QtQuick':
VersionedMetadata(
lib_deps={'': ('QtQuickControls2', 'QtQuickParticles',
'QtQuickShapes', 'QtQuickTemplates2', 'QtQuickTest')},
- qml=True,
qml_names=('QtCanvas3D', 'QtGraphicalEffects', 'QtQuick',
'QtQuick.2')),
@@ -114,16 +109,16 @@ _QT_METADATA = {
lib_deps={
'': ('QtQuick3DAssetImport', 'QtQuick3DRender',
'QtQuick3DRuntimeRender', 'QtQuick3DUtils')},
- qml=True),
+ ),
'QtQuickWidgets':
VersionedMetadata(),
'QtRemoteObjects':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtSensors':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtSerialPort':
VersionedMetadata(),
@@ -135,19 +130,19 @@ _QT_METADATA = {
VersionedMetadata(),
'QtTest':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtTextToSpeech':
VersionedMetadata(),
'QtWebChannel':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtWebSockets':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtWebView':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtWidgets':
VersionedMetadata(),
@@ -162,9 +157,7 @@ _QT_METADATA = {
VersionedMetadata(),
'QtXmlPatterns':
- VersionedMetadata(
- qml=True,
- qml_names=('Qt', )),
+ VersionedMetadata(qml_names=('Qt', )),
}
diff --git a/pyqtbuild/bundle/packages/pyqt6.py b/pyqtbuild/bundle/packages/pyqt6.py
index 33cfcfb..4525a0b 100644
--- a/pyqtbuild/bundle/packages/pyqt6.py
+++ b/pyqtbuild/bundle/packages/pyqt6.py
@@ -14,7 +14,7 @@ _QT_METADATA = {
VersionedMetadata(dll=False),
'QtBluetooth':
- VersionedMetadata(version=(6, 2, 0), qml=True),
+ VersionedMetadata(version=(6, 2, 0)),
'QtCore': (
VersionedMetadata(version=(6, 7, 0),
@@ -63,9 +63,19 @@ _QT_METADATA = {
VersionedMetadata(),
#'QtLocation':
- # VersionedMetadata(qml=True),
+ # VersionedMetadata(),
'QtMultimedia': (
+ VersionedMetadata(version=(6, 8, 0),
+ lib_deps={'': ('QtMultimediaQuick', )},
+ other_lib_deps={
+ 'macos': ('libavcodec.61.dylib', 'libavformat.61.dylib',
+ 'libavutil.59.dylib', 'libswresample.5.dylib',
+ 'libswscale.8.dylib'),
+ 'win': ('avcodec-61.dll', 'avformat-61.dll',
+ 'avutil-59.dll', 'swresample-5.dll',
+ 'swscale-8.dll')},
+ ),
VersionedMetadata(version=(6, 7, 1),
lib_deps={'': ('QtMultimediaQuick', )},
other_lib_deps={
@@ -75,17 +85,17 @@ _QT_METADATA = {
'win': ('avcodec-60.dll', 'avformat-60.dll',
'avutil-58.dll', 'swresample-4.dll',
'swscale-7.dll')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 7, 0),
lib_deps={'': ('QtMultimediaQuick', )},
other_lib_deps={
'win': ('avcodec-60.dll', 'avformat-60.dll',
'avutil-58.dll', 'swresample-4.dll',
'swscale-7.dll')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtMultimediaQuick', )},
- qml=True)),
+ )),
'QtMultimediaWidgets':
VersionedMetadata(version=(6, 2, 0)),
@@ -94,7 +104,7 @@ _QT_METADATA = {
VersionedMetadata(),
'QtNfc':
- VersionedMetadata(version=(6, 2, 0), qml=True),
+ VersionedMetadata(version=(6, 2, 0)),
'QtOpenGL':
VersionedMetadata(),
@@ -112,23 +122,51 @@ _QT_METADATA = {
'QtPositioning':
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtPositioningQuick', )},
- qml=True),
+ ),
'QtPrintSupport':
VersionedMetadata(),
'QtQml': (
+ VersionedMetadata(version=(6, 8, 0),
+ lib_deps={'': ('QtQmlMeta', 'QtQmlModels', 'QtQmlWorkerScript',
+ 'QtLabsAnimation', 'QtLabsFolderListModel',
+ 'QtLabsPlatform', 'QtLabsQmlModels', 'QtLabsSettings',
+ 'QtLabsSharedImage', 'QtLabsWavefrontMesh')},
+ ),
VersionedMetadata(version=(6, 5, 0),
lib_deps={'': ('QtQmlModels', 'QtQmlWorkerScript',
'QtLabsAnimation', 'QtLabsFolderListModel',
'QtLabsQmlModels', 'QtLabsSettings',
'QtLabsSharedImage', 'QtLabsWavefrontMesh')},
- qml=True),
+ ),
VersionedMetadata(
lib_deps={'': ('QtQmlModels', 'QtQmlWorkerScript')},
- qml=True)),
+ )),
'QtQuick': (
+ VersionedMetadata(version=(6, 8, 0),
+ lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Basic',
+ 'QtQuickControls2BasicStyleImpl',
+ 'QtQuickControls2Fusion',
+ 'QtQuickControls2FusionStyleImpl',
+ 'QtQuickControls2IOSStyleImpl',
+ 'QtQuickControls2Imagine',
+ 'QtQuickControls2ImagineStyleImpl',
+ 'QtQuickControls2Impl',
+ 'QtQuickControls2MacOSStyleImpl',
+ 'QtQuickControls2Material',
+ 'QtQuickControls2MaterialStyleImpl',
+ 'QtQuickControls2Universal',
+ 'QtQuickControls2UniversalStyleImpl',
+ 'QtQuickDialogs2', 'QtQuickDialogs2QuickImpl',
+ 'QtQuickDialogs2Utils', 'QtQuickEffects',
+ 'QtQuickLayouts',
+ 'QtQuickParticles', 'QtQuickShapes',
+ 'QtQuickTemplates2', 'QtQuickTest',
+ 'QtQuickTimeline', 'QtQuickTimelineBlendTrees',
+ 'QtQuickVectorImage', 'QtQuickVectorImageGenerator')},
+ ),
VersionedMetadata(version=(6, 7, 0),
lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Basic',
'QtQuickControls2BasicStyleImpl',
@@ -144,11 +182,12 @@ _QT_METADATA = {
'QtQuickControls2Universal',
'QtQuickControls2UniversalStyleImpl',
'QtQuickDialogs2', 'QtQuickDialogs2QuickImpl',
- 'QtQuickDialogs2Utils', 'QtQuickLayouts',
+ 'QtQuickDialogs2Utils', 'QtQuickEffects',
+ 'QtQuickLayouts',
'QtQuickParticles', 'QtQuickShapes',
'QtQuickTemplates2', 'QtQuickTest',
'QtQuickTimeline', 'QtQuickTimelineBlendTrees')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 6, 3),
lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Basic',
'QtQuickControls2BasicStyleImpl',
@@ -166,7 +205,7 @@ _QT_METADATA = {
'QtQuickParticles', 'QtQuickShapes',
'QtQuickTemplates2', 'QtQuickTest',
'QtQuickTimeline')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Impl',
'QtQuickDialogs2', 'QtQuickDialogs2QuickImpl',
@@ -174,24 +213,34 @@ _QT_METADATA = {
'QtQuickParticles', 'QtQuickShapes',
'QtQuickTemplates2', 'QtQuickTest',
'QtQuickTimeline')},
- qml=True),
+ ),
VersionedMetadata(
lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Impl',
'QtQuickLayouts', 'QtQuickParticles', 'QtQuickShapes',
'QtQuickTemplates2', 'QtQuickTest')},
- qml=True)),
+ )),
'QtQuick3D': (
+ VersionedMetadata(version=(6, 8, 0),
+ lib_deps={
+ '': ('QtConcurrent', 'QtQuick3DAssetImport',
+ 'QtQuick3DAssetUtils', 'QtQuick3DEffects',
+ 'QtQuick3DGlslParser', 'QtQuick3DHelpers',
+ 'QtQuick3DHelpersImpl', 'QtQuick3DIblBaker',
+ 'QtQuick3DParticles', 'QtQuick3DPhysics',
+ 'QtQuick3DPhysicsHelpers', 'QtQuick3DRuntimeRender',
+ 'QtQuick3DUtils', 'QtShaderTools', 'QtQuick3DXr')},
+ ),
VersionedMetadata(version=(6, 7, 0),
lib_deps={
'': ('QtConcurrent', 'QtQuick3DAssetImport',
'QtQuick3DAssetUtils', 'QtQuick3DEffects',
- 'QtQuick3DHelpers', 'QtQuick3DHelpersImpl',
- 'QtQuick3DIblBaker', 'QtQuick3DParticles',
- 'QtQuick3DPhysics', 'QtQuick3DPhysicsHelpers',
- 'QtQuick3DRuntimeRender', 'QtQuick3DUtils',
- 'QtShaderTools')},
- qml=True),
+ 'QtQuick3DGlslParser', 'QtQuick3DHelpers',
+ 'QtQuick3DHelpersImpl', 'QtQuick3DIblBaker',
+ 'QtQuick3DParticles', 'QtQuick3DPhysics',
+ 'QtQuick3DPhysicsHelpers', 'QtQuick3DRuntimeRender',
+ 'QtQuick3DUtils', 'QtShaderTools')},
+ ),
VersionedMetadata(version=(6, 6, 0),
lib_deps={
'': ('QtConcurrent', 'QtQuick3DAssetImport',
@@ -200,7 +249,7 @@ _QT_METADATA = {
'QtQuick3DParticles', 'QtQuick3DPhysics',
'QtQuick3DPhysicsHelpers', 'QtQuick3DRuntimeRender',
'QtQuick3DUtils', 'QtShaderTools')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 4, 0),
lib_deps={
'': ('QtConcurrent', 'QtQuick3DAssetImport',
@@ -208,7 +257,7 @@ _QT_METADATA = {
'QtQuick3DHelpers', 'QtQuick3DIblBaker',
'QtQuick3DParticles', 'QtQuick3DRuntimeRender',
'QtQuick3DUtils', 'QtShaderTools')},
- qml=True),
+ ),
VersionedMetadata(version=(6, 1, 0),
lib_deps={
'': ('QtQuick3DAssetImport', 'QtQuick3DAssetUtils',
@@ -216,12 +265,12 @@ _QT_METADATA = {
'QtQuick3DIblBaker', 'QtQuick3DParticles',
'QtQuick3DRuntimeRender', 'QtQuick3DUtils',
'QtShaderTools')},
- qml=True),
+ ),
VersionedMetadata(
lib_deps={
'': ('QtQuick3DAssetImport', 'QtQuick3DRuntimeRender',
'QtQuick3DUtils', 'QtShaderTools')},
- qml=True)),
+ )),
'QtQuickWidgets':
VersionedMetadata(),
@@ -229,12 +278,12 @@ _QT_METADATA = {
'QtRemoteObjects':
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtRemoteObjectsQml', )},
- qml=True),
+ ),
'QtSensors':
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtSensorsQuick', )},
- qml=True),
+ ),
'QtSerialPort':
VersionedMetadata(version=(6, 2, 0)),
@@ -253,20 +302,20 @@ _QT_METADATA = {
VersionedMetadata(),
'QtTest':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
'QtTextToSpeech':
- VersionedMetadata(version=(6, 4, 0), qml=True),
+ VersionedMetadata(version=(6, 4, 0)),
'QtWebChannel': (
# The quick library may have been present from the start.
VersionedMetadata(version=(6, 6, 0),
lib_deps={'': ('QtWebChannelQuick', )},
- qml=True),
- VersionedMetadata(version=(6, 2, 0), qml=True)),
+ ),
+ VersionedMetadata(version=(6, 2, 0))),
'QtWebSockets':
- VersionedMetadata(version=(6, 2, 0), qml=True),
+ VersionedMetadata(version=(6, 2, 0)),
'QtWidgets':
VersionedMetadata(),
diff --git a/pyqtbuild/bundle/packages/pyqt6_3d.py b/pyqtbuild/bundle/packages/pyqt6_3d.py
index 9a8cd00..db5cdc3 100755
--- a/pyqtbuild/bundle/packages/pyqt6_3d.py
+++ b/pyqtbuild/bundle/packages/pyqt6_3d.py
@@ -16,7 +16,6 @@ _QT_METADATA = {
'Qt3DCore':
VersionedMetadata(
lib_deps={'': ('QtConcurrent', )},
- qml=True,
qml_names=('Qt3D', )),
'Qt3DExtras':
diff --git a/pyqtbuild/bundle/packages/pyqt6_charts.py b/pyqtbuild/bundle/packages/pyqt6_charts.py
index cd39955..4dbb14b 100755
--- a/pyqtbuild/bundle/packages/pyqt6_charts.py
+++ b/pyqtbuild/bundle/packages/pyqt6_charts.py
@@ -13,8 +13,8 @@ _QT_METADATA = {
# It's likely that the QML library was required from the start.
VersionedMetadata(version=(6, 5, 0),
lib_deps={'': ('QtChartsQml', )},
- qml=True, lgpl=False),
- VersionedMetadata(version=(6, 1, 0), qml=True, lgpl=False))
+ lgpl=False),
+ VersionedMetadata(version=(6, 1, 0), lgpl=False))
}
diff --git a/pyqtbuild/bundle/packages/pyqt6_datavisualization.py b/pyqtbuild/bundle/packages/pyqt6_datavisualization.py
index 4fbb2d8..a989c7e 100755
--- a/pyqtbuild/bundle/packages/pyqt6_datavisualization.py
+++ b/pyqtbuild/bundle/packages/pyqt6_datavisualization.py
@@ -13,8 +13,8 @@ _QT_METADATA = {
# It's likely that the QML library was required from the start.
VersionedMetadata(version=(6, 5, 0),
lib_deps={'': ('QtDataVisualizationQml', )},
- qml=True, lgpl=False),
- VersionedMetadata(version=(6, 1, 0), qml=True, lgpl=False))
+ lgpl=False),
+ VersionedMetadata(version=(6, 1, 0), lgpl=False))
}
diff --git a/pyqtbuild/bundle/packages/pyqtchart.py b/pyqtbuild/bundle/packages/pyqt6_graphs.py
similarity index 65%
copy from pyqtbuild/bundle/packages/pyqtchart.py
copy to pyqtbuild/bundle/packages/pyqt6_graphs.py
index 90c5c01..7f4cf24 100755
--- a/pyqtbuild/bundle/packages/pyqtchart.py
+++ b/pyqtbuild/bundle/packages/pyqt6_graphs.py
@@ -9,13 +9,16 @@ from ..qt_metadata import VersionedMetadata
# The Qt meta-data for this package.
_QT_METADATA = {
- 'QtChart':
- VersionedMetadata(name='QtCharts', qml=True, lgpl=False),
+ 'QtGraphs':
+ VersionedMetadata(version=(6, 8, 0), lgpl=False),
+
+ 'QtGraphsWidgets':
+ VersionedMetadata(version=(6, 8, 0), lgpl=False),
}
-class PyQtChart(AbstractPackage):
- """ The PyQtChart package. """
+class PyQt6_Graphs(AbstractPackage):
+ """ The PyQt6-Graphs package. """
def get_qt_metadata(self):
""" Return the package-specific meta-data describing the parts of Qt to
diff --git a/pyqtbuild/bundle/packages/pyqt6_webengine.py b/pyqtbuild/bundle/packages/pyqt6_webengine.py
index 1de6c9f..5f45f27 100755
--- a/pyqtbuild/bundle/packages/pyqt6_webengine.py
+++ b/pyqtbuild/bundle/packages/pyqt6_webengine.py
@@ -30,7 +30,7 @@ _QT_METADATA = {
'QtWebEngineQuick':
VersionedMetadata(version=(6, 2, 0),
lib_deps={'': ('QtWebEngineQuickDelegatesQml', )},
- qml=True, qml_names=['QtWebEngine']),
+ qml_names=['QtWebEngine']),
'QtWebEngineWidgets':
VersionedMetadata(version=(6, 2, 0)),
diff --git a/pyqtbuild/bundle/packages/pyqtchart.py b/pyqtbuild/bundle/packages/pyqtchart.py
index 90c5c01..f11dce9 100755
--- a/pyqtbuild/bundle/packages/pyqtchart.py
+++ b/pyqtbuild/bundle/packages/pyqtchart.py
@@ -10,7 +10,7 @@ from ..qt_metadata import VersionedMetadata
# The Qt meta-data for this package.
_QT_METADATA = {
'QtChart':
- VersionedMetadata(name='QtCharts', qml=True, lgpl=False),
+ VersionedMetadata(name='QtCharts', lgpl=False),
}
diff --git a/pyqtbuild/bundle/packages/pyqtdatavisualization.py b/pyqtbuild/bundle/packages/pyqtdatavisualization.py
index 30b1d1c..f430683 100755
--- a/pyqtbuild/bundle/packages/pyqtdatavisualization.py
+++ b/pyqtbuild/bundle/packages/pyqtdatavisualization.py
@@ -10,7 +10,7 @@ from ..qt_metadata import VersionedMetadata
# The Qt meta-data for this package.
_QT_METADATA = {
'QtDataVisualization':
- VersionedMetadata(qml=True, lgpl=False),
+ VersionedMetadata(lgpl=False),
}
diff --git a/pyqtbuild/bundle/packages/pyqtpurchasing.py b/pyqtbuild/bundle/packages/pyqtpurchasing.py
index 9f68cf9..4580d9b 100755
--- a/pyqtbuild/bundle/packages/pyqtpurchasing.py
+++ b/pyqtbuild/bundle/packages/pyqtpurchasing.py
@@ -10,7 +10,7 @@ from ..qt_metadata import VersionedMetadata
# The Qt meta-data for this package.
_QT_METADATA = {
'QtPurchasing':
- VersionedMetadata(qml=True),
+ VersionedMetadata(),
}
diff --git a/pyqtbuild/bundle/packages/pyqtwebengine.py b/pyqtbuild/bundle/packages/pyqtwebengine.py
index f64fc67..d2307c1 100755
--- a/pyqtbuild/bundle/packages/pyqtwebengine.py
+++ b/pyqtbuild/bundle/packages/pyqtwebengine.py
@@ -10,7 +10,7 @@ from ..qt_metadata import VersionedMetadata
# The Qt meta-data for this package.
_QT_METADATA = {
'QtWebEngine':
- VersionedMetadata(qml=True, translations=('qtwebengine', )),
+ VersionedMetadata(translations=('qtwebengine', )),
'QtWebEngineCore':
VersionedMetadata(
diff --git a/pyqtbuild/bundle/qt_metadata.py b/pyqtbuild/bundle/qt_metadata.py
index 191189b..2e7a6fd 100644
--- a/pyqtbuild/bundle/qt_metadata.py
+++ b/pyqtbuild/bundle/qt_metadata.py
@@ -20,9 +20,8 @@ class VersionedMetadata:
def __init__(self, *, version=None, name=None, lib_deps=None,
other_lib_deps=None, exes=None, files=None, others=None, dll=True,
- qml=False, qml_names=None, translations=None,
- excluded_plugins=None, lgpl=True, legacy=False,
- subwheel_files=None):
+ qml_names=None, translations=None, excluded_plugins=None,
+ lgpl=True, legacy=False, subwheel_files=None):
""" Initialise the versioned bindings. """
self._version = version
@@ -33,7 +32,6 @@ class VersionedMetadata:
self._files = {} if files is None else files
self._others = {} if others is None else others
self._dll = dll
- self._qml = qml
self._qml_names = qml_names
self._translations = () if translations is None else translations
self._excluded_plugins = excluded_plugins
@@ -64,7 +62,7 @@ class VersionedMetadata:
raise UserException(
"'lipo' from Xcode must be installed on your system")
- if macos_thin_arch == 'arm64' and AbstractPackage.missing_executable('codesign'):
+ if macos_thin_arch is not None and AbstractPackage.missing_executable('codesign'):
raise UserException(
"'codesign' from Xcode must be installed on your system")
# Bundle any sub-wheel files.
@@ -158,15 +156,12 @@ class VersionedMetadata:
skip_files=skip_files)
# Bundle any QML files.
- if self._qml:
- qml_names = self._qml_names
- if qml_names is None:
- qml_names = [self._name]
+ qml_names = self._qml_names if self._qml_names is not None else [self._name]
- for qml_subdir in qml_names:
- self._bundle_nondebug(os.path.join('qml', qml_subdir),
- target_qt_dir, qt_dir, platform_tag, macos_thin_arch,
- ignore_missing, skip_files=skip_files)
+ for qml_subdir in qml_names:
+ self._bundle_nondebug(os.path.join('qml', qml_subdir),
+ target_qt_dir, qt_dir, platform_tag, macos_thin_arch,
+ ignore_missing, skip_files=skip_files)
# Bundle any plugins. We haven't done the analysis of which plugins
# belong to which package so we assume that only the QtCore package
@@ -288,6 +283,9 @@ class VersionedMetadata:
except:
# If there is any sort of error then just copy it.
shutil.copy2(src, dst)
+
+ subprocess.run(['codesign', '--force', '--sign', '-', dst],
+ stderr=stderr, check=True)
else:
shutil.copy2(src, dst)
elif ignore_missing:
@@ -366,8 +364,10 @@ class VersionedMetadata:
with open(exe, 'wb') as f:
f.write(contents)
- if macos_thin_arch == 'arm64':
- subprocess.run(['codesign', '-s', '-', exe])
+ if macos_thin_arch is not None:
+ stderr = None if is_verbose() else subprocess.DEVNULL
+ subprocess.run(['codesign', '--force', '--sign', '-', exe],
+ stderr=stderr, check=True)
@classmethod
def _fix_win_executable(cls, exe):
diff --git a/pyqtbuild/bundle/qt_wheel.py b/pyqtbuild/bundle/qt_wheel.py
index 2765537..ad18ca1 100644
--- a/pyqtbuild/bundle/qt_wheel.py
+++ b/pyqtbuild/bundle/qt_wheel.py
@@ -41,7 +41,13 @@ def qt_wheel(package, qt_dir, build_tag, suffix, msvc_runtime, openssl,
qt_arch = os.path.basename(qt_dir)
if qt_arch in ('gcc_64', 'gcc_arm64'):
- manylinux = '_2_28' if package.qt_version[0] == 6 else '2014'
+ if package.qt_version >= (6, 8, 0):
+ manylinux = '_2_35' if qt_arch == 'gcc_64' else '_2_39'
+ elif package.qt_version >= (6, 0, 0):
+ manylinux = '_2_28'
+ else:
+ manylinux = '2014'
+
wheel_arch = 'x86_64' if qt_arch == 'gcc_64' else 'aarch64'
platform_tag = f'manylinux{manylinux}_{wheel_arch}'
diff --git a/pyqtbuild/project.py b/pyqtbuild/project.py
index e104fe3..ba1e54e 100644
--- a/pyqtbuild/project.py
+++ b/pyqtbuild/project.py
@@ -50,6 +50,9 @@ class PyQtProject(Project):
super().apply_user_defaults(tool)
+ major = self.py_major_version
+ minor = self.py_minor_version
+
# Get the details of the default Python interpreter library. Note that
# these are actually non-user options but we need the 'link_full_dll'
# user option in order to set them.
@@ -60,18 +63,16 @@ class PyQtProject(Project):
# See if we are using the limited API.
if self.py_debug or self.link_full_dll:
- pylib_lib = 'python{}{}{}'.format(self.py_major_version,
- self.py_minor_version, debug_suffix)
+ pylib_lib = f'python{major}{minor}{debug_suffix}'
else:
- pylib_lib = 'python{}{}'.format(self.py_major_version,
- debug_suffix)
+ pylib_lib = f'python{major}{debug_suffix}'
# Assume Python is a DLL on Windows.
pylib_shlib = pylib_lib
else:
abi = getattr(sys, 'abiflags', '')
- pylib_lib = 'python{}.{}{}'.format(self.py_major_version,
- self.py_minor_version, abi)
+
+ pylib_lib = f'python{major}.{minor}{abi}'
pylib_dir = pylib_shlib = ''
# Get the additional configuration.
@@ -87,19 +88,22 @@ class PyQtProject(Project):
dynamic_pylib = '--enable-framework' in config_args
if dynamic_pylib:
- pylib_shlib = ducfg.get('LDLIBRARY', '')
-
exec_prefix = ducfg['exec_prefix']
multiarch = ducfg.get('MULTIARCH', '')
libdir = ducfg['LIBDIR']
- if glob('{}/lib/libpython{}.{}*'.format(exec_prefix, self.py_major_version, self.py_minor_version)):
- pylib_dir = exec_prefix + '/lib'
- elif multiarch != '' and glob('{}/lib/{}/libpython{}.{}*'.format(exec_prefix, multiarch, self.py_major_version, self.py_minor_version)):
- pylib_dir = exec_prefix + '/lib/' + multiarch
- elif glob('{}/libpython{}.{}*'.format(libdir, self.py_major_version, self.py_minor_version)):
+ pattern = f'libpython{major}.{minor}*'
+
+ if glob(os.path.join(exec_prefix, 'lib', pattern)):
+ pylib_dir = os.path.join(exec_prefix, 'lib')
+ elif multiarch != '' and glob(os.path.join(exec_prefix, 'lib', multiarch, pattern)):
+ pylib_dir = os.path.join(exec_prefix, 'lib', multiarch)
+ elif glob(os.path.join(libdir, pattern)):
pylib_dir = libdir
+ if pylib_dir != '':
+ pylib_shlib = os.path.join(pylib_dir, 'lib' + pylib_lib)
+
# Apply the defaults if necessary.
if self.py_pylib_dir == '':
self.py_pylib_dir = pylib_dir
More information about the Neon-commits
mailing list