[neon/forks/pyqt-builder/Neon/release] /: New upstream version 1.11.0+dfsg

Dmitry Shachnev null at kde.org
Mon Oct 18 17:21:13 BST 2021


Git commit 521af1f7008909aa04e10276b67c33514fff070d by Dmitry Shachnev.
Committed on 03/10/2021 at 18:59.
Pushed by jriddell into branch 'Neon/release'.

New upstream version 1.11.0+dfsg

M  +86   -1    ChangeLog
M  +4    -0    NEWS
M  +56   -51   PKG-INFO
M  +56   -51   PyQt_builder.egg-info/PKG-INFO
M  +2    -1    PyQt_builder.egg-info/SOURCES.txt
M  +4    -2    pyqtbuild/builder.py
M  +1    -0    pyqtbuild/bundle/packages/__init__.py
M  +6    -0    pyqtbuild/bundle/packages/pyqt.py
M  +64   -46   pyqtbuild/bundle/packages/pyqt6.py
A  +64   -0    pyqtbuild/bundle/packages/pyqt6_webengine.py
M  +42   -22   pyqtbuild/bundle/qt_metadata.py
M  +7    -1    pyqtbuild/bundle/verbose.py
M  +2    -2    pyqtbuild/version.py

https://invent.kde.org/neon/forks/pyqt-builder/commit/521af1f7008909aa04e10276b67c33514fff070d

diff --git a/ChangeLog b/ChangeLog
index 704b2b6..828e07f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,93 @@
+2021-09-25  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/bundle/packages/pyqt6_webengine.py:
+	Fixed a native path inconsistency.
+	[128fd244a822] [1.11.0]
+
+2021-09-22  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* pyqtbuild/bundle/packages/pyqt6.py:
+	Enable QtBluetooth and QtNfc.
+	[a67741107958]
+
+	* NEWS, pyqtbuild/bundle/packages/pyqt6.py:
+	Added support for bundling QAxContainer.
+	[d30022bc29ee]
+
+2021-09-21  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/bundle/packages/pyqt6_webengine.py:
+	Fixed the PyQt6-WebEngine-Qt wheel so that QtWebEngineProcess can
+	find its resources on Windows.
+	[59e15a25db3d]
+
+2021-09-19  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* pyqtbuild/bundle/qt_metadata.py:
+	Fixes for Python v3.6.
+	[c0ad44be7b76]
+
+	* NEWS, pyqtbuild/bundle/qt_metadata.py, pyqtbuild/bundle/verbose.py:
+	Qt libraries have the arm64 code removed when bundling or creating
+	Qt wheels.
+	[7b6bfb3c29d4]
+
+2021-09-18  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* pyqtbuild/bundle/packages/pyqt.py:
+	Don't bundle the OpenSSL libraries for Qt v6.2.0 and later.
+	[eb435cbe95e9]
+
+	* NEWS, pyqtbuild/bundle/qt_metadata.py:
+	Fixed the bundling of non-debug DLLs that end with a 'd' (ie. the
+	TLS plugins).
+	[533def3bd075]
+
+2021-09-15  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/builder.py:
+	Fixes for MinGW support.
+	[24f5bfc4de7a]
+
+2021-08-25  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/bundle/packages/__init__.py,
+	pyqtbuild/bundle/packages/pyqt6_webengine.py:
+	Added support for PyQt6-WebEngine.
+	[1075fbb452ce]
+
+2021-08-02  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* pyqtbuild/bundle/packages/pyqt6.py:
+	More Qt metadata fixes.
+	[517e02292b51]
+
+	* pyqtbuild/bundle/packages/pyqt6.py:
+	Further updates to the Qt metadata for Qt v6.2.0beta2.
+	[eaa269cc0b01]
+
+2021-08-01  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/bundle/packages/pyqt6.py:
+	Updated the Qt metadata for v6.2.0.
+	[8aa4f13e15fb]
+
+2021-07-16  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS, pyqtbuild/bundle/packages/pyqt6.py:
+	Fixed the changed Qt library names in v6.2.0.
+	[e1ac73ff29ce]
+
+2021-07-12  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* Merged the 1.10-maint branch.
+	[9ca728c89b53]
+
 2021-07-04  Phil Thompson  <phil at riverbankcomputing.com>
 
 	* .hgtags:
 	Added tag 1.10.3 for changeset a5437106d445
-	[8b4126f4e0c2] [tip] <1.10-maint>
+	[8b4126f4e0c2] <1.10-maint>
 
 	* NEWS, pyqtbuild/bundle/qt_wheel.py:
 	Handle the change in the name of the Qt architecture for macOS in Qt
diff --git a/NEWS b/NEWS
index 0689340..880f0b5 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+v1.11.0 25th September 2021
+  - Added support for bundling Qt v6.2.
+  - Added support for PyQt6-WebEngine to pyqt-bundle.
+
 v1.10.3 4th July 2021
   - A bug fix release.
 
diff --git a/PKG-INFO b/PKG-INFO
index 1080c53..6cfc961 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,61 +1,66 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: PyQt-builder
-Version: 1.10.3
+Version: 1.11.0
 Summary: The PEP 517 compliant PyQt build system
 Home-page: https://www.riverbankcomputing.com/software/pyqt-builder/
 Author: Riverbank Computing Limited
 Author-email: info at riverbankcomputing.com
 License: SIP
-Description: PyQt-builder - The PEP 517 Compliant PyQt Build System
-        ======================================================
-        
-        What is PyQt-builder?
-        ---------------------
-        
-        PyQt-builder is the PEP 517 compliant build system for PyQt and projects that
-        extend PyQt.  It extends the SIP build system and uses Qt's ``qmake`` to
-        perform the actual compilation and installation of extension modules.
-        
-        Projects that use PyQt-builder provide an appropriate ``pyproject.toml`` file
-        and an optional ``project.py`` script.  Any PEP 517 compliant frontend, for
-        example ``sip-install`` or ``pip`` can then be used to build and install the
-        project.
-        
-        
-        Author
-        ------
-        
-        PyQt-builder is copyright (c) Riverbank Computing Limited.  Its homepage is
-        https://www.riverbankcomputing.com/software/pyqt-builder/.
-        
-        Support may be obtained from the PyQt mailing list at
-        https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
-        
-        
-        License
-        -------
-        
-        PyQt-builder is released under the same licenses as SIP.
-        
-        
-        Installation
-        ------------
-        
-        PyQt-builder can be installed from PyPI::
-        
-            pip install PyQt-builder
-        
-        However you do not normally need to explicitly install it.  It will be
-        installed automatically when it is needed.
-        
-        
-        Documentation
-        -------------
-        
-        The documentation for the latest release can be found
-        `here <https://www.riverbankcomputing.com/static/Docs/PyQt-builder/>`__.
-        
 Platform: X11
 Platform: macOS
 Platform: Windows
 Requires-Python: >=3.5
+License-File: LICENSE
+License-File: LICENSE-GPL3
+License-File: LICENSE-GPL2
+
+PyQt-builder - The PEP 517 Compliant PyQt Build System
+======================================================
+
+What is PyQt-builder?
+---------------------
+
+PyQt-builder is the PEP 517 compliant build system for PyQt and projects that
+extend PyQt.  It extends the SIP build system and uses Qt's ``qmake`` to
+perform the actual compilation and installation of extension modules.
+
+Projects that use PyQt-builder provide an appropriate ``pyproject.toml`` file
+and an optional ``project.py`` script.  Any PEP 517 compliant frontend, for
+example ``sip-install`` or ``pip`` can then be used to build and install the
+project.
+
+
+Author
+------
+
+PyQt-builder is copyright (c) Riverbank Computing Limited.  Its homepage is
+https://www.riverbankcomputing.com/software/pyqt-builder/.
+
+Support may be obtained from the PyQt mailing list at
+https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
+
+
+License
+-------
+
+PyQt-builder is released under the same licenses as SIP.
+
+
+Installation
+------------
+
+PyQt-builder can be installed from PyPI::
+
+    pip install PyQt-builder
+
+However you do not normally need to explicitly install it.  It will be
+installed automatically when it is needed.
+
+
+Documentation
+-------------
+
+The documentation for the latest release can be found
+`here <https://www.riverbankcomputing.com/static/Docs/PyQt-builder/>`__.
+
+
diff --git a/PyQt_builder.egg-info/PKG-INFO b/PyQt_builder.egg-info/PKG-INFO
index 1080c53..6cfc961 100644
--- a/PyQt_builder.egg-info/PKG-INFO
+++ b/PyQt_builder.egg-info/PKG-INFO
@@ -1,61 +1,66 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: PyQt-builder
-Version: 1.10.3
+Version: 1.11.0
 Summary: The PEP 517 compliant PyQt build system
 Home-page: https://www.riverbankcomputing.com/software/pyqt-builder/
 Author: Riverbank Computing Limited
 Author-email: info at riverbankcomputing.com
 License: SIP
-Description: PyQt-builder - The PEP 517 Compliant PyQt Build System
-        ======================================================
-        
-        What is PyQt-builder?
-        ---------------------
-        
-        PyQt-builder is the PEP 517 compliant build system for PyQt and projects that
-        extend PyQt.  It extends the SIP build system and uses Qt's ``qmake`` to
-        perform the actual compilation and installation of extension modules.
-        
-        Projects that use PyQt-builder provide an appropriate ``pyproject.toml`` file
-        and an optional ``project.py`` script.  Any PEP 517 compliant frontend, for
-        example ``sip-install`` or ``pip`` can then be used to build and install the
-        project.
-        
-        
-        Author
-        ------
-        
-        PyQt-builder is copyright (c) Riverbank Computing Limited.  Its homepage is
-        https://www.riverbankcomputing.com/software/pyqt-builder/.
-        
-        Support may be obtained from the PyQt mailing list at
-        https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
-        
-        
-        License
-        -------
-        
-        PyQt-builder is released under the same licenses as SIP.
-        
-        
-        Installation
-        ------------
-        
-        PyQt-builder can be installed from PyPI::
-        
-            pip install PyQt-builder
-        
-        However you do not normally need to explicitly install it.  It will be
-        installed automatically when it is needed.
-        
-        
-        Documentation
-        -------------
-        
-        The documentation for the latest release can be found
-        `here <https://www.riverbankcomputing.com/static/Docs/PyQt-builder/>`__.
-        
 Platform: X11
 Platform: macOS
 Platform: Windows
 Requires-Python: >=3.5
+License-File: LICENSE
+License-File: LICENSE-GPL3
+License-File: LICENSE-GPL2
+
+PyQt-builder - The PEP 517 Compliant PyQt Build System
+======================================================
+
+What is PyQt-builder?
+---------------------
+
+PyQt-builder is the PEP 517 compliant build system for PyQt and projects that
+extend PyQt.  It extends the SIP build system and uses Qt's ``qmake`` to
+perform the actual compilation and installation of extension modules.
+
+Projects that use PyQt-builder provide an appropriate ``pyproject.toml`` file
+and an optional ``project.py`` script.  Any PEP 517 compliant frontend, for
+example ``sip-install`` or ``pip`` can then be used to build and install the
+project.
+
+
+Author
+------
+
+PyQt-builder is copyright (c) Riverbank Computing Limited.  Its homepage is
+https://www.riverbankcomputing.com/software/pyqt-builder/.
+
+Support may be obtained from the PyQt mailing list at
+https://www.riverbankcomputing.com/mailman/listinfo/pyqt/.
+
+
+License
+-------
+
+PyQt-builder is released under the same licenses as SIP.
+
+
+Installation
+------------
+
+PyQt-builder can be installed from PyPI::
+
+    pip install PyQt-builder
+
+However you do not normally need to explicitly install it.  It will be
+installed automatically when it is needed.
+
+
+Documentation
+-------------
+
+The documentation for the latest release can be found
+`here <https://www.riverbankcomputing.com/static/Docs/PyQt-builder/>`__.
+
+
diff --git a/PyQt_builder.egg-info/SOURCES.txt b/PyQt_builder.egg-info/SOURCES.txt
index bae1181..d816489 100644
--- a/PyQt_builder.egg-info/SOURCES.txt
+++ b/PyQt_builder.egg-info/SOURCES.txt
@@ -59,7 +59,7 @@ doc/html/_static/pygments.css
 doc/html/_static/riverbank.css
 doc/html/_static/searchtools.js
 doc/html/_static/sidebar.js
-doc/html/_static/underscore-1.13.1.js
+doc/html/_static/underscore-1.3.1.js
 doc/html/_static/underscore.js
 doc/riverbank/layout.html
 doc/riverbank/theme.conf
@@ -109,6 +109,7 @@ pyqtbuild/bundle/packages/pyqt6_3d.py
 pyqtbuild/bundle/packages/pyqt6_charts.py
 pyqtbuild/bundle/packages/pyqt6_datavisualization.py
 pyqtbuild/bundle/packages/pyqt6_networkauth.py
+pyqtbuild/bundle/packages/pyqt6_webengine.py
 pyqtbuild/bundle/packages/pyqtchart.py
 pyqtbuild/bundle/packages/pyqtdatavisualization.py
 pyqtbuild/bundle/packages/pyqtnetworkauth.py
diff --git a/pyqtbuild/builder.py b/pyqtbuild/builder.py
index 105a6e4..ad9275e 100644
--- a/pyqtbuild/builder.py
+++ b/pyqtbuild/builder.py
@@ -103,6 +103,8 @@ class QmakeBuilder(Builder):
                 py_platform = 'wasm'
             elif 'win32' in xspec:
                 py_platform = 'win32'
+            elif 'mingw-w64' in xspec:
+                py_platform = 'win32'
             else:
                 # Treat everything else as Linux.
                 py_platform = 'linux'
@@ -336,8 +338,8 @@ class QmakeBuilder(Builder):
         """ Return the name of a valid make program. """
 
         if self.project.py_platform == 'win32':
-            if self.spec == 'win32-g++':
-                make = 'mingw32-make'
+            if 'g++' in self.spec:
+                make = 'make'
             else:
                 make = 'nmake'
         else:
diff --git a/pyqtbuild/bundle/packages/__init__.py b/pyqtbuild/bundle/packages/__init__.py
index fa96fae..5154cea 100644
--- a/pyqtbuild/bundle/packages/__init__.py
+++ b/pyqtbuild/bundle/packages/__init__.py
@@ -28,6 +28,7 @@ from .pyqt6_3d import PyQt6_3D
 from .pyqt6_charts import PyQt6_Charts
 from .pyqt6_datavisualization import PyQt6_DataVisualization
 from .pyqt6_networkauth import PyQt6_NetworkAuth
+from .pyqt6_webengine import PyQt6_WebEngine
 
 from .pyqt5 import PyQt5
 from .pyqt3d import PyQt3D
diff --git a/pyqtbuild/bundle/packages/pyqt.py b/pyqtbuild/bundle/packages/pyqt.py
index 1c63675..d5dddcd 100644
--- a/pyqtbuild/bundle/packages/pyqt.py
+++ b/pyqtbuild/bundle/packages/pyqt.py
@@ -48,6 +48,12 @@ class PyQt(AbstractPackage):
     def bundle_openssl(self, target_qt_dir, openssl_dir, arch):
         """ Bundle the OpenSSL DLLs. """
 
+        # Qt v6.2.0 and later include appropriate backends.
+        if self.qt_version >= (6, 2, 0):
+            verbose(
+                    "OpenSSL libraries are not required for Qt v6.2.0 and later")
+            return
+
         if openssl_dir:
             verbose(
                     "Bundling the OpenSSL libraries from '{0}'".format(
diff --git a/pyqtbuild/bundle/packages/pyqt6.py b/pyqtbuild/bundle/packages/pyqt6.py
index b331d13..32b42d8 100644
--- a/pyqtbuild/bundle/packages/pyqt6.py
+++ b/pyqtbuild/bundle/packages/pyqt6.py
@@ -29,28 +29,28 @@ from .pyqt import PyQt
 
 # The Qt meta-data for this package.
 _QT_METADATA = {
-    #'QAxContainer':
-    #    VersionedMetadata(dll=False),
+    'QAxContainer':
+        VersionedMetadata(dll=False),
 
-    #'QtBluetooth':
-    #    VersionedMetadata(
-    #        lib_deps={
-    #            'linux': ('QtConcurrent', ),
-    #            'macos': ('QtConcurrent', )},
-    #        qml=True),
+    'QtBluetooth':
+        VersionedMetadata(version=(6, 2, 0), qml=True),
 
-    'QtCore':
-        VersionedMetadata(
+    'QtCore': (
+        VersionedMetadata(version=(6, 2, 0),
             other_lib_deps={
                 'linux': ('libicui18n.so.56', 'libicuuc.so.56',
                           'libicudata.so.56')},
-            translations=('qt_help', 'qtbase', 'qtdeclarative', 
-                'qtquickcontrols2', 'qt_'),
-            #translations=('qt_help', 'qtbase', 'qtconnectivity',
-            #    'qtdeclarative', 'qtlocation', 'qtmultimedia',
-            #    'qtquickcontrols2', 'qtserialport', 'qtwebsockets',
-            #    'qtxmlpatterns', 'qt_'),
+            translations=('qt_', 'qt_help', 'qtbase', 'qtdeclarative', 
+                'qtlocation', 'qtmultimedia', 'qtquickcontrols2',
+                'qtserialport', 'qtwebsockets'),
             excluded_plugins=('designer', 'qmltooling')),
+        VersionedMetadata(
+            other_lib_deps={
+                'linux': ('libicui18n.so.56', 'libicuuc.so.56',
+                          'libicudata.so.56')},
+            translations=('qt_', 'qt_help', 'qtbase', 'qtdeclarative', 
+                'qtquickcontrols2'),
+            excluded_plugins=('designer', 'qmltooling'))),
 
     'QtDBus':
         VersionedMetadata(),
@@ -58,32 +58,34 @@ _QT_METADATA = {
     'QtDesigner':
         VersionedMetadata(),
 
-    'QtGui':
-        VersionedMetadata(lib_deps={'linux': ('QtWaylandClient', 'QtXcbQpa')},
+    'QtGui': (
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'linux': ('QtWaylandClient', 'QtXcbQpa')},
                 other_lib_deps={
                         'win': ('d3dcompiler_47.dll', 'opengl32sw.dll')}),
+        VersionedMetadata(lib_deps={'linux': ('QtWaylandClient', 'QtXcbQpa')},
+                other_lib_deps={
+                        'win': ('d3dcompiler_47.dll', 'opengl32sw.dll')})),
 
     'QtHelp':
         VersionedMetadata(),
 
     #'QtLocation':
-    #    VersionedMetadata(
-    #            lib_deps={'': ('QtPositioningQuick', )},
-    #            qml=True),
+    #    VersionedMetadata(qml=True),
 
-    #'QtMultimedia':
-    #    VersionedMetadata(
-    #            lib_deps={'linux': ('QtMultimediaGstTools', )},
-    #            qml=True, qml_names=('QtAudioEngine', 'QtMultimedia')),
+    'QtMultimedia':
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'': ('QtMultimediaQuick', )},
+                qml=True),
 
-    #'QtMultimediaWidgets':
-    #    VersionedMetadata(),
+    'QtMultimediaWidgets':
+        VersionedMetadata(version=(6, 2, 0)),
 
     'QtNetwork':
         VersionedMetadata(),
 
-    #'QtNfc':
-    #    VersionedMetadata(qml=True),
+    'QtNfc':
+        VersionedMetadata(version=(6, 2, 0), qml=True),
 
     'QtOpenGL':
         VersionedMetadata(),
@@ -91,8 +93,10 @@ _QT_METADATA = {
     'QtOpenGLWidgets':
         VersionedMetadata(),
 
-    #'QtPositioning':
-    #    VersionedMetadata(qml=True),
+    'QtPositioning':
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'': ('QtPositioningQuick', )},
+                qml=True),
 
     'QtPrintSupport':
         VersionedMetadata(),
@@ -102,19 +106,29 @@ _QT_METADATA = {
                 lib_deps={'': ('QtQmlModels', 'QtQmlWorkerScript')},
                 qml=True),
 
-    'QtQuick':
+    'QtQuick': (
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Impl',
+                        'QtQuickDialogs2', 'QtQuickDialogs2QuickImpl',
+                        'QtQuickDialogs2Utils', 'QtQuickLayouts',
+                        'QtQuickParticles', 'QtQuickShapes',
+                        'QtQuickTemplates2', 'QtQuickTest',
+                        'QtQuickTimeline')},
+                qml=True),
         VersionedMetadata(
                 lib_deps={'': ('QtQuickControls2', 'QtQuickControls2Impl',
                         'QtQuickLayouts', 'QtQuickParticles', 'QtQuickShapes',
                         'QtQuickTemplates2', 'QtQuickTest')},
-                qml=True),
+                qml=True)),
 
     'QtQuick3D': (
         VersionedMetadata(version=(6, 1, 0),
                 lib_deps={
-                        '': ('QtQuick3DAssetImport', 'QtQuick3DIblBaker',
-                        'QtQuick3DParticles', 'QtQuick3DRuntimeRender',
-                        'QtQuick3DUtils', 'QtShaderTools')},
+                        '': ('QtQuick3DAssetImport', 'QtQuick3DAssetUtils',
+                        'QtQuick3DEffects', 'QtQuick3DHelpers',
+                        'QtQuick3DIblBaker', 'QtQuick3DParticles',
+                        'QtQuick3DRuntimeRender', 'QtQuick3DUtils',
+                        'QtShaderTools')},
                 qml=True),
         VersionedMetadata(
                 lib_deps={
@@ -125,14 +139,18 @@ _QT_METADATA = {
     'QtQuickWidgets':
         VersionedMetadata(),
 
-    #'QtRemoteObjects':
-    #    VersionedMetadata(qml=True),
+    'QtRemoteObjects':
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'': ('QtRemoteObjectsQml', )},
+                qml=True),
 
-    #'QtSensors':
-    #    VersionedMetadata(qml=True),
+    'QtSensors':
+        VersionedMetadata(version=(6, 2, 0),
+                lib_deps={'': ('QtSensorsQuick', )},
+                qml=True),
 
-    #'QtSerialPort':
-    #    VersionedMetadata(),
+    'QtSerialPort':
+        VersionedMetadata(version=(6, 2, 0)),
 
     'QtSql':
         VersionedMetadata(),
@@ -149,11 +167,11 @@ _QT_METADATA = {
     #'QtTextToSpeech':
     #    VersionedMetadata(),
 
-    #'QtWebChannel':
-    #    VersionedMetadata(qml=True),
+    'QtWebChannel':
+        VersionedMetadata(version=(6, 2, 0), qml=True),
 
-    #'QtWebSockets':
-    #    VersionedMetadata(qml=True),
+    'QtWebSockets':
+        VersionedMetadata(version=(6, 2, 0), qml=True),
 
     'QtWidgets':
         VersionedMetadata(),
diff --git a/pyqtbuild/bundle/packages/pyqt6_webengine.py b/pyqtbuild/bundle/packages/pyqt6_webengine.py
new file mode 100755
index 0000000..d7327a9
--- /dev/null
+++ b/pyqtbuild/bundle/packages/pyqt6_webengine.py
@@ -0,0 +1,64 @@
+# Copyright (c) 2021, Riverbank Computing Limited
+# All rights reserved.
+#
+# This copy of PyQt-builder is licensed for use under the terms of the SIP
+# License Agreement.  See the file LICENSE for more details.
+#
+# This copy of PyQt-builder may also used under the terms of the GNU General
+# Public License v2 or v3 as published by the Free Software Foundation which
+# can be found in the files LICENSE-GPL2 and LICENSE-GPL3 included in this
+# package.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+
+from ..abstract_package import AbstractPackage
+from ..qt_metadata import VersionedMetadata
+
+
+# The Qt meta-data for this package.
+_QT_METADATA = {
+    'QtWebEngineCore':
+        VersionedMetadata(version=(6, 2, 0),
+            other_lib_deps={
+                'macos': ('QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/Info.plist', )},
+            exes={
+                'linux': ('libexec/QtWebEngineProcess', ),
+                'macos': ('lib/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess', ),
+                'win':   ('bin\\QtWebEngineProcess.exe', )},
+            files={
+                'win':  (('lib\\Qt6Core.lib',
+                        "Enable QtWebEngineProcess to find it's resources.\n"), )},
+            others={
+                'linux': ('resources', 'translations/qtwebengine_locales'),
+                'win':   ('resources', 'translations\\qtwebengine_locales')}),
+
+    'QtWebEngineQuick':
+        VersionedMetadata(version=(6, 2, 0),
+            lib_deps={'': ('QtWebEngineQuickDelegatesQml', )},
+            qml=True, qml_names=['QtWebEngine']),
+
+    'QtWebEngineWidgets':
+        VersionedMetadata(version=(6, 2, 0)),
+}
+
+
+class PyQt6_WebEngine(AbstractPackage):
+    """ The PyQt6-WebEngine package. """
+
+    def get_qt_metadata(self):
+        """ Return the package-specific meta-data describing the parts of Qt to
+        install.
+        """
+
+        return _QT_METADATA
diff --git a/pyqtbuild/bundle/qt_metadata.py b/pyqtbuild/bundle/qt_metadata.py
index f337e2a..13cf3b3 100644
--- a/pyqtbuild/bundle/qt_metadata.py
+++ b/pyqtbuild/bundle/qt_metadata.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2020, Riverbank Computing Limited
+# Copyright (c) 2021, Riverbank Computing Limited
 # All rights reserved.
 #
 # This copy of PyQt-builder is licensed for use under the terms of the SIP
@@ -29,7 +29,7 @@ import subprocess
 
 from sipbuild import UserException
 
-from .verbose import verbose
+from .verbose import is_verbose, verbose
 
 
 class VersionedMetadata:
@@ -96,17 +96,18 @@ class VersionedMetadata:
                         for qt_lib in lib_contents:
                             if fnmatch.fnmatch(qt_lib, lib):
                                 self._bundle_library(qt_lib, target_qt_dir,
-                                        qt_dir, arch, ignore_missing)
+                                        qt_dir, arch, qt_version,
+                                        ignore_missing)
                     else:
                         self._bundle_library(lib, target_qt_dir, qt_dir, arch,
-                                ignore_missing)
+                                qt_version, ignore_missing)
 
         # Bundle any executables.
         for exe_arch, exes in self._exes.items():
             if exe_arch == '' or exe_arch == arch:
                 for exe in exes:
                     bundled_exe = self._bundle_file(exe, target_qt_dir, qt_dir,
-                            ignore_missing)
+                            arch, qt_version, ignore_missing)
 
                     if bundled_exe is not None:
                         if arch == 'linux':
@@ -124,14 +125,15 @@ class VersionedMetadata:
 
             for qml_subdir in qml_names:
                 self._bundle_nondebug(os.path.join('qml', qml_subdir),
-                        target_qt_dir, qt_dir, arch, ignore_missing)
+                        target_qt_dir, qt_dir, arch, qt_version,
+                        ignore_missing)
 
         # Bundle any plugins.  We haven't done the analysis of which plugins
         # belong to which package so we assume that only the QtCore package
         # will specify any to exclude and we bundle all of them with that.
         if self._excluded_plugins is not None:
             self._bundle_nondebug('plugins', target_qt_dir, qt_dir, arch,
-                    ignore_missing, exclude=self._excluded_plugins)
+                    qt_version, ignore_missing, exclude=self._excluded_plugins)
 
         # Bundle any translations:
         if self._translations:
@@ -142,8 +144,9 @@ class VersionedMetadata:
                 if qm.endswith('.qm'):
                     for prefix in self._translations:
                         if qm.startswith(prefix):
-                            self._bundle_file(qm, target_tr_dir, tr_dir,
-                                    ignore_missing)
+                            self._bundle_file(qm, target_tr_dir, tr_dir, arch,
+                                    qt_version, ignore_missing,
+                                    might_be_code=False)
 
         # Bundle any dynamically created files.
         for files_arch, files in self._files.items():
@@ -160,7 +163,8 @@ class VersionedMetadata:
             if oth_arch == '' or oth_arch == arch:
                 for oth in others:
                     self._bundle_file(oth, target_qt_dir, qt_dir,
-                            ignore_missing)
+                            arch, qt_version, ignore_missing,
+                            might_be_code=False)
 
     def is_applicable(self, qt_version):
         """ Returns True if this meta-data is applicable for a particular Qt
@@ -170,7 +174,7 @@ class VersionedMetadata:
         return self._version is None or qt_version >= self._version
 
     @classmethod
-    def _bundle_nondebug(cls, src_dir, target_qt_dir, qt_dir, arch,
+    def _bundle_nondebug(cls, src_dir, target_qt_dir, qt_dir, arch, qt_version,
             ignore_missing, exclude=None):
         """ Bundle the non-debug contents of a directory. """
 
@@ -194,10 +198,12 @@ class VersionedMetadata:
 
                 cls._bundle_file(
                         os.path.relpath(os.path.join(dirpath, name), qt_dir),
-                        target_qt_dir, qt_dir, ignore_missing)
+                        target_qt_dir, qt_dir, arch, qt_version,
+                        ignore_missing)
 
     @staticmethod
-    def _bundle_file(name, target_dir, src_dir, ignore_missing, ignore=None):
+    def _bundle_file(name, target_dir, src_dir, arch, qt_version,
+            ignore_missing, ignore=None, might_be_code=True):
         """ Bundle a file (or directory) and return the name of the installed
         file (or directory) or None if it was missing.
         """
@@ -210,7 +216,19 @@ class VersionedMetadata:
         if os.path.isdir(src):
             shutil.copytree(src, dst, ignore=ignore)
         elif os.path.isfile(src):
-            shutil.copy2(src, dst)
+            # See if it worth trying to remove the arm64 code.
+            if arch == 'macos' and might_be_code and qt_version >= (6, 2, 0):
+                stderr = None if is_verbose() else subprocess.DEVNULL
+
+                try:
+                    subprocess.run(
+                            ['lipo', '-thin', 'x86_64', '-output', dst, src],
+                            stderr=stderr, check=True)
+                except:
+                    # If there is any sort of error then just copy it.
+                    shutil.copy2(src, dst)
+            else:
+                shutil.copy2(src, dst)
         elif ignore_missing:
             verbose("Ignoring missing '{0}'".format(name))
             dst = None
@@ -221,14 +239,14 @@ class VersionedMetadata:
         return dst
 
     @classmethod
-    def _bundle_library(cls, name, target_qt_dir, qt_dir, arch, ignore_missing,
-            ignore=None):
+    def _bundle_library(cls, name, target_qt_dir, qt_dir, arch, qt_version,
+            ignore_missing, ignore=None):
         """ Bundle a library. """
 
         cls._bundle_file(name,
                 os.path.join(target_qt_dir, cls._get_qt_library_subdir(arch)),
-                cls._get_qt_library_dir(qt_dir, arch), ignore_missing,
-                ignore=ignore)
+                cls._get_qt_library_dir(qt_dir, arch), arch, qt_version,
+                ignore_missing, ignore=ignore)
 
     @classmethod
     def _bundle_qt_library(cls, name, target_qt_dir, qt_dir, arch, qt_version,
@@ -236,12 +254,12 @@ class VersionedMetadata:
         """ Bundle a Qt library. """
 
         cls._bundle_library(cls._impl_from_library(name, arch, qt_version),
-                target_qt_dir, qt_dir, arch, ignore_missing)
+                target_qt_dir, qt_dir, arch, qt_version, ignore_missing)
 
         if arch == 'macos':
             # Copy the Resources directory without the unnecessary .prl files.
             cls._bundle_library('{}.framework/Resources'.format(name),
-                    target_qt_dir, qt_dir, arch, ignore_missing,
+                    target_qt_dir, qt_dir, arch, qt_version, ignore_missing,
                     ignore=lambda d, c: [f for f in c if f.endswith('.prl')])
 
     @staticmethod
@@ -348,6 +366,8 @@ class VersionedMetadata:
             return name.endswith('_debug.dylib') or name.endswith('.dSYM')
 
         if arch == 'win':
-            # This is a bit flakely as we could have a non-debug DLL that ends
-            # with a 'd'.
+            # Special case known non-debug DLLs that end with a 'd'.
+            if name.endswith('backend.dll'):
+                return False
+
             return name.endswith('.pdb') or name.endswith('d.dll')
diff --git a/pyqtbuild/bundle/verbose.py b/pyqtbuild/bundle/verbose.py
index 1743043..bc8acd4 100644
--- a/pyqtbuild/bundle/verbose.py
+++ b/pyqtbuild/bundle/verbose.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2020, Riverbank Computing Limited
+# Copyright (c) 2021, Riverbank Computing Limited
 # All rights reserved.
 #
 # This copy of PyQt-builder is licensed for use under the terms of the SIP
@@ -26,6 +26,12 @@
 _verbose = False
 
 
+def is_verbose():
+    """ Return True if verbose progress messages are enabled. """
+
+    return _verbose
+
+
 def set_verbose(verbose):
     """ Enable or disable verbose progress messages. """
 
diff --git a/pyqtbuild/version.py b/pyqtbuild/version.py
index cc2e9d7..52f0fa6 100644
--- a/pyqtbuild/version.py
+++ b/pyqtbuild/version.py
@@ -1,2 +1,2 @@
-PYQTBUILD_VERSION = 0x010a03
-PYQTBUILD_VERSION_STR = '1.10.3'
+PYQTBUILD_VERSION = 0x010b00
+PYQTBUILD_VERSION_STR = '1.11.0'



More information about the Neon-commits mailing list