[neon/backports-jammy/snapd-glib/Neon/stable] debian/patches: add patch for qt6 bindings

Carlos De Maine null at kde.org
Sat Mar 30 06:20:04 GMT 2024


Git commit 34033c8a7a4b9ea0e79662e381dae015b4b50981 by Carlos De Maine.
Committed on 30/03/2024 at 06:20.
Pushed by carlosdem into branch 'Neon/stable'.

add patch for qt6 bindings

A  +586  -0    debian/patches/allow_dual_build_of_qt5_and_qt6_upstream_147
A  +1    -0    debian/patches/series

https://invent.kde.org/neon/backports-jammy/snapd-glib/-/commit/34033c8a7a4b9ea0e79662e381dae015b4b50981

diff --git a/debian/patches/allow_dual_build_of_qt5_and_qt6_upstream_147 b/debian/patches/allow_dual_build_of_qt5_and_qt6_upstream_147
new file mode 100644
index 0000000..de94adf
--- /dev/null
+++ b/debian/patches/allow_dual_build_of_qt5_and_qt6_upstream_147
@@ -0,0 +1,586 @@
+diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
+index 8a8668f2..c7bbd190 100644
+--- a/.github/workflows/test.yaml
++++ b/.github/workflows/test.yaml
+@@ -55,7 +55,7 @@ jobs:
+       - name: Install dependencies (Fedora)
+         if: startsWith(matrix.image, 'fedora:')
+         run: |
+-          dnf install -y gcc gcc-c++ gobject-introspection-devel glib2-devel gtk-doc json-glib-devel libsoup3-devel ninja-build python3-pip qt5-qtbase-devel qt5-qtdeclarative-devel redhat-rpm-config vala
++          dnf install -y gcc gcc-c++ gobject-introspection-devel glib2-devel gtk-doc json-glib-devel libsoup3-devel ninja-build python3-pip qt5-qtbase-devel qt5-qtdeclarative-devel qt6-qtbase-devel qt6-qtdeclarative-devel redhat-rpm-config vala
+ 
+       - name: Install meson
+         if: matrix.image != 'ubuntu:rolling'
+diff --git a/meson.build b/meson.build
+index b9f98d37..76637a7a 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,7 +1,8 @@
+ project ('snapd-glib', [ 'c', 'cpp' ],
+          version: '1.65',
+-         meson_version: '>= 0.43.0',
+-         default_options : [ 'c_std=c11', 'cpp_std=c++11' ])
++         meson_version: '>= 0.58.0',
++         default_options : [ 'c_std=c11' ])
++
+ 
+ glib_dep = dependency ('glib-2.0', version: '>= 2.46')
+ gio_dep = dependency ('gio-2.0', version: '>= 2.46')
+@@ -13,18 +14,14 @@ else
+ endif
+ json_glib_dep = dependency ('json-glib-1.0', version: '>= 1.1.2')
+ 
+-if get_option ('qt-bindings')
+-  qt5_core_dep = dependency ('qt5', modules: [ 'Core' ])
+-  qt5_network_dep = dependency ('qt5', modules: [ 'Network' ])
+-  qml_dep = dependency ('qt5', modules: [ 'Qml' ])
+-endif
+-
+ datadir = join_paths (get_option ('prefix'), get_option ('datadir'))
+ includedir = join_paths (get_option ('prefix'), get_option ('includedir'))
+ libdir = join_paths (get_option ('prefix'), get_option ('libdir'))
+ 
+ subdir ('snapd-glib')
+-subdir ('snapd-qt')
++if get_option('qt5') or get_option('qt6')
++    subdir ('snapd-qt')
++endif
+ subdir ('tests')
+ subdir ('examples')
+ subdir ('doc')
+diff --git a/meson_options.txt b/meson_options.txt
+index ad9ac9ca..7700d929 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -7,9 +7,14 @@ option('docs',
+ option('vala-bindings',
+        type: 'boolean', value: true,
+        description: 'Build the Vala bindings (requires introspection)')
+-option('qt-bindings',
+-       type: 'boolean', value: true,
+-       description: 'Build the Qt bindings')
++option('qt5',
++       type : 'boolean',
++       value : false,
++       description: 'Build the Qt5 bindings')
++option('qt6',
++       type : 'boolean',
++       value : true,
++       description: 'Build the Qt6 bindings')
+ option('qml-bindings',
+        type: 'boolean', value: true,
+        description: 'Build the QML bindings (requires the Qt bindings)')
+diff --git a/snapd-qt/SnapdConfig.cmake.in b/snapd-qt/SnapdQt5Config.cmake.in
+similarity index 100%
+rename from snapd-qt/SnapdConfig.cmake.in
+rename to snapd-qt/SnapdQt5Config.cmake.in
+diff --git a/snapd-qt/SnapdConfigVersion.cmake.in b/snapd-qt/SnapdQt5ConfigVersion.cmake.in
+similarity index 100%
+rename from snapd-qt/SnapdConfigVersion.cmake.in
+rename to snapd-qt/SnapdQt5ConfigVersion.cmake.in
+diff --git a/snapd-qt/SnapdQt6Config.cmake.in b/snapd-qt/SnapdQt6Config.cmake.in
+new file mode 100644
+index 00000000..69afb05b
+--- /dev/null
++++ b/snapd-qt/SnapdQt6Config.cmake.in
+@@ -0,0 +1,14 @@
++# SNAPD_INCLUDE_DIRS - The snapd-qt include directories
++# SNAPD_LIBRARIES - The libraries needed to use snapd-qt
++
++set(SNAPD_LIBRARIES @libdir@/lib at library_name@.so)
++set(SNAPD_INCLUDE_DIRS @includedir@/@library_name@/)
++
++add_library(Snapd::Core SHARED IMPORTED)
++set_target_properties(Snapd::Core PROPERTIES
++  IMPORTED_LINK_DEPENDENT_LIBRARIES "Qt6::Core"
++  IMPORTED_LOCATION "${SNAPD_LIBRARIES}"
++  IMPORTED_SONAME "lib at library_name@.so"
++  )
++
++set_property(TARGET Snapd::Core PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SNAPD_INCLUDE_DIRS})
+diff --git a/snapd-qt/SnapdQt6ConfigVersion.cmake.in b/snapd-qt/SnapdQt6ConfigVersion.cmake.in
+new file mode 100644
+index 00000000..e6719826
+--- /dev/null
++++ b/snapd-qt/SnapdQt6ConfigVersion.cmake.in
+@@ -0,0 +1,10 @@
++set(PACKAGE_VERSION @version@)
++
++if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
++  set(PACKAGE_VERSION_COMPATIBLE FALSE)
++else("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
++  set(PACKAGE_VERSION_COMPATIBLE TRUE)
++  if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
++    set(PACKAGE_VERSION_EXACT TRUE)
++  endif( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
++endif("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
+diff --git a/snapd-qt/markdown-node.cpp b/snapd-qt/markdown-node.cpp
+index 2be1751e..2e87707b 100644
+--- a/snapd-qt/markdown-node.cpp
++++ b/snapd-qt/markdown-node.cpp
+@@ -62,3 +62,14 @@ QSnapdMarkdownNode *QSnapdMarkdownNode::child (int n) const
+         return NULL;
+     return new QSnapdMarkdownNode (children->pdata[n]);
+ }
++
++QSnapdMarkdownNode & QSnapdMarkdownNode::operator=(const QSnapdMarkdownNode& node)
++{
++    if (&node == this) {
++        return *this;
++    }
++    g_object_unref(wrapped_object);
++    wrapped_object = node.wrapped_object;
++    g_object_ref(wrapped_object);
++    return *this;
++}
+diff --git a/snapd-qt/markdown-parser.cpp b/snapd-qt/markdown-parser.cpp
+index 751592c3..1a305ad9 100644
+--- a/snapd-qt/markdown-parser.cpp
++++ b/snapd-qt/markdown-parser.cpp
+@@ -56,7 +56,7 @@ bool QSnapdMarkdownParser::preserveWhitespace () const
+ QList<QSnapdMarkdownNode> QSnapdMarkdownParser::parse (const QString &text) const
+ {
+     Q_D(const QSnapdMarkdownParser);
+-    g_autoptr(GPtrArray) nodes = snapd_markdown_parser_parse (d->parser, text.toStdString ().c_str ());
++    g_autoptr(GPtrArray) nodes = snapd_markdown_parser_parse (d->parser, text.toUtf8().constData());
+     QList<QSnapdMarkdownNode> nodes_list;
+     for (uint i = 0; i < nodes->len; i++) {
+         SnapdMarkdownNode *node = (SnapdMarkdownNode *) g_ptr_array_index (nodes, i);
+diff --git a/snapd-qt/meson.build b/snapd-qt/meson.build
+index 74687852..7484870f 100644
+--- a/snapd-qt/meson.build
++++ b/snapd-qt/meson.build
+@@ -1,15 +1,47 @@
+-library_name = 'snapd-qt'
+-if not get_option('soup2')
+-  library_name += '-2'
++if get_option('qt5') and get_option('qt6')
++    error('Both the "qt5" and "qt6" bindings are selected, snapd-glib only supports building one Qt major version at a time.')
++endif
++
++if get_option('qt5')
++    qt_min_version = '5.15'
++    qt_version = 'qt5'
++    qt_core_camel = 'Qt5Core'
++    description = 'Snapd Qt'
++    cmake_base_name = 'SnapdQt5'
++    library_name = 'snapd-qt'
++    qt_core_dep = dependency ('qt5', modules: [ 'Core' ])
++    qt_network_dep = dependency ('qt5', modules: [ 'Network' ])
++    qml_dep = dependency ('qt5', modules: [ 'Qml' ])
+ endif
+ 
+-qt_name= 'Snapd'
++if get_option('qt6')
++    qt_min_version = '6.2.4'
++    qt_version = 'qt6'
++    qt_core_camel = 'Qt6Core'
++    description = 'Snapd Qt'
++    cmake_base_name = 'SnapdQt6'
++    library_name = 'snapd-qt'
++    qt6_core_dep = dependency ('qt6', modules: [ 'Core' ])
++    qt6_network_dep = dependency ('qt6', modules: [ 'Network' ])
++    qml_dep = dependency ('qt6', modules: [ 'Qml' ])
++endif
++
++qt_name = 'Snapd'
+ if not get_option('soup2')
+-  qt_name += '2'
++      library_name += '-2'
++      qt_name += '2'
+ endif
+ 
++qt = import(qt_version)
++qt_dep = dependency(
++    qt_version,
++    modules: ['Core', 'Network'],
++    version: f'>= @qt_min_version@',
++    include_type: 'system'
++)
++
+ install_header_dir = join_paths (includedir, library_name, 'Snapd')
+-qml_dir = join_paths (libdir, 'qt5', 'qml', qt_name)
++qml_dir = join_paths (libdir, f'@qt_version@', 'qml', f'@qt_name@')
+ cmake_dir = join_paths (libdir, 'cmake', qt_name)
+ 
+ source_cpp = [
+@@ -113,60 +145,59 @@ source_private_h = [
+   'variant.h',
+ ]
+ 
+-if get_option ('qt-bindings')
+-  qt5 = import ('qt5')
+-  moc_files = qt5.preprocess (moc_headers: [ source_h, source_private_h ],
+-                              dependencies: [ qt5_core_dep, qt5_network_dep ])
+-
+-  snapd_qt_lib = library (library_name,
+-                          source_cpp, moc_files,
+-                          version: '1.0.0',
+-                          dependencies: [ qt5_core_dep, qt5_network_dep, glib_dep, gio_dep, snapd_glib_dep ],
+-                          cpp_args: [ '-DQT_NO_SIGNALS_SLOTS_KEYWORDS' ],
+-                          install: true)
+-
+-  snapd_qt_dep = declare_dependency (link_with: snapd_qt_lib,
+-                                     dependencies: [ qt5_network_dep ],
+-                                     include_directories: include_directories ('.'))
+-
+-  install_headers (source_h + source_alias_h,
+-                   install_dir: install_header_dir)
+-
+-  pc = import ('pkgconfig')
+-  pc.generate (libraries: snapd_qt_lib,
+-               filebase: library_name,
+-               name: 'Snapd Qt',
+-               description: 'Libary for accessing snapd',
+-               version: meson.project_version ())
+-
+-  install_data ('qmldir',
+-                install_dir: qml_dir)
+-
+-  cmake_conf = configuration_data ()
+-  cmake_conf.set ('libdir', libdir)
+-  cmake_conf.set ('includedir', includedir)
+-  cmake_conf.set ('version', meson.project_version ())
+-  cmake_conf.set ('library_name', library_name)
+-  cmake_file = configure_file (input: 'SnapdConfig.cmake.in',
+-                               output: 'SnapdConfig.cmake',
+-                               configuration: cmake_conf)
+-  cmake_version_file = configure_file (input: 'SnapdConfigVersion.cmake.in',
+-                                       output: 'SnapdConfigVersion.cmake',
+-                                       configuration: cmake_conf)
+-  install_data (cmake_file, cmake_version_file,
+-                install_dir: cmake_dir)
++moc_files = qt.preprocess (moc_headers: [ source_h, source_private_h ],
++                            dependencies: [ qt_dep ])
++
++snapd_qt_lib = library (library_name,
++                        source_cpp, moc_files,
++                        version: '1.0.0',
++                        dependencies: [ qt_dep, glib_dep, gio_dep, snapd_glib_dep ],
++                        cpp_args: [ '-DQT_NO_SIGNALS_SLOTS_KEYWORDS' ],
++                        install: true)
++
++snapd_qt_dep = declare_dependency (link_with: snapd_qt_lib,
++                                    dependencies: qt_dep,
++                                    include_directories: include_directories ('.'))
++
++install_headers (source_h + source_alias_h,
++                  install_dir: install_header_dir)
++
++pc = import ('pkgconfig')
++pc_required_qt=f'@qt_core_camel@'
++pc.generate (libraries: snapd_qt_lib,
++              filebase: library_name,
++              name: 'Snapd Qt',
++              description: 'Library for accessing snapd',
++              version: meson.project_version (),
++              requires: pc_required_qt,)
++
++install_data ('qmldir',
++              install_dir: qml_dir)
++
++cmake_conf = configuration_data ()
++cmake_conf.set ('libdir', libdir)
++cmake_conf.set ('includedir', includedir)
++cmake_conf.set ('version', meson.project_version ())
++cmake_conf.set ('library_name', library_name)
++cmake_file = configure_file (input: f'@cmake_base_name at Config.cmake.in',
++                              output: 'SnapdConfig.cmake',
++                              configuration: cmake_conf)
++cmake_version_file = configure_file (input: f'@cmake_base_name at ConfigVersion.cmake.in',
++                                      output: 'SnapdConfigVersion.cmake',
++                                      configuration: cmake_conf)
++install_data (cmake_file, cmake_version_file,
++              install_dir: cmake_dir)
+ 
+   if get_option ('qml-bindings')
+     install_data ('qmldir',
+                   install_dir: qml_dir)
+ 
+-    qml_moc_files = qt5.preprocess (moc_headers: 'qml-plugin.h',
++    qml_moc_files = qt.preprocess (moc_headers: 'qml-plugin.h',
+                                     dependencies: qml_dep)
+     library (qt_name,
+-             'qml-plugin.cpp', qml_moc_files,
+-             dependencies: [ qml_dep, snapd_qt_dep ],
+-             build_rpath: qml_dir,
+-             install: true,
+-             install_dir: qml_dir)
++              'qml-plugin.cpp', qml_moc_files,
++              dependencies: [ qml_dep, snapd_qt_dep ],
++              build_rpath: qml_dir,
++              install: true,
++              install_dir: qml_dir)
+   endif
+-endif
+diff --git a/snapd-qt/snapd-qt.pc.in b/snapd-qt/snapd-qt.pc.in
+index 60bc7d6e..fe4747ff 100644
+--- a/snapd-qt/snapd-qt.pc.in
++++ b/snapd-qt/snapd-qt.pc.in
+@@ -4,8 +4,8 @@ libdir=@libdir@
+ includedir=@includedir@
+ 
+ Name: Snapd Qt
+-Description: Libary for accessing snapd
++Description: Library for accessing snapd
+ Version: @VERSION@
+ Libs: -L${libdir} -lsnapd-qt
+ Cflags: -I${includedir}/snapd-qt
+-Requires: Qt5Core
++Requires: @pc_required_qt@
+diff --git a/tests/meson.build b/tests/meson.build
+index dd4ac7ef..bc7882e6 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -38,31 +38,31 @@ test_file = configure_file (input: 'test-markdown-glib.test.in',
+                             configuration: test_data_conf)
+ install_data (test_file, install_dir: installed_tests_data_dir)
+ 
+-if get_option ('qt-bindings')
+-  moc_files = qt5.preprocess (moc_headers: [ 'test-qt.h' ])
++if get_option('qt5') or get_option('qt6')
++  moc_files = qt.preprocess (moc_headers: [ 'test-qt.h' ])
+ 
+-  test_executable = executable ('test-qt',
++  test_executable = executable (f'test- at qt_version@',
+                                 'test-qt.cpp', moc_files,
+                                 dependencies: [ glib_dep, snapd_qt_dep ],
+                                 link_with: [ mock_snapd_lib ],
+                                 cpp_args: [ '-DVERSION="@0@"'.format (meson.project_version ()) ],
+                                 install_dir: installed_tests_exec_dir,
+                                 install: true)
+-  test ('Tests (Qt)', test_executable, timeout: 600)
+-  test_file = configure_file (input: 'test-qt.test.in',
+-                              output: 'test-qt.test',
++  test (f'Tests (@qt_version@', test_executable, timeout: 600)
++  test_file = configure_file (input: f'test- at qt_version@.test.in',
++                              output: f'test- at qt_version@.test',
+                               configuration: test_data_conf)
+   install_data (test_file, install_dir: installed_tests_data_dir)
+ 
+-  test_executable = executable ('test-markdown-qt',
++  test_executable = executable (f'test-markdown- at qt_version@',
+                                 'test-markdown-qt.cpp',
+                                 dependencies: [ glib_dep, snapd_qt_dep ],
+                                 link_with: [ mock_snapd_lib ],
+                                 install_dir: installed_tests_exec_dir,
+                                 install: true)
+-  test ('Markdown tests (Qt)', test_executable, timeout: 600)
+-  test_file = configure_file (input: 'test-markdown-qt.test.in',
+-                              output: 'test-markdown-qt.test',
++  test (f'Markdown tests (@qt_version@)', test_executable, timeout: 600)
++  test_file = configure_file (input: f'test-markdown- at qt_version@.test.in',
++                              output: f'test-markdown- at qt_version@.test',
+                               configuration: test_data_conf)
+   install_data (test_file, install_dir: installed_tests_data_dir)
+ endif
+diff --git a/tests/test-markdown-qt.test.in b/tests/test-markdown-qt.test.in
+deleted file mode 100644
+index 31d23f42..00000000
+--- a/tests/test-markdown-qt.test.in
++++ /dev/null
+@@ -1,3 +0,0 @@
+-[Test]
+-Type=session
+-Exec=@installed_tests_exec_dir@/test-markdown-qt
+diff --git a/tests/test-markdown-qt5.test.in b/tests/test-markdown-qt5.test.in
+new file mode 100644
+index 00000000..8ca657da
+--- /dev/null
++++ b/tests/test-markdown-qt5.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_exec_dir@/test-markdown-qt5
+diff --git a/tests/test-markdown-qt6.test.in b/tests/test-markdown-qt6.test.in
+new file mode 100644
+index 00000000..7482ba7a
+--- /dev/null
++++ b/tests/test-markdown-qt6.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_exec_dir@/test-markdown-qt6
+diff --git a/tests/test-qt.cpp b/tests/test-qt.cpp
+index 04243a51..105f3fb2 100644
+--- a/tests/test-qt.cpp
++++ b/tests/test-qt.cpp
+@@ -10,6 +10,7 @@
+ #include "mock-snapd.h"
+ 
+ #include <QBuffer>
++#include <QVariant>
+ #include <Snapd/Client>
+ #include <Snapd/Assertion>
+ 
+@@ -2918,32 +2919,32 @@ test_get_connections_attributes ()
+ 
+     check_names_match (connection->plugAttributeNames (), QStringList () << "plug-string-key" << "plug-int-key" << "plug-bool-key" << "plug-number-key");
+     g_assert_true (connection->hasPlugAttribute ("plug-string-key"));
+-    g_assert_true (connection->plugAttribute ("plug-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (connection->plugAttribute ("plug-string-key").type () == QMetaType::QString);
+     g_assert_true (connection->plugAttribute ("plug-string-key").toString () == "value");
+     g_assert_true (connection->hasPlugAttribute ("plug-int-key"));
+-    g_assert_true (connection->plugAttribute ("plug-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (connection->plugAttribute ("plug-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (connection->plugAttribute ("plug-int-key").toLongLong (), ==, 42);
+     g_assert_true (connection->hasPlugAttribute ("plug-bool-key"));
+-    g_assert_true (connection->plugAttribute ("plug-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (connection->plugAttribute ("plug-bool-key").type () == QMetaType::Bool);
+     g_assert_true (connection->plugAttribute ("plug-bool-key").toBool ());
+     g_assert_true (connection->hasPlugAttribute ("plug-number-key"));
+-    g_assert_true (connection->plugAttribute ("plug-number-key").type () == (QVariant::Type) QMetaType::Double);
++    g_assert_true (connection->plugAttribute ("plug-number-key").type () == QMetaType::Double);
+     g_assert_cmpfloat (connection->plugAttribute ("plug-number-key").toDouble (), ==, 1.25);
+     g_assert_false (connection->hasPlugAttribute ("plug-invalid-key"));
+     g_assert_false (connection->plugAttribute ("plug-invalid-key").isValid ());
+ 
+     check_names_match (connection->slotAttributeNames (), QStringList () << "slot-string-key" << "slot-int-key" << "slot-bool-key" << "slot-number-key");
+     g_assert_true (connection->hasSlotAttribute ("slot-string-key"));
+-    g_assert_true (connection->slotAttribute ("slot-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (connection->slotAttribute ("slot-string-key").type () == QMetaType::QString);
+     g_assert_true (connection->slotAttribute ("slot-string-key").toString () == "value");
+     g_assert_true (connection->hasSlotAttribute ("slot-int-key"));
+-    g_assert_true (connection->slotAttribute ("slot-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (connection->slotAttribute ("slot-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (connection->slotAttribute ("slot-int-key").toLongLong (), ==, 42);
+     g_assert_true (connection->hasSlotAttribute ("slot-bool-key"));
+-    g_assert_true (connection->slotAttribute ("slot-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (connection->slotAttribute ("slot-bool-key").type () == QMetaType::Bool);
+     g_assert_true (connection->slotAttribute ("slot-bool-key").toBool ());
+     g_assert_true (connection->hasSlotAttribute ("slot-number-key"));
+-    g_assert_true (connection->slotAttribute ("slot-number-key").type () == (QVariant::Type) QMetaType::Double);
++    g_assert_true (connection->slotAttribute ("slot-number-key").type () == QMetaType::Double);
+     g_assert_cmpfloat (connection->slotAttribute ("slot-number-key").toDouble (), ==, 1.25);
+     g_assert_false (connection->hasSlotAttribute ("slot-invalid-key"));
+     g_assert_false (connection->slotAttribute ("slot-invalid-key").isValid ());
+@@ -2952,16 +2953,16 @@ test_get_connections_attributes ()
+     QScopedPointer<QSnapdPlug> plug (getConnectionsRequest->plug (0));
+     check_names_match (plug->attributeNames (), QStringList () << "plug-string-key" << "plug-int-key" << "plug-bool-key" << "plug-number-key");
+     g_assert_true (plug->hasAttribute ("plug-string-key"));
+-    g_assert_true (plug->attribute ("plug-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (plug->attribute ("plug-string-key").type () == QMetaType::QString);
+     g_assert_true (plug->attribute ("plug-string-key").toString () == "value");
+     g_assert_true (plug->hasAttribute ("plug-int-key"));
+-    g_assert_true (plug->attribute ("plug-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (plug->attribute ("plug-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (plug->attribute ("plug-int-key").toLongLong (), ==, 42);
+     g_assert_true (plug->hasAttribute ("plug-bool-key"));
+-    g_assert_true (plug->attribute ("plug-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (plug->attribute ("plug-bool-key").type () == QMetaType::Bool);
+     g_assert_true (plug->attribute ("plug-bool-key").toBool ());
+     g_assert_true (plug->hasAttribute ("plug-number-key"));
+-    g_assert_true (plug->attribute ("plug-number-key").type () == (QVariant::Type) QMetaType::Double);
++    g_assert_true (plug->attribute ("plug-number-key").type () == QMetaType::Double);
+     g_assert_cmpfloat (plug->attribute ("plug-number-key").toDouble (), ==, 1.25);
+     g_assert_false (plug->hasAttribute ("plug-invalid-key"));
+     g_assert_false (plug->attribute ("plug-invalid-key").isValid ());
+@@ -2970,16 +2971,16 @@ test_get_connections_attributes ()
+     QScopedPointer<QSnapdSlot> slot (getConnectionsRequest->slot (0));
+     check_names_match (slot->attributeNames (), QStringList () << "slot-string-key" << "slot-int-key" << "slot-bool-key" << "slot-number-key");
+     g_assert_true (slot->hasAttribute ("slot-string-key"));
+-    g_assert_true (slot->attribute ("slot-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (slot->attribute ("slot-string-key").type () == QMetaType::QString);
+     g_assert_true (slot->attribute ("slot-string-key").toString () == "value");
+     g_assert_true (slot->hasAttribute ("slot-int-key"));
+-    g_assert_true (slot->attribute ("slot-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (slot->attribute ("slot-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (slot->attribute ("slot-int-key").toLongLong (), ==, 42);
+     g_assert_true (slot->hasAttribute ("slot-bool-key"));
+-    g_assert_true (slot->attribute ("slot-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (slot->attribute ("slot-bool-key").type () == QMetaType::Bool);
+     g_assert_true (slot->attribute ("slot-bool-key").toBool ());
+     g_assert_true (slot->hasAttribute ("slot-number-key"));
+-    g_assert_true (slot->attribute ("slot-number-key").type () == (QVariant::Type) QMetaType::Double);
++    g_assert_true (slot->attribute ("slot-number-key").type () == QMetaType::Double);
+     g_assert_cmpfloat (slot->attribute ("slot-number-key").toDouble (), ==, 1.25);
+     g_assert_false (slot->hasAttribute ("slot-invalid-key"));
+     g_assert_false (slot->attribute ("slot-invalid-key").isValid ());
+@@ -3123,13 +3124,13 @@ test_get_interfaces_attributes ()
+     QScopedPointer<QSnapdPlug> plug (getInterfacesRequest->plug (0));
+     check_names_match (plug->attributeNames (), QStringList () << "plug-string-key" << "plug-int-key" << "plug-bool-key");
+     g_assert_true (plug->hasAttribute ("plug-string-key"));
+-    g_assert_true (plug->attribute ("plug-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (plug->attribute ("plug-string-key").type () == QMetaType::QString);
+     g_assert_true (plug->attribute ("plug-string-key").toString () == "value");
+     g_assert_true (plug->hasAttribute ("plug-int-key"));
+-    g_assert_true (plug->attribute ("plug-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (plug->attribute ("plug-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (plug->attribute ("plug-int-key").toLongLong (), ==, 42);
+     g_assert_true (plug->hasAttribute ("plug-bool-key"));
+-    g_assert_true (plug->attribute ("plug-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (plug->attribute ("plug-bool-key").type () == QMetaType::Bool);
+     g_assert_true (plug->attribute ("plug-bool-key").toBool ());
+     g_assert_false (plug->hasAttribute ("plug-invalid-key"));
+     g_assert_false (plug->attribute ("plug-invalid-key").isValid ());
+@@ -3138,13 +3139,13 @@ test_get_interfaces_attributes ()
+     QScopedPointer<QSnapdSlot> slot (getInterfacesRequest->slot (0));
+     check_names_match (slot->attributeNames (), QStringList () << "slot-string-key" << "slot-int-key" << "slot-bool-key");
+     g_assert_true (slot->hasAttribute ("slot-string-key"));
+-    g_assert_true (slot->attribute ("slot-string-key").type () == (QVariant::Type) QMetaType::QString);
++    g_assert_true (slot->attribute ("slot-string-key").type () == QMetaType::QString);
+     g_assert_true (slot->attribute ("slot-string-key").toString () == "value");
+     g_assert_true (slot->hasAttribute ("slot-int-key"));
+-    g_assert_true (slot->attribute ("slot-int-key").type () == (QVariant::Type) QMetaType::LongLong);
++    g_assert_true (slot->attribute ("slot-int-key").type () == QMetaType::LongLong);
+     g_assert_cmpint (slot->attribute ("slot-int-key").toLongLong (), ==, 42);
+     g_assert_true (slot->hasAttribute ("slot-bool-key"));
+-    g_assert_true (slot->attribute ("slot-bool-key").type () == (QVariant::Type) QMetaType::Bool);
++    g_assert_true (slot->attribute ("slot-bool-key").type () == QMetaType::Bool);
+     g_assert_true (slot->attribute ("slot-bool-key").toBool ());
+     g_assert_false (slot->hasAttribute ("slot-invalid-key"));
+     g_assert_false (slot->attribute ("slot-invalid-key").isValid ());
+@@ -3894,7 +3895,7 @@ test_find_channels ()
+         if (channel->name () == "stable") {
+             g_assert_true (channel->track () == "latest");
+             g_assert_true (channel->risk () == "stable");
+-            g_assert_true (channel->branch () == NULL);
++            g_assert_true (channel->branch ().isEmpty());
+             g_assert_true (channel->revision () == "REVISION");
+             g_assert_true (channel->version () == "VERSION");
+             g_assert_true (channel->epoch () == "0");
+@@ -3907,7 +3908,7 @@ test_find_channels ()
+             g_assert_true (channel->name () == "beta");
+             g_assert_true (channel->track () == "latest");
+             g_assert_true (channel->risk () == "beta");
+-            g_assert_true (channel->branch () == NULL);
++            g_assert_true (channel->branch ().isEmpty());
+             g_assert_true (channel->revision () == "BETA-REVISION");
+             g_assert_true (channel->version () == "BETA-VERSION");
+             g_assert_true (channel->epoch () == "1");
+@@ -3926,7 +3927,7 @@ test_find_channels ()
+         if (channel->name () == "insider/stable") {
+             g_assert_true (channel->track () == "insider");
+             g_assert_true (channel->risk () == "stable");
+-            g_assert_true (channel->branch () == NULL);
++            g_assert_true (channel->branch ().isEmpty());
+             g_assert_true (channel->releasedAt ().isNull ());
+             matched_track = TRUE;
+         }
+diff --git a/tests/test-qt.test.in b/tests/test-qt.test.in
+deleted file mode 100644
+index cb2463bd..00000000
+--- a/tests/test-qt.test.in
++++ /dev/null
+@@ -1,3 +0,0 @@
+-[Test]
+-Type=session
+-Exec=@installed_tests_exec_dir@/test-qt
+diff --git a/tests/test-qt5.test.in b/tests/test-qt5.test.in
+new file mode 100644
+index 00000000..628fdb27
+--- /dev/null
++++ b/tests/test-qt5.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_exec_dir@/test-qt5
+diff --git a/tests/test-qt6.test.in b/tests/test-qt6.test.in
+new file mode 100644
+index 00000000..d1109649
+--- /dev/null
++++ b/tests/test-qt6.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_exec_dir@/test-qt6
\ No newline at end of file
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..72988b5
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+allow_dual_build_of_qt5_and_qt6_upstream_147
\ No newline at end of file


More information about the Neon-commits mailing list