unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests
@ 2023-09-13 16:56 Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 16:56 UTC (permalink / raw)
  To: 65922; +Cc: Maxim Cournoyer, Andreas Enge, 宋文武

Thes series removes Python from the closure of qtbase, both for versions 5.15
and 6.5.  It also reinstate a few tests that was made possible thanks to
discussions with upstream following reported the issues.

Changes in v2:
- Also apply fix to qtbase-5 package.

Maxim Cournoyer (4):
  gnu: qtbase: Do not capture Python (again).
  gnu: qtbase: Add $TZDIR to native search paths.
  gnu: qtbase: Reinstate date related tests.
  gnu: qtdeclarative: Add a debug output.

 gnu/packages/patches/qtbase-use-TZDIR.patch | 162 ++++++++++++++++----
 gnu/packages/qt.scm                         |  54 ++++---
 2 files changed, 167 insertions(+), 49 deletions(-)


base-commit: 4cb2e08b8eb1acc824b72ec17b483d7d85b5af68
-- 
2.41.0





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
@ 2023-09-13 16:58 ` Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 16:58 UTC (permalink / raw)
  To: 65922; +Cc: Maxim Cournoyer, Andreas Enge, 宋文武

Fixes <https://issues.guix.gnu.org/65457>.

* gnu/packages/qt.scm (qtbase-5) [arguments]: Add #:disallowed-references
argument to guard against the problem reoccurring in the future.
Add do-not-capture-python phase.
(qtbase) [arguments]: Update do-not-capture-python phase.

---

Changes in v2:
- Also apply fix to qtbase-5 package.

 gnu/packages/qt.scm | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index b7e394d663c..a158f8114fe 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -392,7 +392,7 @@ (define-public qtbase-5
            fontconfig
            freetype
            glib
-           gtk+               ;for GTK theme support
+           gtk+                         ;for GTK theme support
            harfbuzz
            icu4c
            libinput-minimal
@@ -437,7 +437,8 @@ (define-public qtbase-5
            vulkan-headers
            ruby-2.7))
     (arguments
-     `(#:configure-flags
+     `(#:disallowed-references ,(list python)
+       #:configure-flags
        (let ((out (assoc-ref %outputs "out")))
          (list "-verbose"
                "-prefix" out
@@ -583,7 +584,16 @@ (define-public qtbase-5
                (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
                 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
                (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
-                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))))))))
+                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))))
+         (add-after 'install 'do-not-capture-python
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; For some reason, patching the file after the
+             ;; patch-source-shebangs phase doesn't work for Qt 5.
+             (substitute*
+                 (search-input-file
+                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
+               (((which "python3"))
+                "/usr/bin/env python3")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "QMAKEPATH")
@@ -724,10 +734,12 @@ (define-public qtbase
                 (substitute* "src/corelib/CMakeLists.txt"
                   (("/bin/ls")
                    (search-input-file inputs "bin/ls")))))
+            (delete 'do-not-capture-python) ;move after patch-source-shebangs
             (add-after 'patch-source-shebangs 'do-not-capture-python
               (lambda _
                 (substitute* '("mkspecs/features/uikit/devices.py"
-                               "util/testrunner/qt-testrunner.py")
+                               "util/testrunner/qt-testrunner.py"
+                               "util/testrunner/sanitizer-testrunner.py")
                   (((which "python3"))
                    "/usr/bin/env python3"))))
             (replace 'configure
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH 2/4] gnu: qtbase: Add $TZDIR to native search paths.
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
@ 2023-09-13 16:58 ` Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 16:58 UTC (permalink / raw)
  To: 65922; +Cc: Maxim Cournoyer, Andreas Enge, 宋文武

* gnu/packages/qt.scm (qtbase) [native-search-paths]: Add $TZDIR.
---

(no changes since v1)

 gnu/packages/qt.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a158f8114fe..8324beef6fc 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -60,6 +60,7 @@ (define-module (gnu packages qt)
   #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix deprecation)
+  #:use-module (guix search-paths)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
@@ -933,6 +934,7 @@ (define-public qtbase
            (search-path-specification
             (variable "QT_PLUGIN_PATH")
             (files '("lib/qt6/plugins")))
+           $TZDIR
            (search-path-specification
             (variable "XDG_DATA_DIRS")
             (files '("share")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH 3/4] gnu: qtbase: Reinstate date related tests.
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
@ 2023-09-13 16:58 ` Maxim Cournoyer
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 16:58 UTC (permalink / raw)
  To: 65922; +Cc: Maxim Cournoyer, Andreas Enge, 宋文武

* gnu/packages/qt.scm (qtbase) [native-inputs]: Add tzdata-for-tests.
[arguments]: Set the TZDIR and TZ environment variables, and reinstate the
tst_qdate, tst_qtimezone and tst_qdatetime tests in the check phase.
* gnu/packages/patches/qtbase-use-TZDIR.patch: Refresh patch with upstream
version.
---

(no changes since v1)

 gnu/packages/patches/qtbase-use-TZDIR.patch | 162 ++++++++++++++++----
 gnu/packages/qt.scm                         |  31 ++--
 2 files changed, 148 insertions(+), 45 deletions(-)

diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
index b6c377b133c..98bf7493e9f 100644
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ b/gnu/packages/patches/qtbase-use-TZDIR.patch
@@ -1,39 +1,141 @@
-Use $TZDIR to search for time-zone data. Thus avoid depending on package
-"tzdata", which often introduces changes with near-immediate effects, so it's
-important to be able to update it fast.
+From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 11 Sep 2023 11:41:39 +0200
+Subject: [PATCH] Support the TZDIR environment variable
 
-Based on a patch fron NixOS.
-===================================================================
---- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
-+++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
-@@ -70,7 +70,11 @@
- // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+On Linux / glibc, this overrides the default system location for the
+zone info. So check for files there first. Break out a function to
+manage the trying of (now three) zoneinfo directories when opening a
+file by name relative to there.
+
+Pick-to: 6.6 6.5
+Task-number: QTBUG-116017
+Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67
+---
+* Rebased on top of v6.5.2.
+
+ src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++--------
+ 1 file changed, 49 insertions(+), 24 deletions(-)
+
+diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
+index 067191d816..a8b2fc894e 100644
+--- a/src/corelib/time/qtimezoneprivate_tz.cpp
++++ b/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
+ 
+ static bool isTzFile(const QString &name);
+ 
++// Open a named file under the zone info directory:
++static bool openZoneInfo(QString name, QFile *file)
++{
++    // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system
++    // default location for zone info:
++    const QString tzdir = qEnvironmentVariable("TZDIR");
++    if (!tzdir.isEmpty()) {
++        file->setFileName(QDir(tzdir).filePath(name));
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Try modern system path first:
++    constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1;
++    if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Fall back to legacy system path:
++    constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1;
++    if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    return false;
++}
++
+ // Parse zone.tab table for territory information, read directories to ensure we
+ // find all installed zones (many are omitted from zone.tab; even more from
+ // zone1970.tab).
  static QTzTimeZoneHash loadTzTimeZones()
  {
 -    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-+    // Try TZDIR first, in case we're running on GuixSD.
-+    QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
-+    // Fallback to traditional paths in case we are not on GuixSD.
-+    if (!QFile::exists(path))
-+        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-     if (!QFile::exists(path))
-         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-    if (!QFile::exists(path))
+-        path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-
+-    QFile tzif(path);
+-    if (!tzif.open(QIODevice::ReadOnly))
++    QFile tzif;
++    if (!openZoneInfo("zone.tab"_L1, &tzif))
+         return QTzTimeZoneHash();
  
-@@ -645,6 +649,9 @@
+     QTzTimeZoneHash zonesHash;
+@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones()
+         }
+     }
+ 
++    const QString path = tzif.fileName();
+     const qsizetype cut = path.lastIndexOf(u'/');
+     Q_ASSERT(cut > 0);
+     const QDir zoneDir = QDir(path.first(cut));
+@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
+         tzif.setFileName(QStringLiteral("/etc/localtime"));
          if (!tzif.open(QIODevice::ReadOnly))
-             return;
-     } else {
-+      // Try TZDIR first, in case we're running on GuixSD.
-+      tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
-+      if (!tzif.open(QIODevice::ReadOnly)) {
-         // Open named tz, try modern path first, if fails try legacy path
-         tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
-         if (!tzif.open(QIODevice::ReadOnly)) {
-@@ -652,6 +659,7 @@
-             if (!tzif.open(QIODevice::ReadOnly))
-                 return;
+             return ret;
+-    } else {
+-        // Open named tz, try modern path first, if fails try legacy path
+-        tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-        if (!tzif.open(QIODevice::ReadOnly)) {
+-            tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-            if (!tzif.open(QIODevice::ReadOnly)) {
+-                // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
+-                auto check = validatePosixRule(ianaId);
+-                if (check.isValid) {
+-                    ret.m_hasDst = check.hasDst;
+-                    ret.m_posixRule = ianaId;
+-                }
+-                return ret;
+-            }
++    } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) {
++        // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
++        auto check = validatePosixRule(ianaId);
++        if (check.isValid) {
++            ret.m_hasDst = check.hasDst;
++            ret.m_posixRule = ianaId;
++            return ret;
          }
-+      }
      }
  
-     QDataStream ds(&tzif);
+@@ -1317,7 +1335,8 @@ private:
+     {
+         // On most distros /etc/localtime is a symlink to a real file so extract
+         // name from the path
+-        const auto zoneinfo = "/zoneinfo/"_L1;
++        const QString tzdir = qEnvironmentVariable("TZDIR");
++        constexpr auto zoneinfo = "/zoneinfo/"_L1;
+         QString path = QStringLiteral("/etc/localtime");
+         long iteration = getSymloopMax();
+         // Symlink may point to another symlink etc. before being under zoneinfo/
+@@ -1325,9 +1344,15 @@ private:
+         // symlink, like America/Montreal pointing to America/Toronto
+         do {
+             path = QFile::symLinkTarget(path);
+-            int index = path.indexOf(zoneinfo);
+-            if (index >= 0) // Found zoneinfo file; extract zone name from path:
+-                return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8();
++            // If it's a zoneinfo file, extract the zone name from its path:
++            int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir);
++            if (index >= 0) {
++                const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8();
++                return tail.startsWith(u'/') ? tail.sliced(1) : tail;
++            }
++            index = path.indexOf(zoneinfo);
++            if (index >= 0)
++                return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8();
+         } while (!path.isEmpty() && --iteration > 0);
+ 
+         return QByteArray();
+
+base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442
+-- 
+2.41.0
+
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8324beef6fc..d6255248c2a 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -747,7 +747,8 @@ (define-public qtbase
               (assoc-ref %standard-phases 'configure))
             (delete 'check)             ;move after patch-prl-files
             (add-after 'patch-prl-files 'check
-              (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (lambda* (#:key tests? parallel-tests?
+                        native-inputs inputs #:allow-other-keys)
                 (when tests?
                   ;; The tests expect to find the modules provided by this
                   ;; package; extend the environment variables needed to do so.
@@ -770,6 +771,18 @@ (define-public qtbase
                   ;; /tree/src/testlib/qtestblacklist.cpp).
                   (setenv "QTEST_ENVIRONMENT" "linux ci 32bit")
                   (setenv "HOME" "/tmp") ;some tests require a writable HOME
+
+                  ;; Note: the search path specified for TZDIR is only
+                  ;; effective for users of the package, not while it's being
+                  ;; built.
+                  (setenv "TZDIR" (search-input-directory
+                                   (or native-inputs inputs) "share/zoneinfo"))
+
+                  ;; This is to avoid QTimeZone::systemTimeZone() returning
+                  ;; invalid QDate objects due to missing /etc/timezone or
+                  ;; /etc/localtime.
+                  (setenv "TZ" "Etc/UTC")
+
                   (invoke
                    "xvfb-run" "ctest" "--output-on-failure"
                    "-j" (if parallel-tests?
@@ -783,11 +796,6 @@ (define-public qtbase
                       ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
                       "tst_moc"
 
-                      ;; The 'tst_qdate' test fails because the current time
-                      ;; is reported as an invalid date (see:
-                      ;; https://bugreports.qt.io/browse/QTBUG-116017).
-                      "tst_qdate"
-
                       ;; The qgraphicsview and qopenglwidget tests fail with a
                       ;; segfault for unknown reasons (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-116018).
@@ -826,14 +834,6 @@ (define-public qtbase
                       ;; The 'test_import_plugins' fails with "Could NOT find
                       ;; Qt6MockPlugins1".
                       "test_import_plugins"
-                      ;; The 'tst_QTimeZone::systemZone' validates the
-                      ;; currently set timezone and fails.
-                      "tst_qtimezone"
-                      ;; The 'tst_qdatetime' fails with:
-                      ;; FAIL!  : tst_QDateTime::offsetFromUtc() Compared values are not the same
-                      ;; Actual   (dt5.offsetFromUtc()): 0
-                      ;; Expected (46800)              : 46800
-                      "tst_qdatetime"
                       ;; The tst_QObjectRace::destroyRace is flaky (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-103489).
                       "tst_qobjectrace"
@@ -910,7 +910,8 @@ (define-public qtbase
                     (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)))))))))
     (native-inputs
      (modify-inputs (package-native-inputs qtbase-5)
-       (prepend wayland-protocols
+       (prepend tzdata-for-tests
+                wayland-protocols
                 xvfb-run)))
     (inputs
      (modify-inputs (package-inputs qtbase-5)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH 4/4] gnu: qtdeclarative: Add a debug output.
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                   ` (2 preceding siblings ...)
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
@ 2023-09-13 16:58 ` Maxim Cournoyer
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 16:58 UTC (permalink / raw)
  To: 65922; +Cc: Maxim Cournoyer, Andreas Enge, 宋文武

* gnu/packages/qt.scm (qtdeclarative) [outputs]: New field.

---

(no changes since v1)

 gnu/packages/qt.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index d6255248c2a..ed9d813756a 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1350,6 +1350,7 @@ (define-public qtdeclarative
                (base32
                 "06c7xfqn2a5s2m8j1bcvx3pyjqg1rgqkjvp49737gb4z9vjiz8gk"))
               (patches (search-patches "qtdeclarative-disable-qmlcache.patch"))))
+    (outputs '("out" "debug"))
     (build-system cmake-build-system)
     (arguments
      (list
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                   ` (3 preceding siblings ...)
  2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
@ 2023-09-13 17:33 ` Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
                     ` (3 more replies)
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-10-16 21:45 ` bug#65922: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  6 siblings, 4 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 17:33 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

Thes series removes Python from the closure of qtbase, both for versions 5.15
and 6.5.  It also reinstate a few tests that was made possible thanks to
discussions with upstream following reported the issues.

Changes in v2:
- Use old TZDIR patch for qtbase@5 (the new one doesn't apply)

Maxim Cournoyer (4):
  gnu: qtbase: Do not capture Python (again).
  gnu: qtbase: Add $TZDIR to native search paths.
  gnu: qtbase: Reinstate date related tests.
  gnu: qtdeclarative: Add a debug output.

 gnu/local.mk                                  |   1 +
 gnu/packages/patches/qtbase-5-use-TZDIR.patch |  39 +++++
 gnu/packages/patches/qtbase-use-TZDIR.patch   | 162 ++++++++++++++----
 gnu/packages/qt.scm                           |  56 +++---
 4 files changed, 208 insertions(+), 50 deletions(-)
 create mode 100644 gnu/packages/patches/qtbase-5-use-TZDIR.patch


base-commit: 4cb2e08b8eb1acc824b72ec17b483d7d85b5af68
-- 
2.41.0





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
@ 2023-09-13 17:33   ` Maxim Cournoyer
  2023-09-14  9:07     ` Andreas Enge
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 17:33 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

Fixes <https://issues.guix.gnu.org/65457>.

* gnu/packages/qt.scm (qtbase-5) [arguments]: Add #:disallowed-references
argument to guard against the problem reoccurring in the future.
Add do-not-capture-python phase.
(qtbase) [arguments]: Update do-not-capture-python phase.
---

(no changes since v1)

 gnu/packages/qt.scm | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index b7e394d663c..a158f8114fe 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -392,7 +392,7 @@ (define-public qtbase-5
            fontconfig
            freetype
            glib
-           gtk+               ;for GTK theme support
+           gtk+                         ;for GTK theme support
            harfbuzz
            icu4c
            libinput-minimal
@@ -437,7 +437,8 @@ (define-public qtbase-5
            vulkan-headers
            ruby-2.7))
     (arguments
-     `(#:configure-flags
+     `(#:disallowed-references ,(list python)
+       #:configure-flags
        (let ((out (assoc-ref %outputs "out")))
          (list "-verbose"
                "-prefix" out
@@ -583,7 +584,16 @@ (define-public qtbase-5
                (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
                 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
                (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
-                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))))))))
+                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))))
+         (add-after 'install 'do-not-capture-python
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; For some reason, patching the file after the
+             ;; patch-source-shebangs phase doesn't work for Qt 5.
+             (substitute*
+                 (search-input-file
+                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
+               (((which "python3"))
+                "/usr/bin/env python3")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "QMAKEPATH")
@@ -724,10 +734,12 @@ (define-public qtbase
                 (substitute* "src/corelib/CMakeLists.txt"
                   (("/bin/ls")
                    (search-input-file inputs "bin/ls")))))
+            (delete 'do-not-capture-python) ;move after patch-source-shebangs
             (add-after 'patch-source-shebangs 'do-not-capture-python
               (lambda _
                 (substitute* '("mkspecs/features/uikit/devices.py"
-                               "util/testrunner/qt-testrunner.py")
+                               "util/testrunner/qt-testrunner.py"
+                               "util/testrunner/sanitizer-testrunner.py")
                   (((which "python3"))
                    "/usr/bin/env python3"))))
             (replace 'configure
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 2/4] gnu: qtbase: Add $TZDIR to native search paths.
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
@ 2023-09-13 17:33   ` Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
  3 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 17:33 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtbase) [native-search-paths]: Add $TZDIR.
---

(no changes since v1)

 gnu/packages/qt.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a158f8114fe..8324beef6fc 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -60,6 +60,7 @@ (define-module (gnu packages qt)
   #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix deprecation)
+  #:use-module (guix search-paths)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
@@ -933,6 +934,7 @@ (define-public qtbase
            (search-path-specification
             (variable "QT_PLUGIN_PATH")
             (files '("lib/qt6/plugins")))
+           $TZDIR
            (search-path-specification
             (variable "XDG_DATA_DIRS")
             (files '("share")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 3/4] gnu: qtbase: Reinstate date related tests.
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
@ 2023-09-13 17:33   ` Maxim Cournoyer
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
  3 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 17:33 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtbase) [native-inputs]: Add tzdata-for-tests.
[arguments]: Set the TZDIR and TZ environment variables, and reinstate the
tst_qdate, tst_qtimezone and tst_qdatetime tests in the check phase.
(qtbase-5) [source]: Replace qtbase-use-TZDIR.patch with
qtbase-5-use-TZDIR.patch.
* gnu/packages/patches/qtbase-use-TZDIR.patch: Refresh patch with upstream
version, and preserve the old one for qtbase@5 as...
* gnu/packages/patches/qtbase-5-use-TZDIR.patch: ... this.
* gnu/local.mk (dist_patch_DATA): Register new patch.

---

Changes in v2:
- Use old TZDIR patch for qtbase@5 (the new one doesn't apply)

 gnu/local.mk                                  |   1 +
 gnu/packages/patches/qtbase-5-use-TZDIR.patch |  39 +++++
 gnu/packages/patches/qtbase-use-TZDIR.patch   | 162 ++++++++++++++----
 gnu/packages/qt.scm                           |  33 ++--
 4 files changed, 189 insertions(+), 46 deletions(-)
 create mode 100644 gnu/packages/patches/qtbase-5-use-TZDIR.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4f8637418ad..2d8ddf5716c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1878,6 +1878,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qtbase-absolute-runpath.patch		\
   %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch	\
   %D%/packages/patches/qtbase-qmake-use-libname.patch		\
+  %D%/packages/patches/qtbase-5-use-TZDIR.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
diff --git a/gnu/packages/patches/qtbase-5-use-TZDIR.patch b/gnu/packages/patches/qtbase-5-use-TZDIR.patch
new file mode 100644
index 00000000000..b6c377b133c
--- /dev/null
+++ b/gnu/packages/patches/qtbase-5-use-TZDIR.patch
@@ -0,0 +1,39 @@
+Use $TZDIR to search for time-zone data. Thus avoid depending on package
+"tzdata", which often introduces changes with near-immediate effects, so it's
+important to be able to update it fast.
+
+Based on a patch fron NixOS.
+===================================================================
+--- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
++++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -70,7 +70,11 @@
+ // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+ static QTzTimeZoneHash loadTzTimeZones()
+ {
+-    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
++    // Try TZDIR first, in case we're running on GuixSD.
++    QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
++    // Fallback to traditional paths in case we are not on GuixSD.
++    if (!QFile::exists(path))
++        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
+     if (!QFile::exists(path))
+         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+ 
+@@ -645,6 +649,9 @@
+         if (!tzif.open(QIODevice::ReadOnly))
+             return;
+     } else {
++      // Try TZDIR first, in case we're running on GuixSD.
++      tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
++      if (!tzif.open(QIODevice::ReadOnly)) {
+         // Open named tz, try modern path first, if fails try legacy path
+         tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
+         if (!tzif.open(QIODevice::ReadOnly)) {
+@@ -652,6 +659,7 @@
+             if (!tzif.open(QIODevice::ReadOnly))
+                 return;
+         }
++      }
+     }
+ 
+     QDataStream ds(&tzif);
diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
index b6c377b133c..98bf7493e9f 100644
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ b/gnu/packages/patches/qtbase-use-TZDIR.patch
@@ -1,39 +1,141 @@
-Use $TZDIR to search for time-zone data. Thus avoid depending on package
-"tzdata", which often introduces changes with near-immediate effects, so it's
-important to be able to update it fast.
+From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 11 Sep 2023 11:41:39 +0200
+Subject: [PATCH] Support the TZDIR environment variable
 
-Based on a patch fron NixOS.
-===================================================================
---- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
-+++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
-@@ -70,7 +70,11 @@
- // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+On Linux / glibc, this overrides the default system location for the
+zone info. So check for files there first. Break out a function to
+manage the trying of (now three) zoneinfo directories when opening a
+file by name relative to there.
+
+Pick-to: 6.6 6.5
+Task-number: QTBUG-116017
+Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67
+---
+* Rebased on top of v6.5.2.
+
+ src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++--------
+ 1 file changed, 49 insertions(+), 24 deletions(-)
+
+diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
+index 067191d816..a8b2fc894e 100644
+--- a/src/corelib/time/qtimezoneprivate_tz.cpp
++++ b/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
+ 
+ static bool isTzFile(const QString &name);
+ 
++// Open a named file under the zone info directory:
++static bool openZoneInfo(QString name, QFile *file)
++{
++    // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system
++    // default location for zone info:
++    const QString tzdir = qEnvironmentVariable("TZDIR");
++    if (!tzdir.isEmpty()) {
++        file->setFileName(QDir(tzdir).filePath(name));
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Try modern system path first:
++    constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1;
++    if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Fall back to legacy system path:
++    constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1;
++    if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    return false;
++}
++
+ // Parse zone.tab table for territory information, read directories to ensure we
+ // find all installed zones (many are omitted from zone.tab; even more from
+ // zone1970.tab).
  static QTzTimeZoneHash loadTzTimeZones()
  {
 -    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-+    // Try TZDIR first, in case we're running on GuixSD.
-+    QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
-+    // Fallback to traditional paths in case we are not on GuixSD.
-+    if (!QFile::exists(path))
-+        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-     if (!QFile::exists(path))
-         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-    if (!QFile::exists(path))
+-        path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-
+-    QFile tzif(path);
+-    if (!tzif.open(QIODevice::ReadOnly))
++    QFile tzif;
++    if (!openZoneInfo("zone.tab"_L1, &tzif))
+         return QTzTimeZoneHash();
  
-@@ -645,6 +649,9 @@
+     QTzTimeZoneHash zonesHash;
+@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones()
+         }
+     }
+ 
++    const QString path = tzif.fileName();
+     const qsizetype cut = path.lastIndexOf(u'/');
+     Q_ASSERT(cut > 0);
+     const QDir zoneDir = QDir(path.first(cut));
+@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
+         tzif.setFileName(QStringLiteral("/etc/localtime"));
          if (!tzif.open(QIODevice::ReadOnly))
-             return;
-     } else {
-+      // Try TZDIR first, in case we're running on GuixSD.
-+      tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
-+      if (!tzif.open(QIODevice::ReadOnly)) {
-         // Open named tz, try modern path first, if fails try legacy path
-         tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
-         if (!tzif.open(QIODevice::ReadOnly)) {
-@@ -652,6 +659,7 @@
-             if (!tzif.open(QIODevice::ReadOnly))
-                 return;
+             return ret;
+-    } else {
+-        // Open named tz, try modern path first, if fails try legacy path
+-        tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-        if (!tzif.open(QIODevice::ReadOnly)) {
+-            tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-            if (!tzif.open(QIODevice::ReadOnly)) {
+-                // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
+-                auto check = validatePosixRule(ianaId);
+-                if (check.isValid) {
+-                    ret.m_hasDst = check.hasDst;
+-                    ret.m_posixRule = ianaId;
+-                }
+-                return ret;
+-            }
++    } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) {
++        // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
++        auto check = validatePosixRule(ianaId);
++        if (check.isValid) {
++            ret.m_hasDst = check.hasDst;
++            ret.m_posixRule = ianaId;
++            return ret;
          }
-+      }
      }
  
-     QDataStream ds(&tzif);
+@@ -1317,7 +1335,8 @@ private:
+     {
+         // On most distros /etc/localtime is a symlink to a real file so extract
+         // name from the path
+-        const auto zoneinfo = "/zoneinfo/"_L1;
++        const QString tzdir = qEnvironmentVariable("TZDIR");
++        constexpr auto zoneinfo = "/zoneinfo/"_L1;
+         QString path = QStringLiteral("/etc/localtime");
+         long iteration = getSymloopMax();
+         // Symlink may point to another symlink etc. before being under zoneinfo/
+@@ -1325,9 +1344,15 @@ private:
+         // symlink, like America/Montreal pointing to America/Toronto
+         do {
+             path = QFile::symLinkTarget(path);
+-            int index = path.indexOf(zoneinfo);
+-            if (index >= 0) // Found zoneinfo file; extract zone name from path:
+-                return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8();
++            // If it's a zoneinfo file, extract the zone name from its path:
++            int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir);
++            if (index >= 0) {
++                const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8();
++                return tail.startsWith(u'/') ? tail.sliced(1) : tail;
++            }
++            index = path.indexOf(zoneinfo);
++            if (index >= 0)
++                return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8();
+         } while (!path.isEmpty() && --iteration > 0);
+ 
+         return QByteArray();
+
+base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442
+-- 
+2.41.0
+
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8324beef6fc..c06f27c03e2 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -365,7 +365,7 @@ (define-public qtbase-5
                (base32
                 "1fcg3kx5akvj0kqxd99h5lv3kv4pw2cj0makmpvhpw90inqnrl60"))
               ;; Use TZDIR to avoid depending on package "tzdata".
-              (patches (search-patches "qtbase-use-TZDIR.patch"
+              (patches (search-patches "qtbase-5-use-TZDIR.patch"
                                        "qtbase-moc-ignore-gcc-macro.patch"
                                        "qtbase-absolute-runpath.patch"))
               (modules '((guix build utils)))
@@ -747,7 +747,8 @@ (define-public qtbase
               (assoc-ref %standard-phases 'configure))
             (delete 'check)             ;move after patch-prl-files
             (add-after 'patch-prl-files 'check
-              (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (lambda* (#:key tests? parallel-tests?
+                        native-inputs inputs #:allow-other-keys)
                 (when tests?
                   ;; The tests expect to find the modules provided by this
                   ;; package; extend the environment variables needed to do so.
@@ -770,6 +771,18 @@ (define-public qtbase
                   ;; /tree/src/testlib/qtestblacklist.cpp).
                   (setenv "QTEST_ENVIRONMENT" "linux ci 32bit")
                   (setenv "HOME" "/tmp") ;some tests require a writable HOME
+
+                  ;; Note: the search path specified for TZDIR is only
+                  ;; effective for users of the package, not while it's being
+                  ;; built.
+                  (setenv "TZDIR" (search-input-directory
+                                   (or native-inputs inputs) "share/zoneinfo"))
+
+                  ;; This is to avoid QTimeZone::systemTimeZone() returning
+                  ;; invalid QDate objects due to missing /etc/timezone or
+                  ;; /etc/localtime.
+                  (setenv "TZ" "Etc/UTC")
+
                   (invoke
                    "xvfb-run" "ctest" "--output-on-failure"
                    "-j" (if parallel-tests?
@@ -783,11 +796,6 @@ (define-public qtbase
                       ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
                       "tst_moc"
 
-                      ;; The 'tst_qdate' test fails because the current time
-                      ;; is reported as an invalid date (see:
-                      ;; https://bugreports.qt.io/browse/QTBUG-116017).
-                      "tst_qdate"
-
                       ;; The qgraphicsview and qopenglwidget tests fail with a
                       ;; segfault for unknown reasons (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-116018).
@@ -826,14 +834,6 @@ (define-public qtbase
                       ;; The 'test_import_plugins' fails with "Could NOT find
                       ;; Qt6MockPlugins1".
                       "test_import_plugins"
-                      ;; The 'tst_QTimeZone::systemZone' validates the
-                      ;; currently set timezone and fails.
-                      "tst_qtimezone"
-                      ;; The 'tst_qdatetime' fails with:
-                      ;; FAIL!  : tst_QDateTime::offsetFromUtc() Compared values are not the same
-                      ;; Actual   (dt5.offsetFromUtc()): 0
-                      ;; Expected (46800)              : 46800
-                      "tst_qdatetime"
                       ;; The tst_QObjectRace::destroyRace is flaky (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-103489).
                       "tst_qobjectrace"
@@ -910,7 +910,8 @@ (define-public qtbase
                     (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)))))))))
     (native-inputs
      (modify-inputs (package-native-inputs qtbase-5)
-       (prepend wayland-protocols
+       (prepend tzdata-for-tests
+                wayland-protocols
                 xvfb-run)))
     (inputs
      (modify-inputs (package-inputs qtbase-5)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 4/4] gnu: qtdeclarative: Add a debug output.
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                     ` (2 preceding siblings ...)
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
@ 2023-09-13 17:33   ` Maxim Cournoyer
  3 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-13 17:33 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtdeclarative) [outputs]: New field.

---

(no changes since v1)

 gnu/packages/qt.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index c06f27c03e2..ab99f590b25 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1350,6 +1350,7 @@ (define-public qtdeclarative
                (base32
                 "06c7xfqn2a5s2m8j1bcvx3pyjqg1rgqkjvp49737gb4z9vjiz8gk"))
               (patches (search-patches "qtdeclarative-disable-qmlcache.patch"))))
+    (outputs '("out" "debug"))
     (build-system cmake-build-system)
     (arguments
      (list
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
@ 2023-09-14  9:07     ` Andreas Enge
  2023-09-17  2:51       ` Maxim Cournoyer
  0 siblings, 1 reply; 21+ messages in thread
From: Andreas Enge @ 2023-09-14  9:07 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 宋文武, 65922

Hello,

I just happened to have the time for one patch :)

Am Wed, Sep 13, 2023 at 01:33:13PM -0400 schrieb Maxim Cournoyer:
> * gnu/packages/qt.scm (qtbase-5) [arguments]: Add #:disallowed-references
> argument to guard against the problem reoccurring in the future.
> Add do-not-capture-python phase.
> (qtbase) [arguments]: Update do-not-capture-python phase.

This one looks good, except for indentation there, I think:
> +             (substitute*
> +                 (search-input-file
> +                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
> +               (((which "python3"))
> +                "/usr/bin/env python3")))))))

Andreas





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-14  9:07     ` Andreas Enge
@ 2023-09-17  2:51       ` Maxim Cournoyer
  2023-09-17 10:12         ` Andreas Enge
  0 siblings, 1 reply; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17  2:51 UTC (permalink / raw)
  To: Andreas Enge; +Cc: 宋文武, 65922

Hi Andreas,

Andreas Enge <andreas@enge.fr> writes:

> Hello,
>
> I just happened to have the time for one patch :)
>
> Am Wed, Sep 13, 2023 at 01:33:13PM -0400 schrieb Maxim Cournoyer:
>> * gnu/packages/qt.scm (qtbase-5) [arguments]: Add #:disallowed-references
>> argument to guard against the problem reoccurring in the future.
>> Add do-not-capture-python phase.
>> (qtbase) [arguments]: Update do-not-capture-python phase.
>
> This one looks good, except for indentation there, I think:
>> +             (substitute*
>> +                 (search-input-file
>> +                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
>> +               (((which "python3"))
>> +                "/usr/bin/env python3")))))))

It's actually valid -- I just doubled check :-)

Thanks for taking a peek.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-17  2:51       ` Maxim Cournoyer
@ 2023-09-17 10:12         ` Andreas Enge
  2023-09-17 12:55           ` Maxim Cournoyer
  0 siblings, 1 reply; 21+ messages in thread
From: Andreas Enge @ 2023-09-17 10:12 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 宋文武, 65922

Am Sat, Sep 16, 2023 at 10:51:22PM -0400 schrieb Maxim Cournoyer:
> > This one looks good, except for indentation there, I think:
> >> +             (substitute*
> >> +                 (search-input-file
> >> +                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
> >> +               (((which "python3"))
> >> +                "/usr/bin/env python3")))))))
> It's actually valid -- I just doubled check :-)

Hm, I thought that arguments to functions should be aligned, so that
"(search-..." and "(((which" should start in the same column?
And that we would indent by either 1 or 2 (according to arcane rules I
never memorised)?

Andreas





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again).
  2023-09-17 10:12         ` Andreas Enge
@ 2023-09-17 12:55           ` Maxim Cournoyer
  0 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 12:55 UTC (permalink / raw)
  To: Andreas Enge; +Cc: 宋文武, 65922

Hi Andreas,

Andreas Enge <andreas@enge.fr> writes:

> Am Sat, Sep 16, 2023 at 10:51:22PM -0400 schrieb Maxim Cournoyer:
>> > This one looks good, except for indentation there, I think:
>> >> +             (substitute*
>> >> +                 (search-input-file
>> >> +                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
>> >> +               (((which "python3"))
>> >> +                "/usr/bin/env python3")))))))
>> It's actually valid -- I just doubled check :-)
>
> Hm, I thought that arguments to functions should be aligned, so that
> "(search-..." and "(((which" should start in the same column?
> And that we would indent by either 1 or 2 (according to arcane rules I
> never memorised)?

According to our indentation rules in .dir-locals.el:

--8<---------------cut here---------------start------------->8---
(put 'substitute* 'scheme-indent-function 1)
--8<---------------cut here---------------end--------------->8---

Which, following the Emacs documentation for scheme-indent-function then
lisp-indent-function (C-h f scheme-indent-function RET), says (where N
is the 1 argument):

--8<---------------cut here---------------start------------->8---
* an integer N, meaning indent the first N arguments specially
  (like ordinary function arguments), and then indent any further
  arguments like a body;
--8<---------------cut here---------------end--------------->8---

The indentation produced is because of that special rule.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                   ` (4 preceding siblings ...)
  2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
@ 2023-09-17 17:26 ` Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
                     ` (4 more replies)
  2023-10-16 21:45 ` bug#65922: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  6 siblings, 5 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

Thes series removes Python from the closure of qtbase, both for versions 5.15
and 6.5.  It also reinstate a few tests that was made possible thanks to
discussions with upstream following reported the issues.

Changes in v3:
- New commit

Changes in v2:
- Use old TZDIR patch for qtbase@5 (the new one doesn't apply)

Maxim Cournoyer (5):
  gnu: qtbase: Do not capture Python (again).
  gnu: qtbase: Add $TZDIR to native search paths.
  gnu: qtbase: Reinstate date related tests.
  gnu: qtbase: Disable problematic tests on powerpc64le.
  gnu: qtdeclarative: Add a debug output.

 gnu/local.mk                                  |   1 +
 gnu/packages/patches/qtbase-5-use-TZDIR.patch |  39 +++
 gnu/packages/patches/qtbase-use-TZDIR.patch   | 162 +++++++++---
 gnu/packages/qt.scm                           | 236 ++++++++++--------
 4 files changed, 309 insertions(+), 129 deletions(-)
 create mode 100644 gnu/packages/patches/qtbase-5-use-TZDIR.patch


base-commit: 4cb2e08b8eb1acc824b72ec17b483d7d85b5af68
-- 
2.41.0





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again).
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
@ 2023-09-17 17:26   ` Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 2/5] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

Fixes <https://issues.guix.gnu.org/65457>.

* gnu/packages/qt.scm (qtbase-5) [arguments]: Add #:disallowed-references
argument to guard against the problem reoccurring in the future.
Add do-not-capture-python phase.
(qtbase) [arguments]: Update do-not-capture-python phase.
---

(no changes since v1)

 gnu/packages/qt.scm | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index b7e394d663c..a158f8114fe 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -392,7 +392,7 @@ (define-public qtbase-5
            fontconfig
            freetype
            glib
-           gtk+               ;for GTK theme support
+           gtk+                         ;for GTK theme support
            harfbuzz
            icu4c
            libinput-minimal
@@ -437,7 +437,8 @@ (define-public qtbase-5
            vulkan-headers
            ruby-2.7))
     (arguments
-     `(#:configure-flags
+     `(#:disallowed-references ,(list python)
+       #:configure-flags
        (let ((out (assoc-ref %outputs "out")))
          (list "-verbose"
                "-prefix" out
@@ -583,7 +584,16 @@ (define-public qtbase-5
                (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
                 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
                (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
-                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))))))))
+                (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))))
+         (add-after 'install 'do-not-capture-python
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; For some reason, patching the file after the
+             ;; patch-source-shebangs phase doesn't work for Qt 5.
+             (substitute*
+                 (search-input-file
+                  outputs "lib/qt5/mkspecs/features/uikit/devices.py")
+               (((which "python3"))
+                "/usr/bin/env python3")))))))
     (native-search-paths
      (list (search-path-specification
             (variable "QMAKEPATH")
@@ -724,10 +734,12 @@ (define-public qtbase
                 (substitute* "src/corelib/CMakeLists.txt"
                   (("/bin/ls")
                    (search-input-file inputs "bin/ls")))))
+            (delete 'do-not-capture-python) ;move after patch-source-shebangs
             (add-after 'patch-source-shebangs 'do-not-capture-python
               (lambda _
                 (substitute* '("mkspecs/features/uikit/devices.py"
-                               "util/testrunner/qt-testrunner.py")
+                               "util/testrunner/qt-testrunner.py"
+                               "util/testrunner/sanitizer-testrunner.py")
                   (((which "python3"))
                    "/usr/bin/env python3"))))
             (replace 'configure
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 2/5] gnu: qtbase: Add $TZDIR to native search paths.
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
@ 2023-09-17 17:26   ` Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 3/5] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtbase) [native-search-paths]: Add $TZDIR.
---

(no changes since v1)

 gnu/packages/qt.scm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a158f8114fe..8324beef6fc 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -60,6 +60,7 @@ (define-module (gnu packages qt)
   #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix deprecation)
+  #:use-module (guix search-paths)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
@@ -933,6 +934,7 @@ (define-public qtbase
            (search-path-specification
             (variable "QT_PLUGIN_PATH")
             (files '("lib/qt6/plugins")))
+           $TZDIR
            (search-path-specification
             (variable "XDG_DATA_DIRS")
             (files '("share")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 3/5] gnu: qtbase: Reinstate date related tests.
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 2/5] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
@ 2023-09-17 17:26   ` Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 4/5] gnu: qtbase: Disable problematic tests on powerpc64le Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 5/5] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
  4 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtbase) [native-inputs]: Add tzdata-for-tests.
[arguments]: Set the TZDIR and TZ environment variables, and reinstate the
tst_qdate, tst_qtimezone and tst_qdatetime tests in the check phase.
(qtbase-5) [source]: Replace qtbase-use-TZDIR.patch with
qtbase-5-use-TZDIR.patch.
* gnu/packages/patches/qtbase-use-TZDIR.patch: Refresh patch with upstream
version, and preserve the old one for qtbase@5 as...
* gnu/packages/patches/qtbase-5-use-TZDIR.patch: ... this.
* gnu/local.mk (dist_patch_DATA): Register new patch.

---

(no changes since v2)

Changes in v2:
- Use old TZDIR patch for qtbase@5 (the new one doesn't apply)

 gnu/local.mk                                  |   1 +
 gnu/packages/patches/qtbase-5-use-TZDIR.patch |  39 +++++
 gnu/packages/patches/qtbase-use-TZDIR.patch   | 162 ++++++++++++++----
 gnu/packages/qt.scm                           |  33 ++--
 4 files changed, 189 insertions(+), 46 deletions(-)
 create mode 100644 gnu/packages/patches/qtbase-5-use-TZDIR.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4f8637418ad..2d8ddf5716c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1878,6 +1878,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qtbase-absolute-runpath.patch		\
   %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch	\
   %D%/packages/patches/qtbase-qmake-use-libname.patch		\
+  %D%/packages/patches/qtbase-5-use-TZDIR.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
diff --git a/gnu/packages/patches/qtbase-5-use-TZDIR.patch b/gnu/packages/patches/qtbase-5-use-TZDIR.patch
new file mode 100644
index 00000000000..b6c377b133c
--- /dev/null
+++ b/gnu/packages/patches/qtbase-5-use-TZDIR.patch
@@ -0,0 +1,39 @@
+Use $TZDIR to search for time-zone data. Thus avoid depending on package
+"tzdata", which often introduces changes with near-immediate effects, so it's
+important to be able to update it fast.
+
+Based on a patch fron NixOS.
+===================================================================
+--- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
++++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -70,7 +70,11 @@
+ // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+ static QTzTimeZoneHash loadTzTimeZones()
+ {
+-    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
++    // Try TZDIR first, in case we're running on GuixSD.
++    QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
++    // Fallback to traditional paths in case we are not on GuixSD.
++    if (!QFile::exists(path))
++        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
+     if (!QFile::exists(path))
+         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+ 
+@@ -645,6 +649,9 @@
+         if (!tzif.open(QIODevice::ReadOnly))
+             return;
+     } else {
++      // Try TZDIR first, in case we're running on GuixSD.
++      tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
++      if (!tzif.open(QIODevice::ReadOnly)) {
+         // Open named tz, try modern path first, if fails try legacy path
+         tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
+         if (!tzif.open(QIODevice::ReadOnly)) {
+@@ -652,6 +659,7 @@
+             if (!tzif.open(QIODevice::ReadOnly))
+                 return;
+         }
++      }
+     }
+ 
+     QDataStream ds(&tzif);
diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
index b6c377b133c..98bf7493e9f 100644
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ b/gnu/packages/patches/qtbase-use-TZDIR.patch
@@ -1,39 +1,141 @@
-Use $TZDIR to search for time-zone data. Thus avoid depending on package
-"tzdata", which often introduces changes with near-immediate effects, so it's
-important to be able to update it fast.
+From 1075606f8b2f9e153c82f8e50cbd69cea9c72e87 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 11 Sep 2023 11:41:39 +0200
+Subject: [PATCH] Support the TZDIR environment variable
 
-Based on a patch fron NixOS.
-===================================================================
---- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
-+++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
-@@ -70,7 +70,11 @@
- // Parse zone.tab table, assume lists all installed zones, if not will need to read directories
+On Linux / glibc, this overrides the default system location for the
+zone info. So check for files there first. Break out a function to
+manage the trying of (now three) zoneinfo directories when opening a
+file by name relative to there.
+
+Pick-to: 6.6 6.5
+Task-number: QTBUG-116017
+Change-Id: I1f97107aabd9015c0a5543639870f1d70654ca67
+---
+* Rebased on top of v6.5.2.
+
+ src/corelib/time/qtimezoneprivate_tz.cpp | 73 ++++++++++++++++--------
+ 1 file changed, 49 insertions(+), 24 deletions(-)
+
+diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
+index 067191d816..a8b2fc894e 100644
+--- a/src/corelib/time/qtimezoneprivate_tz.cpp
++++ b/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -51,17 +51,41 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash;
+ 
+ static bool isTzFile(const QString &name);
+ 
++// Open a named file under the zone info directory:
++static bool openZoneInfo(QString name, QFile *file)
++{
++    // At least on Linux / glibc (see man 3 tzset), $TZDIR overrides the system
++    // default location for zone info:
++    const QString tzdir = qEnvironmentVariable("TZDIR");
++    if (!tzdir.isEmpty()) {
++        file->setFileName(QDir(tzdir).filePath(name));
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Try modern system path first:
++    constexpr auto zoneShare = "/usr/share/zoneinfo/"_L1;
++    if (tzdir != zoneShare && tzdir != zoneShare.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    // Fall back to legacy system path:
++    constexpr auto zoneLib = "/usr/lib/zoneinfo/"_L1;
++    if (tzdir != zoneLib && tzdir != zoneLib.chopped(1)) {
++        file->setFileName(zoneShare + name);
++        if (file->open(QIODevice::ReadOnly))
++            return true;
++    }
++    return false;
++}
++
+ // Parse zone.tab table for territory information, read directories to ensure we
+ // find all installed zones (many are omitted from zone.tab; even more from
+ // zone1970.tab).
  static QTzTimeZoneHash loadTzTimeZones()
  {
 -    QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-+    // Try TZDIR first, in case we're running on GuixSD.
-+    QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab");
-+    // Fallback to traditional paths in case we are not on GuixSD.
-+    if (!QFile::exists(path))
-+        path = QStringLiteral("/usr/share/zoneinfo/zone.tab");
-     if (!QFile::exists(path))
-         path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-    if (!QFile::exists(path))
+-        path = QStringLiteral("/usr/lib/zoneinfo/zone.tab");
+-
+-    QFile tzif(path);
+-    if (!tzif.open(QIODevice::ReadOnly))
++    QFile tzif;
++    if (!openZoneInfo("zone.tab"_L1, &tzif))
+         return QTzTimeZoneHash();
  
-@@ -645,6 +649,9 @@
+     QTzTimeZoneHash zonesHash;
+@@ -91,6 +115,7 @@ static QTzTimeZoneHash loadTzTimeZones()
+         }
+     }
+ 
++    const QString path = tzif.fileName();
+     const qsizetype cut = path.lastIndexOf(u'/');
+     Q_ASSERT(cut > 0);
+     const QDir zoneDir = QDir(path.first(cut));
+@@ -761,20 +786,13 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::findEntry(const QByteArray &ianaId)
+         tzif.setFileName(QStringLiteral("/etc/localtime"));
          if (!tzif.open(QIODevice::ReadOnly))
-             return;
-     } else {
-+      // Try TZDIR first, in case we're running on GuixSD.
-+      tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId));
-+      if (!tzif.open(QIODevice::ReadOnly)) {
-         // Open named tz, try modern path first, if fails try legacy path
-         tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId));
-         if (!tzif.open(QIODevice::ReadOnly)) {
-@@ -652,6 +659,7 @@
-             if (!tzif.open(QIODevice::ReadOnly))
-                 return;
+             return ret;
+-    } else {
+-        // Open named tz, try modern path first, if fails try legacy path
+-        tzif.setFileName("/usr/share/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-        if (!tzif.open(QIODevice::ReadOnly)) {
+-            tzif.setFileName("/usr/lib/zoneinfo/"_L1 + QString::fromLocal8Bit(ianaId));
+-            if (!tzif.open(QIODevice::ReadOnly)) {
+-                // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
+-                auto check = validatePosixRule(ianaId);
+-                if (check.isValid) {
+-                    ret.m_hasDst = check.hasDst;
+-                    ret.m_posixRule = ianaId;
+-                }
+-                return ret;
+-            }
++    } else if (!openZoneInfo(QString::fromLocal8Bit(ianaId), &tzif)) {
++        // ianaId may be a POSIX rule, taken from $TZ or /etc/TZ
++        auto check = validatePosixRule(ianaId);
++        if (check.isValid) {
++            ret.m_hasDst = check.hasDst;
++            ret.m_posixRule = ianaId;
++            return ret;
          }
-+      }
      }
  
-     QDataStream ds(&tzif);
+@@ -1317,7 +1335,8 @@ private:
+     {
+         // On most distros /etc/localtime is a symlink to a real file so extract
+         // name from the path
+-        const auto zoneinfo = "/zoneinfo/"_L1;
++        const QString tzdir = qEnvironmentVariable("TZDIR");
++        constexpr auto zoneinfo = "/zoneinfo/"_L1;
+         QString path = QStringLiteral("/etc/localtime");
+         long iteration = getSymloopMax();
+         // Symlink may point to another symlink etc. before being under zoneinfo/
+@@ -1325,9 +1344,15 @@ private:
+         // symlink, like America/Montreal pointing to America/Toronto
+         do {
+             path = QFile::symLinkTarget(path);
+-            int index = path.indexOf(zoneinfo);
+-            if (index >= 0) // Found zoneinfo file; extract zone name from path:
+-                return QStringView{ path }.mid(index + zoneinfo.size()).toUtf8();
++            // If it's a zoneinfo file, extract the zone name from its path:
++            int index = tzdir.isEmpty() ? -1 : path.indexOf(tzdir);
++            if (index >= 0) {
++                const auto tail = QStringView{ path }.sliced(index + tzdir.size()).toUtf8();
++                return tail.startsWith(u'/') ? tail.sliced(1) : tail;
++            }
++            index = path.indexOf(zoneinfo);
++            if (index >= 0)
++                return QStringView{ path }.sliced(index + zoneinfo.size()).toUtf8();
+         } while (!path.isEmpty() && --iteration > 0);
+ 
+         return QByteArray();
+
+base-commit: af457a9f0f7eb1a2a7d11f495da508faab91a442
+-- 
+2.41.0
+
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8324beef6fc..c06f27c03e2 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -365,7 +365,7 @@ (define-public qtbase-5
                (base32
                 "1fcg3kx5akvj0kqxd99h5lv3kv4pw2cj0makmpvhpw90inqnrl60"))
               ;; Use TZDIR to avoid depending on package "tzdata".
-              (patches (search-patches "qtbase-use-TZDIR.patch"
+              (patches (search-patches "qtbase-5-use-TZDIR.patch"
                                        "qtbase-moc-ignore-gcc-macro.patch"
                                        "qtbase-absolute-runpath.patch"))
               (modules '((guix build utils)))
@@ -747,7 +747,8 @@ (define-public qtbase
               (assoc-ref %standard-phases 'configure))
             (delete 'check)             ;move after patch-prl-files
             (add-after 'patch-prl-files 'check
-              (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (lambda* (#:key tests? parallel-tests?
+                        native-inputs inputs #:allow-other-keys)
                 (when tests?
                   ;; The tests expect to find the modules provided by this
                   ;; package; extend the environment variables needed to do so.
@@ -770,6 +771,18 @@ (define-public qtbase
                   ;; /tree/src/testlib/qtestblacklist.cpp).
                   (setenv "QTEST_ENVIRONMENT" "linux ci 32bit")
                   (setenv "HOME" "/tmp") ;some tests require a writable HOME
+
+                  ;; Note: the search path specified for TZDIR is only
+                  ;; effective for users of the package, not while it's being
+                  ;; built.
+                  (setenv "TZDIR" (search-input-directory
+                                   (or native-inputs inputs) "share/zoneinfo"))
+
+                  ;; This is to avoid QTimeZone::systemTimeZone() returning
+                  ;; invalid QDate objects due to missing /etc/timezone or
+                  ;; /etc/localtime.
+                  (setenv "TZ" "Etc/UTC")
+
                   (invoke
                    "xvfb-run" "ctest" "--output-on-failure"
                    "-j" (if parallel-tests?
@@ -783,11 +796,6 @@ (define-public qtbase
                       ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
                       "tst_moc"
 
-                      ;; The 'tst_qdate' test fails because the current time
-                      ;; is reported as an invalid date (see:
-                      ;; https://bugreports.qt.io/browse/QTBUG-116017).
-                      "tst_qdate"
-
                       ;; The qgraphicsview and qopenglwidget tests fail with a
                       ;; segfault for unknown reasons (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-116018).
@@ -826,14 +834,6 @@ (define-public qtbase
                       ;; The 'test_import_plugins' fails with "Could NOT find
                       ;; Qt6MockPlugins1".
                       "test_import_plugins"
-                      ;; The 'tst_QTimeZone::systemZone' validates the
-                      ;; currently set timezone and fails.
-                      "tst_qtimezone"
-                      ;; The 'tst_qdatetime' fails with:
-                      ;; FAIL!  : tst_QDateTime::offsetFromUtc() Compared values are not the same
-                      ;; Actual   (dt5.offsetFromUtc()): 0
-                      ;; Expected (46800)              : 46800
-                      "tst_qdatetime"
                       ;; The tst_QObjectRace::destroyRace is flaky (see:
                       ;; https://bugreports.qt.io/browse/QTBUG-103489).
                       "tst_qobjectrace"
@@ -910,7 +910,8 @@ (define-public qtbase
                     (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)))))))))
     (native-inputs
      (modify-inputs (package-native-inputs qtbase-5)
-       (prepend wayland-protocols
+       (prepend tzdata-for-tests
+                wayland-protocols
                 xvfb-run)))
     (inputs
      (modify-inputs (package-inputs qtbase-5)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 4/5] gnu: qtbase: Disable problematic tests on powerpc64le.
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                     ` (2 preceding siblings ...)
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 3/5] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
@ 2023-09-17 17:26   ` Maxim Cournoyer
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 5/5] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
  4 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtbase) [arguments] [powerpc64le]: Disable the
tst_qpainter, tst_qprocess and tst_qsqlthread tests in the check phase.

---

Changes in v3:
- New commit

 gnu/packages/qt.scm | 180 +++++++++++++++++++++++++-------------------
 1 file changed, 101 insertions(+), 79 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index c06f27c03e2..8cc1fa7398d 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -792,85 +792,107 @@ (define-public qtbase
                    (string-append
                     "("
                     (string-join
-                     (list
-                      ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
-                      "tst_moc"
-
-                      ;; The qgraphicsview and qopenglwidget tests fail with a
-                      ;; segfault for unknown reasons (see:
-                      ;; https://bugreports.qt.io/browse/QTBUG-116018).
-                      "tst_qgraphicsview"
-                      "tst_qopenglwidget"
-
-                      ;; The 'test_rcc' test fails on a comparison:
-                      ;; <<<<<< actual
-                      ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xe8,
-                      ;; ======
-                      ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
-                      ;; >>>>>> expected
-                      "tst_rcc"
-                      ;; The 'tst_qtemporarydir' and 'tst_qtemporaryfile'
-                      ;; tests depend on '/home' not being writable.
-                      "tst_qtemporarydir"
-                      "tst_qtemporaryfile"
-                      ;; The 'tst_qdir' compares two directories which are
-                      ;; unexpectedly different when inside the build
-                      ;; container.
-                      "tst_qdir"
-                      ;; This checks the last modified time of '/', and fails
-                      ;; because Epoch 0 is considered to be invalid.
-                      "tst_qresourceengine"
-                      ;; The 'tst_qfilesystemwatcher' installs a watcher on
-                      ;; '/home', which doesn't exist in the build container.
-                      "tst_qfilesystemwatcher"
-                      ;; Not all of the tested formats are supported by our
-                      ;; build of openssl; 871 passed, 122 failed.
-                      "tst_qsslkey"
-                      ;; The 'mockplugins' test fail following error: "Unknown
-                      ;; platform linux-g++", and the other plugin tests
-                      ;; depend on it.
-                      "mockplugins"
-                      "test_plugin_flavor.*"
-                      ;; The 'test_import_plugins' fails with "Could NOT find
-                      ;; Qt6MockPlugins1".
-                      "test_import_plugins"
-                      ;; The tst_QObjectRace::destroyRace is flaky (see:
-                      ;; https://bugreports.qt.io/browse/QTBUG-103489).
-                      "tst_qobjectrace"
-                      ;; The 'tst_QSettings::fromFile' assumes the data
-                      ;; location to be relative to the root directory and
-                      ;; fails.
-                      "tst_qsettings"
-                      ;; The 'tst_qaddpreroutine',
-                      ;; 'test_generating_cpp_exports' and
-                      ;; 'test_static_resources' tests fail with: "Unknown
-                      ;; platform linux-g++.
-                      "tst_qaddpreroutine"
-                      "test_generating_cpp_exports"
-                      "test_static_resources"
-                      ;; The 'tst_qfile' fails since there is no /home in the
-                      ;; build container.
-                      "tst_qfile"
-                      ;; The 'tst_QGlyphRun::mixedScripts' test fails with:
-                      ;; Actual   (glyphRuns.size()): 1
-                      ;; Expected (2)               : 2
-                      "tst_qglyphrun"
-                      ;; The 'tst_qx11info' test fails with "Internal error:
-                      ;; QPA plugin doesn't implement generatePeekerId",
-                      ;; likely requires a real display.
-                      "tst_qx11info"
-                      ;; The 'tst_qgraphicswidget' test fails because "This
-                      ;; plugin does not support propagateSizeHints".
-                      "tst_qgraphicswidget"
-                      ;; The 'tst_qdnslookup' test requires networking.
-                      "tst_qdnslookup"
-                      ;; The 'tst_qcompleter' and 'tst_QFiledialog::completer'
-                      ;; attempt to complete paths they assume exist, such as
-                      ;; "/home", "/etc" or "/root" and fail.
-                      "tst_qcompleter"
-                      "tst_qfiledialog"
-                      ;; This test is susceptible to the 600 ms timeout used:
-                      "tst_qpauseanimation") "|") ")")))))
+                     (append
+                      (list
+                       ;; The 'tst_moc' test fails with "'fi.exists()' returned FALSE".
+                       "tst_moc"
+
+                       ;; The qgraphicsview and qopenglwidget tests fail with a
+                       ;; segfault for unknown reasons (see:
+                       ;; https://bugreports.qt.io/browse/QTBUG-116018).
+                       "tst_qgraphicsview"
+                       "tst_qopenglwidget"
+
+                       ;; The 'test_rcc' test fails on a comparison:
+                       ;; <<<<<< actual
+                       ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xe8,
+                       ;; ======
+                       ;; 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+                       ;; >>>>>> expected
+                       "tst_rcc"
+                       ;; The 'tst_qtemporarydir' and 'tst_qtemporaryfile'
+                       ;; tests depend on '/home' not being writable.
+                       "tst_qtemporarydir"
+                       "tst_qtemporaryfile"
+                       ;; The 'tst_qdir' compares two directories which are
+                       ;; unexpectedly different when inside the build
+                       ;; container.
+                       "tst_qdir"
+                       ;; This checks the last modified time of '/', and fails
+                       ;; because Epoch 0 is considered to be invalid.
+                       "tst_qresourceengine"
+                       ;; The 'tst_qfilesystemwatcher' installs a watcher on
+                       ;; '/home', which doesn't exist in the build container.
+                       "tst_qfilesystemwatcher"
+                       ;; Not all of the tested formats are supported by our
+                       ;; build of openssl; 871 passed, 122 failed.
+                       "tst_qsslkey"
+                       ;; The 'mockplugins' test fail following error: "Unknown
+                       ;; platform linux-g++", and the other plugin tests
+                       ;; depend on it.
+                       "mockplugins"
+                       "test_plugin_flavor.*"
+                       ;; The 'test_import_plugins' fails with "Could NOT find
+                       ;; Qt6MockPlugins1".
+                       "test_import_plugins"
+                       ;; The tst_QObjectRace::destroyRace is flaky (see:
+                       ;; https://bugreports.qt.io/browse/QTBUG-103489).
+                       "tst_qobjectrace"
+                       ;; The 'tst_QSettings::fromFile' assumes the data
+                       ;; location to be relative to the root directory and
+                       ;; fails.
+                       "tst_qsettings"
+                       ;; The 'tst_qaddpreroutine',
+                       ;; 'test_generating_cpp_exports' and
+                       ;; 'test_static_resources' tests fail with: "Unknown
+                       ;; platform linux-g++.
+                       "tst_qaddpreroutine"
+                       "test_generating_cpp_exports"
+                       "test_static_resources"
+                       ;; The 'tst_qfile' fails since there is no /home in the
+                       ;; build container.
+                       "tst_qfile"
+                       ;; The 'tst_QGlyphRun::mixedScripts' test fails with:
+                       ;; Actual   (glyphRuns.size()): 1
+                       ;; Expected (2)               : 2
+                       "tst_qglyphrun"
+                       ;; The 'tst_qx11info' test fails with "Internal error:
+                       ;; QPA plugin doesn't implement generatePeekerId",
+                       ;; likely requires a real display.
+                       "tst_qx11info"
+
+                       ;; The 'tst_qgraphicswidget' test fails because "This
+                       ;; plugin does not support propagateSizeHints".
+                       "tst_qgraphicswidget"
+                       ;; The 'tst_qdnslookup' test requires networking.
+                       "tst_qdnslookup"
+                       ;; The 'tst_qcompleter' and 'tst_QFiledialog::completer'
+                       ;; attempt to complete paths they assume exist, such as
+                       ;; "/home", "/etc" or "/root" and fail.
+                       "tst_qcompleter"
+                       "tst_qfiledialog"
+                       ;; This test is susceptible to the 600 ms timeout used:
+                       "tst_qpauseanimation")
+                      #$@(if (target-ppc64le?)
+                             #~((list
+                                 ;; The 'tst_QPainter::fpe_radialGradients'
+                                 ;; test fails with a 'Floating point
+                                 ;; exception' error on powerpc64le (see:
+                                 ;; https://bugreports.qt.io/browse/QTBUG-117113).
+                                 "tst_qpainter"
+
+                                 ;; The 'startStopStartStopBuffers' test fails
+                                 ;; on the powerpc64le architecture (see:
+                                 ;; https://bugreports.qt.io/browse/QTBUG-80953).
+                                 "tst_qprocess"
+
+                                 ;; The 'tst_QSqlThread::readWriteThreading'
+                                 ;; test may fail with an sqlite related error,
+                                 ;; "'Unable to fetch row' || 'database is
+                                 ;; locked'" (see:
+                                 ;; https://bugreports.qt.io/browse/QTBUG-117114).
+                                 "tst_qsqlthread"))
+                             #~())) "|") ")")))))
             (replace 'patch-mkspecs
               (lambda* (#:key outputs #:allow-other-keys)
                 (let* ((archdata (search-input-directory outputs "lib/qt6"))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [bug#65922] [qt-team PATCH v3 5/5] gnu: qtdeclarative: Add a debug output.
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                     ` (3 preceding siblings ...)
  2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 4/5] gnu: qtbase: Disable problematic tests on powerpc64le Maxim Cournoyer
@ 2023-09-17 17:26   ` Maxim Cournoyer
  4 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-09-17 17:26 UTC (permalink / raw)
  To: 65922
  Cc: Maxim Cournoyer, Maxim Cournoyer, Andreas Enge,
	宋文武

* gnu/packages/qt.scm (qtdeclarative) [outputs]: New field.

---

(no changes since v1)

 gnu/packages/qt.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8cc1fa7398d..87de296013f 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1372,6 +1372,7 @@ (define-public qtdeclarative
                (base32
                 "06c7xfqn2a5s2m8j1bcvx3pyjqg1rgqkjvp49737gb4z9vjiz8gk"))
               (patches (search-patches "qtdeclarative-disable-qmlcache.patch"))))
+    (outputs '("out" "debug"))
     (build-system cmake-build-system)
     (arguments
      (list
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 21+ messages in thread

* bug#65922: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests
  2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
                   ` (5 preceding siblings ...)
  2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
@ 2023-10-16 21:45 ` Maxim Cournoyer
  6 siblings, 0 replies; 21+ messages in thread
From: Maxim Cournoyer @ 2023-10-16 21:45 UTC (permalink / raw)
  To: 65922-done; +Cc: Andreas Enge, 宋文武

Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Thes series removes Python from the closure of qtbase, both for versions 5.15
> and 6.5.  It also reinstate a few tests that was made possible thanks to
> discussions with upstream following reported the issues.
>
> Changes in v2:
> - Also apply fix to qtbase-5 package.
>
> Maxim Cournoyer (4):
>   gnu: qtbase: Do not capture Python (again).
>   gnu: qtbase: Add $TZDIR to native search paths.
>   gnu: qtbase: Reinstate date related tests.
>   gnu: qtdeclarative: Add a debug output.

Now merged.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2023-10-16 21:47 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-13 16:56 [bug#65922] [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
2023-09-13 16:58 ` [bug#65922] [qt-team PATCH 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
2023-09-13 17:33 ` [bug#65922] [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
2023-09-14  9:07     ` Andreas Enge
2023-09-17  2:51       ` Maxim Cournoyer
2023-09-17 10:12         ` Andreas Enge
2023-09-17 12:55           ` Maxim Cournoyer
2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 2/4] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 3/4] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
2023-09-13 17:33   ` [bug#65922] [qt-team PATCH v2 4/4] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
2023-09-17 17:26 ` [bug#65922] [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer
2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again) Maxim Cournoyer
2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 2/5] gnu: qtbase: Add $TZDIR to native search paths Maxim Cournoyer
2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 3/5] gnu: qtbase: Reinstate date related tests Maxim Cournoyer
2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 4/5] gnu: qtbase: Disable problematic tests on powerpc64le Maxim Cournoyer
2023-09-17 17:26   ` [bug#65922] [qt-team PATCH v3 5/5] gnu: qtdeclarative: Add a debug output Maxim Cournoyer
2023-10-16 21:45 ` bug#65922: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).