guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: kwindowsystem: Fix test failure with Qt 5.12.


From: guix-commits
Subject: 01/01: gnu: kwindowsystem: Fix test failure with Qt 5.12.
Date: Fri, 18 Oct 2019 12:56:44 -0400 (EDT)

mbakke pushed a commit to branch staging
in repository guix.

commit 07abc851ce8a580253061e065b31a4037d2f965d
Author: Marius Bakke <address@hidden>
Date:   Fri Oct 18 18:53:13 2019 +0200

    gnu: kwindowsystem: Fix test failure with Qt 5.12.
    
    * gnu/packages/patches/kwindowsystem-qt-compat.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
    * gnu/packages/kde-frameworks.scm (kwindowsystem)[source](patches): New 
field.
    [inputs]: Add XCB-UTIL-WM.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/kde-frameworks.scm                    |  4 +-
 gnu/packages/patches/kwindowsystem-qt-compat.patch | 97 ++++++++++++++++++++++
 3 files changed, 101 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index f3712d8..78456aa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1015,6 +1015,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch    \
   %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch           \
   %D%/packages/patches/kodi-skip-test-449.patch                \
+  %D%/packages/patches/kwindowsystem-qt-compat.patch           \
   %D%/packages/patches/laby-make-install.patch                 \
   %D%/packages/patches/lcalc-default-parameters-1.patch                \
   %D%/packages/patches/lcalc-default-parameters-2.patch                \
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index ec735d8..c1279ff 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1081,6 +1081,7 @@ configuration pages, message boxes, and password 
requests.")
                     "mirror://kde/stable/frameworks/"
                     (version-major+minor version) "/"
                     name "-" version ".tar.xz"))
+              (patches (search-patches "kwindowsystem-qt-compat.patch"))
               (sha256
                (base32
                 "10zdxm08d758zbwlrbsn0ghxjpf39ids2s5pnca072gbrbrxv656"))))
@@ -1096,7 +1097,8 @@ configuration pages, message boxes, and password 
requests.")
      `(("libxrender" ,libxrender)
        ("qtbase" ,qtbase)
        ("qtx11extras" ,qtx11extras)
-       ("xcb-utils-keysyms" ,xcb-util-keysyms)))
+       ("xcb-utils-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/patches/kwindowsystem-qt-compat.patch 
b/gnu/packages/patches/kwindowsystem-qt-compat.patch
new file mode 100644
index 0000000..ef31636
--- /dev/null
+++ b/gnu/packages/patches/kwindowsystem-qt-compat.patch
@@ -0,0 +1,97 @@
+Fix test failure with Qt 5.12.
+
+Taken from upstream:
+https://cgit.kde.org/kwindowsystem.git/commit/?id=14998613603c7d8f91b011a2c9c20396067add0e
+
+diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
+index f8e67f0..c1121a7 100644
+--- a/autotests/CMakeLists.txt
++++ b/autotests/CMakeLists.txt
+@@ -12,12 +12,12 @@ add_subdirectory(helper)
+ 
+ if (NOT APPLE)
+     find_package(X11)
+-    find_package(XCB COMPONENTS XCB KEYSYMS)
++    find_package(XCB COMPONENTS XCB ICCCM KEYSYMS)
+ endif()
+ 
+ macro(KWINDOWSYSTEM_UNIT_TESTS)
+    foreach(_testname ${ARGN})
+-      set(libs KF5::WindowSystem Qt5::Test Qt5::Widgets Qt5::X11Extras 
XCB::KEYSYMS)
++      set(libs KF5::WindowSystem Qt5::Test Qt5::Widgets Qt5::X11Extras 
XCB::ICCCM XCB::KEYSYMS)
+       if(X11_FOUND)
+          list(APPEND libs ${XCB_XCB_LIBRARY})
+       endif()
+diff --git a/autotests/kwindowinfox11test.cpp 
b/autotests/kwindowinfox11test.cpp
+index 634c650..f483c46 100644
+--- a/autotests/kwindowinfox11test.cpp
++++ b/autotests/kwindowinfox11test.cpp
+@@ -25,8 +25,11 @@
+ #include <qtest_widgets.h>
+ #include <QScreen>
+ #include <QSignalSpy>
++#include <QSysInfo>
+ #include <QX11Info>
+ 
++#include <xcb/xcb_icccm.h>
++
+ #include <unistd.h>
+ 
+ Q_DECLARE_METATYPE(WId)
+@@ -598,19 +601,23 @@ void KWindowInfoX11Test::testWindowRole()
+ 
+ void KWindowInfoX11Test::testClientMachine()
+ {
++    const QByteArray oldHostName = QSysInfo::machineHostName().toLocal8Bit();
++
+     KWindowInfo info(window->winId(), NET::Properties(), 
NET::WM2ClientMachine);
+-    QVERIFY(info.clientMachine().isNull());
++    QCOMPARE(info.clientMachine(), oldHostName);
+ 
+     // client machine needs to be set through xcb
++    const QByteArray newHostName = oldHostName + "2";
+     xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, 
window->winId(),
+-                        XCB_ATOM_WM_CLIENT_MACHINE, XCB_ATOM_STRING, 8, 9, 
"localhost");
++                        XCB_ATOM_WM_CLIENT_MACHINE, XCB_ATOM_STRING, 8, 
newHostName.count(),
++                        newHostName.data());
+     xcb_flush(QX11Info::connection());
+ 
+     // it's just a property change so we can easily refresh
+     QX11Info::getTimestamp();
+ 
+     KWindowInfo info2(window->winId(), NET::Properties(), 
NET::WM2ClientMachine);
+-    QCOMPARE(info2.clientMachine(), QByteArrayLiteral("localhost"));
++    QCOMPARE(info2.clientMachine(), newHostName);
+ }
+ 
+ void KWindowInfoX11Test::testName()
+@@ -680,11 +687,25 @@ void KWindowInfoX11Test::testTransientFor()
+ 
+ void KWindowInfoX11Test::testGroupLeader()
+ {
+-    KWindowInfo info(window->winId(), NET::Properties(), NET::WM2GroupLeader);
+-    QCOMPARE(info.groupLeader(), WId(0));
++    // WM_CLIENT_LEADER is set by default
++    KWindowInfo info1(window->winId(), NET::Properties(), 
NET::WM2GroupLeader);
++    QVERIFY(info1.groupLeader() != XCB_WINDOW_NONE);
++
++    xcb_connection_t *connection = QX11Info::connection();
++    xcb_window_t rootWindow = QX11Info::appRootWindow();
++
++    xcb_window_t leader = xcb_generate_id(connection);
++    xcb_create_window(connection, XCB_COPY_FROM_PARENT, leader, rootWindow, 
0, 0, 1, 1,
++        0, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_COPY_FROM_PARENT, 0, nullptr);
++
++    xcb_icccm_wm_hints_t hints = {};
++    hints.flags = XCB_ICCCM_WM_HINT_WINDOW_GROUP;
++    hints.window_group = leader;
++    xcb_icccm_set_wm_hints(connection, leader, &hints);
++    xcb_icccm_set_wm_hints(connection, window->winId(), &hints);
+ 
+-    // TODO: here we should try to set a group leader and re-read it
+-    // this needs setting and parsing the WMHints
++    KWindowInfo info2(window->winId(), NET::Properties(), 
NET::WM2GroupLeader);
++    QCOMPARE(info2.groupLeader(), leader);
+ }
+ 
+ void KWindowInfoX11Test::testExtendedStrut()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]