Package: guix-patches;
Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Date: Wed, 13 Sep 2023 16:57:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 65922 in the body.
You can then email your comments to 65922 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 16:57:02 GMT) Full text and rfc822 format available.Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
:andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
.
(Wed, 13 Sep 2023 16:57:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: guix-patches <at> gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Date: Wed, 13 Sep 2023 12:56:13 -0400
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
andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 16:59:02 GMT) Full text and rfc822 format available.Message #8 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH 1/4] gnu: qtbase: Do not capture Python (again). Date: Wed, 13 Sep 2023 12:58:21 -0400
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
andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 16:59:02 GMT) Full text and rfc822 format available.Message #11 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH 2/4] gnu: qtbase: Add $TZDIR to native search paths. Date: Wed, 13 Sep 2023 12:58:22 -0400
* 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
andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 16:59:03 GMT) Full text and rfc822 format available.Message #14 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH 4/4] gnu: qtdeclarative: Add a debug output. Date: Wed, 13 Sep 2023 12:58:24 -0400
* 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
andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 16:59:03 GMT) Full text and rfc822 format available.Message #17 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH 3/4] gnu: qtbase: Reinstate date related tests. Date: Wed, 13 Sep 2023 12:58:23 -0400
* 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 <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 17:35:02 GMT) Full text and rfc822 format available.Message #20 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v2 0/4] Avoid capturing python in qtbase, reinstate tests Date: Wed, 13 Sep 2023 13:33:12 -0400
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 <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 17:35:02 GMT) Full text and rfc822 format available.Message #23 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again). Date: Wed, 13 Sep 2023 13:33:13 -0400
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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 17:35:03 GMT) Full text and rfc822 format available.Message #26 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v2 2/4] gnu: qtbase: Add $TZDIR to native search paths. Date: Wed, 13 Sep 2023 13:33:14 -0400
* 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 17:35:03 GMT) Full text and rfc822 format available.Message #29 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v2 3/4] gnu: qtbase: Reinstate date related tests. Date: Wed, 13 Sep 2023 13:33:15 -0400
* 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 <at> 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 <at> 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 <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Wed, 13 Sep 2023 17:35:04 GMT) Full text and rfc822 format available.Message #32 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v2 4/4] gnu: qtdeclarative: Add a debug output. Date: Wed, 13 Sep 2023 13:33:16 -0400
* 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
guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Thu, 14 Sep 2023 09:08:02 GMT) Full text and rfc822 format available.Message #35 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Andreas Enge <andreas <at> enge.fr> To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Cc: 宋文武 <iyzsong <at> envs.net>, 65922 <at> debbugs.gnu.org Subject: Re: [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again). Date: Thu, 14 Sep 2023 11:07:24 +0200
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
guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 02:52:01 GMT) Full text and rfc822 format available.Message #38 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Andreas Enge <andreas <at> enge.fr> Cc: 宋文武 <iyzsong <at> envs.net>, 65922 <at> debbugs.gnu.org Subject: Re: [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again). Date: Sat, 16 Sep 2023 22:51:22 -0400
Hi Andreas, Andreas Enge <andreas <at> 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
guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 10:13:02 GMT) Full text and rfc822 format available.Message #41 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Andreas Enge <andreas <at> enge.fr> To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Cc: 宋文武 <iyzsong <at> envs.net>, 65922 <at> debbugs.gnu.org Subject: Re: [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again). Date: Sun, 17 Sep 2023 12:12:04 +0200
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
guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 12:57:01 GMT) Full text and rfc822 format available.Message #44 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Andreas Enge <andreas <at> enge.fr> Cc: 宋文武 <iyzsong <at> envs.net>, 65922 <at> debbugs.gnu.org Subject: Re: [bug#65922] [qt-team PATCH v2 1/4] gnu: qtbase: Do not capture Python (again). Date: Sun, 17 Sep 2023 08:55:54 -0400
Hi Andreas, Andreas Enge <andreas <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:02 GMT) Full text and rfc822 format available.Message #47 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 0/5] Avoid capturing python in qtbase, reinstate tests Date: Sun, 17 Sep 2023 13:26:12 -0400
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 <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:02 GMT) Full text and rfc822 format available.Message #50 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 1/5] gnu: qtbase: Do not capture Python (again). Date: Sun, 17 Sep 2023 13:26:13 -0400
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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:03 GMT) Full text and rfc822 format available.Message #53 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 2/5] gnu: qtbase: Add $TZDIR to native search paths. Date: Sun, 17 Sep 2023 13:26:14 -0400
* 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:03 GMT) Full text and rfc822 format available.Message #56 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 3/5] gnu: qtbase: Reinstate date related tests. Date: Sun, 17 Sep 2023 13:26:15 -0400
* 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 <at> 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 <at> 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 <at> 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:03 GMT) Full text and rfc822 format available.Message #59 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 4/5] gnu: qtbase: Disable problematic tests on powerpc64le. Date: Sun, 17 Sep 2023 13:26:16 -0400
* 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
maxim.cournoyer <at> gmail.com, andreas <at> enge.fr, iyzsong <at> envs.net, guix-patches <at> gnu.org
:bug#65922
; Package guix-patches
.
(Sun, 17 Sep 2023 17:28:04 GMT) Full text and rfc822 format available.Message #62 received at 65922 <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922 <at> debbugs.gnu.org Cc: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [qt-team PATCH v3 5/5] gnu: qtdeclarative: Add a debug output. Date: Sun, 17 Sep 2023 13:26:17 -0400
* 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
Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
:Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
:Message #67 received at 65922-done <at> debbugs.gnu.org (full text, mbox):
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: 65922-done <at> debbugs.gnu.org Cc: Andreas Enge <andreas <at> enge.fr>, 宋文武 <iyzsong <at> envs.net> Subject: Re: bug#65922: [qt-team PATCH 0/4] Avoid capturing python in qtbase, reinstate tests Date: Mon, 16 Oct 2023 17:45:39 -0400
Hi, Maxim Cournoyer <maxim.cournoyer <at> 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
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 14 Nov 2023 12:24:06 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.