GNU bug report logs - #75966
[PATCH] gnu: qtwebengine: Set default path for QtWebEngineProcess.

Previous Next

Package: guix-patches;

Reported by: iyzsong <at> envs.net

Date: Fri, 31 Jan 2025 10:32:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 75966 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to maxim.cournoyer <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Fri, 31 Jan 2025 10:32:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to iyzsong <at> envs.net:
New bug report received and forwarded. Copy sent to maxim.cournoyer <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org. (Fri, 31 Jan 2025 10:32:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: iyzsong <at> envs.net
To: guix-patches <at> gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>
Subject: [PATCH] gnu: qtwebengine: Set default path for QtWebEngineProcess.
Date: Fri, 31 Jan 2025 18:34:50 +0800
From: 宋文武 <iyzsong <at> member.fsf.org>

* gnu/packages/qt.scm (qtwebengine-5, qtwebengine)[arguments]:
Substitute 'QLibraryInfo::LibraryExecutablesPath' in 'substitute-source phase.
[native-search-paths]: Remove QTWEBENGINEPROCESS_PATH.
* gnu/packages/ebook.scm (calibre)
* gnu/packages/education.scm (anki)
* gnu/packages/kde-internet.scm (falkon)
* gnu/packages/kde-systemtools.scm (khelpcenter)
* gnu/packages/kde.scm (akregator)
* gnu/packages/video.scm (openshot)
* gnu/packages/vpn.scm (openconnect-sso)
* gnu/packages/web-browsers.scm (qutebrowser)
* gnu/packages/web.scm (kiwix-desktop): Remove wrapper for QTWEBENGINEPROCESS_PATH.

Change-Id: I43745969ce80daa0f077da37671d1b44a468c953
---
 gnu/packages/ebook.scm           | 21 +--------------------
 gnu/packages/education.scm       | 13 +++----------
 gnu/packages/kde-internet.scm    | 13 -------------
 gnu/packages/kde-systemtools.scm | 10 +---------
 gnu/packages/kde.scm             | 13 +------------
 gnu/packages/qt.scm              | 22 ++++++++--------------
 gnu/packages/video.scm           | 14 +-------------
 gnu/packages/vpn.scm             | 12 +-----------
 gnu/packages/web-browsers.scm    | 10 ++--------
 gnu/packages/web.scm             | 10 +---------
 10 files changed, 19 insertions(+), 119 deletions(-)

diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 0cd2b31724..73fea2f66a 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -320,26 +320,7 @@ (define-public calibre
                      (string-append #$(this-package-input "font-liberation")
                                     "/share/fonts/truetype")))
                 (delete-file-recursively font-dest)
-                (symlink font-src font-dest))))
-          ;; Make run-time dependencies available to the binaries.
-          (add-after 'wrap 'wrap-program
-            (lambda* (#:key inputs #:allow-other-keys)
-              (with-directory-excursion (string-append #$output "/bin")
-                (for-each
-                 (lambda (binary)
-                   (wrap-program binary
-                     ;; Make QtWebEngineProcess available.
-                     `("QTWEBENGINEPROCESS_PATH" =
-                       ,(list
-                         (search-input-file
-                          inputs "/lib/qt5/libexec/QtWebEngineProcess")))))
-                 ;; Wrap all the binaries shipping with the package, except
-                 ;; for the wrappings created during the 'wrap standard
-                 ;; phase.  This extends existing .calibre-real wrappers
-                 ;; rather than create ..calibre-real-real-s.  For more
-                 ;; information see: https://issues.guix.gnu.org/43249.
-                 (find-files "." (lambda (file stat)
-                                   (not (wrapped-program? file)))))))))))
+                (symlink font-src font-dest)))))))
     (home-page "https://calibre-ebook.com/")
     (synopsis "E-book library management software")
     (description "Calibre is an e-book library manager.  It can view, convert
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index f42a216972..f0c0e931bf 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -836,18 +836,11 @@ (define-public anki
                          (filter (match-lambda
                                    ((label . _)
                                     (string-prefix? "python-" label)))
-                                 inputs)))
-                   (qtwebengineprocess
-                    (search-input-file inputs
-                                       "lib/qt5/libexec/QtWebEngineProcess")))
-               ;; The program fails to find the QtWebEngineProcess program, so
-               ;; we set QTWEBENGINEPROCESS_PATH to help it.  PYTHONPATH is
-               ;; wrapped to avoid declaring Python libraries as propagated
-               ;; inputs.
+                                 inputs))))
+               ;; PYTHONPATH is wrapped to avoid declaring Python libraries as
+               ;; propagated inputs.
                (for-each (lambda (program)
                            (wrap-program program
-                             `("QTWEBENGINEPROCESS_PATH" =
-                               (,qtwebengineprocess))
                              `("PATH" prefix (,(string-append
                                                 (assoc-ref inputs "mpv")
                                                 "/bin")))
diff --git a/gnu/packages/kde-internet.scm b/gnu/packages/kde-internet.scm
index 4bf40afe88..d54126ed12 100644
--- a/gnu/packages/kde-internet.scm
+++ b/gnu/packages/kde-internet.scm
@@ -130,19 +130,6 @@ (define-public falkon
         (base32
          "0j930i2nvg71p05z881inbk59c54gx8dzhyjb8iaqkw8i5s5r983"))))
     (build-system qt-build-system)
-    (arguments
-     (list #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'install 'wrap
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let ((qtwebengineprocess
-                          (search-input-file inputs
-                                             "lib/qt6/libexec/QtWebEngineProcess")))
-                     ;; The program fails to find the QtWebEngineProcess program, so
-                     ;; we set QTWEBENGINEPROCESS_PATH to help it.
-                     (wrap-program (string-append #$output "/bin/falkon")
-                       `("QTWEBENGINEPROCESS_PATH" =
-                         (,qtwebengineprocess)))))))))
     (native-inputs
      (list extra-cmake-modules pkg-config qttools))
     (inputs
diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm
index 4923854a7c..a86b550a7f 100644
--- a/gnu/packages/kde-systemtools.scm
+++ b/gnu/packages/kde-systemtools.scm
@@ -178,15 +178,7 @@ (define-public khelpcenter
     PrintSupport")
                      (("Qt6::WebEngineWidgets")
                       "Qt6::PrintSupport
-    Qt6::WebEngineWidgets"))))
-               (add-after 'install 'wrap-executable
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (wrap-program (string-append #$output
-                                                "/bin/khelpcenter")
-                     `("QTWEBENGINEPROCESS_PATH" =
-                       (,(search-input-file
-                          inputs
-                          "lib/qt6/libexec/QtWebEngineProcess")))))))))
+    Qt6::WebEngineWidgets")))))))
     (home-page "https://apps.kde.org/khelpcenter/")
     (synopsis "KDE documentation viewer")
     (description "KHelpCenter uses meta data files which describe the
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 765176f42b..9a4115eda6 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -205,18 +205,7 @@ (define-public akregator
         (base32 "07flc3617px9w1c729p0lsixf1g0h297hkbip259ykkbwxizn71q"))))
     (build-system qt-build-system)
     (arguments
-     (list #:qtbase qtbase
-           #:phases
-           #~(modify-phases %standard-phases
-             (add-after 'install 'wrap-qt-process-path
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (bin (string-append out "/bin/akregator"))
-                        (qt-process-path
-                         (search-input-file
-                          inputs "/lib/qt6/libexec/QtWebEngineProcess")))
-                   (wrap-program bin
-                     `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+     (list #:qtbase qtbase))
     (native-inputs
      (list extra-cmake-modules kdoctools))
     (inputs
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 76c11af543..c29f8e14e7 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3415,7 +3415,10 @@ (define-public qtwebengine-5
                                   "/share/qt5/translations\")"))
                   (("QLibraryInfo::location\\(QLibraryInfo::DataPath\\)")
                    (string-append "QLatin1String(\"" #$output
-                                  "/share/qt5\")")))
+                                  "/share/qt5\")"))
+                  (("QLibraryInfo::location\\(QLibraryInfo::LibraryExecutablesPath)")
+                   (string-append "QLatin1String(\"" #$output
+                                  "/lib/qt5/libexec\")")))
                 ;; Substitute full dynamic library path for nss.
                 (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
                   (("libnssckbi.so")
@@ -3453,12 +3456,6 @@ (define-public qtwebengine-5
        ;; It's possible this can be fixed by setting QTWEBENGINEPROCESS_PATH
        ;; before running tests.
        ((#:tests? _ #f) #f)))
-    (native-search-paths
-     (list (search-path-specification
-            (file-type 'regular)
-            (separator #f)
-            (variable "QTWEBENGINEPROCESS_PATH")
-            (files '("lib/qt5/libexec/QtWebEngineProcess")))))
     (home-page "https://wiki.qt.io/QtWebEngine")
     (synopsis "Qt WebEngine module")
     (description "The Qt5WebEngine module provides support for web applications
@@ -3824,7 +3821,10 @@ (define-public qtwebengine
                                 "/share/qt6/translations\")"))
                 (("QLibraryInfo::path\\(QLibraryInfo::DataPath)")
                  (string-append "QLatin1String(\"" #$output
-                                "/share/qt6\")")))
+                                "/share/qt6\")"))
+                (("QLibraryInfo::path\\(QLibraryInfo::LibraryExecutablesPath)")
+                 (string-append "QLatin1String(\"" #$output
+                                "/lib/qt6/libexec\")")))
               ;; Substitute full dynamic library path for nss.
               (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
                 (("libnssckbi.so")
@@ -3884,12 +3884,6 @@ (define-public qtwebengine
        (replace "qtbase" qtbase)
        (replace "qtdeclarative" qtdeclarative)
        (replace "qtwebchannel" qtwebchannel)))
-    (native-search-paths
-     (list (search-path-specification
-            (file-type 'regular)
-            (separator #f)
-            (variable "QTWEBENGINEPROCESS_PATH")
-            (files '("lib/qt6/libexec/QtWebEngineProcess")))))
     (home-page "https://wiki.qt.io/QtWebEngine")
     (synopsis "Qt WebEngine module")
     (description "The Qt WebEngine module provides support for web
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d0b5907bdd..4881f6ba64 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -6049,19 +6049,7 @@ (define-public openshot
                     (lambda _
                       ;; src/classes/info.py "needs" to create several
                       ;; directories in $HOME when loaded during build
-                      (setenv "HOME" "/tmp")))
-                  (add-after 'install 'wrap-program
-                    (lambda* (#:key outputs inputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out"))
-                            (qtwebengine-process-path
-                             (search-input-file
-                              inputs "/lib/qt5/libexec/QtWebEngineProcess")))
-                        (wrap-qt-program "openshot-qt"
-                                         #:output out #:inputs inputs)
-                        ;; Help the program discover QtWebEngine at runtime.
-                        (wrap-program (string-append out "/bin/openshot-qt")
-                          `("QTWEBENGINEPROCESS_PATH" =
-                            (,qtwebengine-process-path)))))))))
+                      (setenv "HOME" "/tmp"))))))
     (home-page "https://www.openshot.org/")
     (synopsis "Video editor")
     (description "OpenShot takes your videos, photos, and music files and
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 0b62e8c7cf..b64617c5df 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -800,17 +800,7 @@ (define-public openconnect-sso
                (("\"openconnect\"")
                 (string-append "\""
                                (search-input-file inputs "/sbin/openconnect")
-                               "\"")))))
-         (add-after 'check 'wrap-qt-process-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/openconnect-sso"))
-                    (qt-process-path
-                     (search-input-file inputs
-                                        "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 #:sh (search-input-file inputs "bin/bash")
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+                               "\""))))))))
     (inputs
      (list openconnect
            poetry
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index c0138eea17..5159a3b76d 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -490,10 +490,7 @@ (define-public qutebrowser
            python-pyyaml
            python-pyqt-6
            python-pyqtwebengine-6
-           python-tldextract
-           ;; While qtwebengine is provided by python-pyqtwebengine-6, it's
-           ;; included here so we can wrap QTWEBENGINEPROCESS_PATH.
-           qtwebengine))
+           python-tldextract))
     (arguments
      `(;; FIXME: With the existence of qtwebengine, tests can now run.  But
        ;; they are still disabled because test phase hangs.  It's not readily
@@ -547,10 +544,7 @@ (define-public qutebrowser
              (wrap-program (search-input-file outputs "bin/qutebrowser")
                `("QTWEBENGINE_RESOURCES_PATH" =
                  (,(search-input-directory
-                    inputs "/share/qt6/resources")))
-               `("QTWEBENGINEPROCESS_PATH" =
-                 (,(search-input-file
-                    inputs "/lib/qt6/libexec/QtWebEngineProcess")))))))))
+                    inputs "/share/qt6/resources")))))))))
     (home-page "https://qutebrowser.org/")
     (synopsis "Minimal, keyboard-focused, vim-like web browser")
     (description "qutebrowser is a keyboard-focused browser with a minimal
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a23a0f3dcd..0cf1c18a56 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -9404,15 +9404,7 @@ (define-public kiwix-desktop
            (lambda* (#:key outputs #:allow-other-keys)
              (invoke "qmake"
                      (string-append "PREFIX="
-                                    (assoc-ref outputs "out")))))
-         (add-after 'install 'wrap-qt-process-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/kiwix-desktop"))
-                    (qt-process-path (search-input-file
-                                      inputs "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+                                    (assoc-ref outputs "out"))))))))
     (inputs
      (list bash-minimal
            curl

base-commit: bdd6760b8c46e59f86415d67981acb6f77e9ed22
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Fri, 31 Jan 2025 10:36:02 GMT) Full text and rfc822 format available.

Message #8 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> envs.net>
To: 75966 <at> debbugs.gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>,
 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: Re: [bug#75966] [PATCH] gnu: qtwebengine: Set default path for
 QtWebEngineProcess.
Date: Fri, 31 Jan 2025 18:39:07 +0800
iyzsong <at> envs.net writes:

> * gnu/packages/qt.scm (qtwebengine-5, qtwebengine)[arguments]:
> Substitute 'QLibraryInfo::LibraryExecutablesPath' in 'substitute-source phase.
> [native-search-paths]: Remove QTWEBENGINEPROCESS_PATH.

Haven't build qtwebengine, so not tested, but I think it should work..




Information forwarded to guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Fri, 31 Jan 2025 13:25:02 GMT) Full text and rfc822 format available.

Message #11 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: iyzsong <at> envs.net
Cc: 宋文武 <iyzsong <at> member.fsf.org>, 75966 <at> debbugs.gnu.org
Subject: Re: [bug#75966] [PATCH] gnu: qtwebengine: Set default path for
 QtWebEngineProcess.
Date: Fri, 31 Jan 2025 22:24:26 +0900
Hi,

iyzsong <at> envs.net writes:

> From: 宋文武 <iyzsong <at> member.fsf.org>
>
> * gnu/packages/qt.scm (qtwebengine-5, qtwebengine)[arguments]:
> Substitute 'QLibraryInfo::LibraryExecutablesPath' in 'substitute-source phase.
> [native-search-paths]: Remove QTWEBENGINEPROCESS_PATH.
> * gnu/packages/ebook.scm (calibre)
> * gnu/packages/education.scm (anki)
> * gnu/packages/kde-internet.scm (falkon)
> * gnu/packages/kde-systemtools.scm (khelpcenter)
> * gnu/packages/kde.scm (akregator)
> * gnu/packages/video.scm (openshot)
> * gnu/packages/vpn.scm (openconnect-sso)
> * gnu/packages/web-browsers.scm (qutebrowser)
> * gnu/packages/web.scm (kiwix-desktop): Remove wrapper for QTWEBENGINEPROCESS_PATH.

Could you mention what is the rationale in the commit message?  Is the
QTWEBENGINEPROCESS_PATH environment variable problematic is some ways
(perhaps mixing Qt5 and Qt6 qtwebengine?).

Shouldn't we keep the native-search-path for it?  Perhaps not all
software are patched yet, and it shouldn't hurt?  Or would it defeat the
aim of this series?

-- 
Thanks,
Maxim




Information forwarded to maxim.cournoyer <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Sat, 01 Feb 2025 03:56:01 GMT) Full text and rfc822 format available.

Message #14 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: iyzsong <at> envs.net
To: 75966 <at> debbugs.gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>
Subject: [PATCH v2 1/2] gnu: qtwebengine: Fix default path for
 QtWebEngineProcess.
Date: Sat,  1 Feb 2025 11:58:31 +0800
From: 宋文武 <iyzsong <at> member.fsf.org>

Since qtwebengine and qtbase are not installed into the same prefix,
the default path for QtWebEngineProcess won't work.  Fix it so that
we no longer need to set QTWEBENGINEPROCESS_PATH anymore.

* gnu/packages/qt.scm (qtwebengine-5, qtwebengine)[arguments]:
Substitute 'QLibraryInfo::LibraryExecutablesPath' in 'substitute-source phase.
[native-search-paths]: Remove QTWEBENGINEPROCESS_PATH.
* gnu/packages/ebook.scm (calibre)
* gnu/packages/education.scm (anki)
* gnu/packages/kde-internet.scm (falkon)
* gnu/packages/kde-systemtools.scm (khelpcenter)
* gnu/packages/kde.scm (akregator)
* gnu/packages/video.scm (openshot)
* gnu/packages/vpn.scm (openconnect-sso)
* gnu/packages/web-browsers.scm (qutebrowser)
* gnu/packages/web.scm (kiwix-desktop): Remove wrapper for QTWEBENGINEPROCESS_PATH.

Change-Id: I43745969ce80daa0f077da37671d1b44a468c953
---
 gnu/packages/ebook.scm           | 21 +--------------------
 gnu/packages/education.scm       | 13 +++----------
 gnu/packages/kde-internet.scm    | 13 -------------
 gnu/packages/kde-systemtools.scm | 10 +---------
 gnu/packages/kde.scm             | 13 +------------
 gnu/packages/qt.scm              | 22 ++++++++--------------
 gnu/packages/video.scm           | 14 +-------------
 gnu/packages/vpn.scm             | 12 +-----------
 gnu/packages/web-browsers.scm    | 10 ++--------
 gnu/packages/web.scm             | 10 +---------
 10 files changed, 19 insertions(+), 119 deletions(-)

diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 0cd2b31724..73fea2f66a 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -320,26 +320,7 @@ (define-public calibre
                      (string-append #$(this-package-input "font-liberation")
                                     "/share/fonts/truetype")))
                 (delete-file-recursively font-dest)
-                (symlink font-src font-dest))))
-          ;; Make run-time dependencies available to the binaries.
-          (add-after 'wrap 'wrap-program
-            (lambda* (#:key inputs #:allow-other-keys)
-              (with-directory-excursion (string-append #$output "/bin")
-                (for-each
-                 (lambda (binary)
-                   (wrap-program binary
-                     ;; Make QtWebEngineProcess available.
-                     `("QTWEBENGINEPROCESS_PATH" =
-                       ,(list
-                         (search-input-file
-                          inputs "/lib/qt5/libexec/QtWebEngineProcess")))))
-                 ;; Wrap all the binaries shipping with the package, except
-                 ;; for the wrappings created during the 'wrap standard
-                 ;; phase.  This extends existing .calibre-real wrappers
-                 ;; rather than create ..calibre-real-real-s.  For more
-                 ;; information see: https://issues.guix.gnu.org/43249.
-                 (find-files "." (lambda (file stat)
-                                   (not (wrapped-program? file)))))))))))
+                (symlink font-src font-dest)))))))
     (home-page "https://calibre-ebook.com/")
     (synopsis "E-book library management software")
     (description "Calibre is an e-book library manager.  It can view, convert
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index f42a216972..f0c0e931bf 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -836,18 +836,11 @@ (define-public anki
                          (filter (match-lambda
                                    ((label . _)
                                     (string-prefix? "python-" label)))
-                                 inputs)))
-                   (qtwebengineprocess
-                    (search-input-file inputs
-                                       "lib/qt5/libexec/QtWebEngineProcess")))
-               ;; The program fails to find the QtWebEngineProcess program, so
-               ;; we set QTWEBENGINEPROCESS_PATH to help it.  PYTHONPATH is
-               ;; wrapped to avoid declaring Python libraries as propagated
-               ;; inputs.
+                                 inputs))))
+               ;; PYTHONPATH is wrapped to avoid declaring Python libraries as
+               ;; propagated inputs.
                (for-each (lambda (program)
                            (wrap-program program
-                             `("QTWEBENGINEPROCESS_PATH" =
-                               (,qtwebengineprocess))
                              `("PATH" prefix (,(string-append
                                                 (assoc-ref inputs "mpv")
                                                 "/bin")))
diff --git a/gnu/packages/kde-internet.scm b/gnu/packages/kde-internet.scm
index 4bf40afe88..d54126ed12 100644
--- a/gnu/packages/kde-internet.scm
+++ b/gnu/packages/kde-internet.scm
@@ -130,19 +130,6 @@ (define-public falkon
         (base32
          "0j930i2nvg71p05z881inbk59c54gx8dzhyjb8iaqkw8i5s5r983"))))
     (build-system qt-build-system)
-    (arguments
-     (list #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'install 'wrap
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let ((qtwebengineprocess
-                          (search-input-file inputs
-                                             "lib/qt6/libexec/QtWebEngineProcess")))
-                     ;; The program fails to find the QtWebEngineProcess program, so
-                     ;; we set QTWEBENGINEPROCESS_PATH to help it.
-                     (wrap-program (string-append #$output "/bin/falkon")
-                       `("QTWEBENGINEPROCESS_PATH" =
-                         (,qtwebengineprocess)))))))))
     (native-inputs
      (list extra-cmake-modules pkg-config qttools))
     (inputs
diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm
index 4923854a7c..a86b550a7f 100644
--- a/gnu/packages/kde-systemtools.scm
+++ b/gnu/packages/kde-systemtools.scm
@@ -178,15 +178,7 @@ (define-public khelpcenter
     PrintSupport")
                      (("Qt6::WebEngineWidgets")
                       "Qt6::PrintSupport
-    Qt6::WebEngineWidgets"))))
-               (add-after 'install 'wrap-executable
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (wrap-program (string-append #$output
-                                                "/bin/khelpcenter")
-                     `("QTWEBENGINEPROCESS_PATH" =
-                       (,(search-input-file
-                          inputs
-                          "lib/qt6/libexec/QtWebEngineProcess")))))))))
+    Qt6::WebEngineWidgets")))))))
     (home-page "https://apps.kde.org/khelpcenter/")
     (synopsis "KDE documentation viewer")
     (description "KHelpCenter uses meta data files which describe the
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 765176f42b..9a4115eda6 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -205,18 +205,7 @@ (define-public akregator
         (base32 "07flc3617px9w1c729p0lsixf1g0h297hkbip259ykkbwxizn71q"))))
     (build-system qt-build-system)
     (arguments
-     (list #:qtbase qtbase
-           #:phases
-           #~(modify-phases %standard-phases
-             (add-after 'install 'wrap-qt-process-path
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (bin (string-append out "/bin/akregator"))
-                        (qt-process-path
-                         (search-input-file
-                          inputs "/lib/qt6/libexec/QtWebEngineProcess")))
-                   (wrap-program bin
-                     `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+     (list #:qtbase qtbase))
     (native-inputs
      (list extra-cmake-modules kdoctools))
     (inputs
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 76c11af543..c29f8e14e7 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3415,7 +3415,10 @@ (define-public qtwebengine-5
                                   "/share/qt5/translations\")"))
                   (("QLibraryInfo::location\\(QLibraryInfo::DataPath\\)")
                    (string-append "QLatin1String(\"" #$output
-                                  "/share/qt5\")")))
+                                  "/share/qt5\")"))
+                  (("QLibraryInfo::location\\(QLibraryInfo::LibraryExecutablesPath)")
+                   (string-append "QLatin1String(\"" #$output
+                                  "/lib/qt5/libexec\")")))
                 ;; Substitute full dynamic library path for nss.
                 (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
                   (("libnssckbi.so")
@@ -3453,12 +3456,6 @@ (define-public qtwebengine-5
        ;; It's possible this can be fixed by setting QTWEBENGINEPROCESS_PATH
        ;; before running tests.
        ((#:tests? _ #f) #f)))
-    (native-search-paths
-     (list (search-path-specification
-            (file-type 'regular)
-            (separator #f)
-            (variable "QTWEBENGINEPROCESS_PATH")
-            (files '("lib/qt5/libexec/QtWebEngineProcess")))))
     (home-page "https://wiki.qt.io/QtWebEngine")
     (synopsis "Qt WebEngine module")
     (description "The Qt5WebEngine module provides support for web applications
@@ -3824,7 +3821,10 @@ (define-public qtwebengine
                                 "/share/qt6/translations\")"))
                 (("QLibraryInfo::path\\(QLibraryInfo::DataPath)")
                  (string-append "QLatin1String(\"" #$output
-                                "/share/qt6\")")))
+                                "/share/qt6\")"))
+                (("QLibraryInfo::path\\(QLibraryInfo::LibraryExecutablesPath)")
+                 (string-append "QLatin1String(\"" #$output
+                                "/lib/qt6/libexec\")")))
               ;; Substitute full dynamic library path for nss.
               (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
                 (("libnssckbi.so")
@@ -3884,12 +3884,6 @@ (define-public qtwebengine
        (replace "qtbase" qtbase)
        (replace "qtdeclarative" qtdeclarative)
        (replace "qtwebchannel" qtwebchannel)))
-    (native-search-paths
-     (list (search-path-specification
-            (file-type 'regular)
-            (separator #f)
-            (variable "QTWEBENGINEPROCESS_PATH")
-            (files '("lib/qt6/libexec/QtWebEngineProcess")))))
     (home-page "https://wiki.qt.io/QtWebEngine")
     (synopsis "Qt WebEngine module")
     (description "The Qt WebEngine module provides support for web
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index d0b5907bdd..4881f6ba64 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -6049,19 +6049,7 @@ (define-public openshot
                     (lambda _
                       ;; src/classes/info.py "needs" to create several
                       ;; directories in $HOME when loaded during build
-                      (setenv "HOME" "/tmp")))
-                  (add-after 'install 'wrap-program
-                    (lambda* (#:key outputs inputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out"))
-                            (qtwebengine-process-path
-                             (search-input-file
-                              inputs "/lib/qt5/libexec/QtWebEngineProcess")))
-                        (wrap-qt-program "openshot-qt"
-                                         #:output out #:inputs inputs)
-                        ;; Help the program discover QtWebEngine at runtime.
-                        (wrap-program (string-append out "/bin/openshot-qt")
-                          `("QTWEBENGINEPROCESS_PATH" =
-                            (,qtwebengine-process-path)))))))))
+                      (setenv "HOME" "/tmp"))))))
     (home-page "https://www.openshot.org/")
     (synopsis "Video editor")
     (description "OpenShot takes your videos, photos, and music files and
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 0b62e8c7cf..b64617c5df 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -800,17 +800,7 @@ (define-public openconnect-sso
                (("\"openconnect\"")
                 (string-append "\""
                                (search-input-file inputs "/sbin/openconnect")
-                               "\"")))))
-         (add-after 'check 'wrap-qt-process-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/openconnect-sso"))
-                    (qt-process-path
-                     (search-input-file inputs
-                                        "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 #:sh (search-input-file inputs "bin/bash")
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+                               "\""))))))))
     (inputs
      (list openconnect
            poetry
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index c0138eea17..5159a3b76d 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -490,10 +490,7 @@ (define-public qutebrowser
            python-pyyaml
            python-pyqt-6
            python-pyqtwebengine-6
-           python-tldextract
-           ;; While qtwebengine is provided by python-pyqtwebengine-6, it's
-           ;; included here so we can wrap QTWEBENGINEPROCESS_PATH.
-           qtwebengine))
+           python-tldextract))
     (arguments
      `(;; FIXME: With the existence of qtwebengine, tests can now run.  But
        ;; they are still disabled because test phase hangs.  It's not readily
@@ -547,10 +544,7 @@ (define-public qutebrowser
              (wrap-program (search-input-file outputs "bin/qutebrowser")
                `("QTWEBENGINE_RESOURCES_PATH" =
                  (,(search-input-directory
-                    inputs "/share/qt6/resources")))
-               `("QTWEBENGINEPROCESS_PATH" =
-                 (,(search-input-file
-                    inputs "/lib/qt6/libexec/QtWebEngineProcess")))))))))
+                    inputs "/share/qt6/resources")))))))))
     (home-page "https://qutebrowser.org/")
     (synopsis "Minimal, keyboard-focused, vim-like web browser")
     (description "qutebrowser is a keyboard-focused browser with a minimal
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a23a0f3dcd..0cf1c18a56 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -9404,15 +9404,7 @@ (define-public kiwix-desktop
            (lambda* (#:key outputs #:allow-other-keys)
              (invoke "qmake"
                      (string-append "PREFIX="
-                                    (assoc-ref outputs "out")))))
-         (add-after 'install 'wrap-qt-process-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/kiwix-desktop"))
-                    (qt-process-path (search-input-file
-                                      inputs "/lib/qt5/libexec/QtWebEngineProcess")))
-               (wrap-program bin
-                 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))))))))
+                                    (assoc-ref outputs "out"))))))))
     (inputs
      (list bash-minimal
            curl

base-commit: d48da2d21610f9cf5f76cd846703b12beedb1fd5
-- 
2.47.1





Information forwarded to maxim.cournoyer <at> gmail.com, iyzsong <at> envs.net, guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Sat, 01 Feb 2025 03:56:02 GMT) Full text and rfc822 format available.

Message #17 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: iyzsong <at> envs.net
To: 75966 <at> debbugs.gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>
Subject: [PATCH v2 2/2] build: qt-utils: Remove wrapping for
 'QTWEBENGINEPROCESS_PATH'.
Date: Sat,  1 Feb 2025 11:58:32 +0800
From: 宋文武 <iyzsong <at> member.fsf.org>

* guix/build/qt-utils.scm (variables-for-wrapping): Remove 'QTWEBENGINEPROCESS_PATH'.

Change-Id: I834da403d750fe1b20e369ecee9ae081a6d57c25
---
 guix/build/qt-utils.scm | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/guix/build/qt-utils.scm b/guix/build/qt-utils.scm
index d7609b9f21..65592757e6 100644
--- a/guix/build/qt-utils.scm
+++ b/guix/build/qt-utils.scm
@@ -93,11 +93,7 @@ (define* (variables-for-wrapping base-directories output-directory
     `(,(if (>= (string->number qt-major-version) 6)
            "QML_IMPORT_PATH"
            "QML2_IMPORT_PATH")
-      prefix directory ,(format #f "/lib/qt~a/qml" qt-major-version))
-    ;; QTWEBENGINEPROCESS_PATH accepts a single value, which makes 'exact the
-    ;; most suitable environment variable type for it.
-    `("QTWEBENGINEPROCESS_PATH" = regular
-      ,(format #f "/lib/qt~a/libexec/QtWebEngineProcess" qt-major-version)))))
+      prefix directory ,(format #f "/lib/qt~a/qml" qt-major-version)))))
 
 (define* (wrap-qt-program* program #:key sh inputs output-dir
                            qt-wrap-excluded-inputs
-- 
2.47.1





Information forwarded to guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Sat, 01 Feb 2025 04:04:01 GMT) Full text and rfc822 format available.

Message #20 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> envs.net>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 宋文武 <iyzsong <at> member.fsf.org>, 75966 <at> debbugs.gnu.org
Subject: Re: [bug#75966] [PATCH] gnu: qtwebengine: Set default path for
 QtWebEngineProcess.
Date: Sat, 01 Feb 2025 12:06:49 +0800
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Could you mention what is the rationale in the commit message?  Is the
> QTWEBENGINEPROCESS_PATH environment variable problematic is some ways
> (perhaps mixing Qt5 and Qt6 qtwebengine?).

It seems fine to mixing QtWebEngineProcess from Qt5 and Qt6, but the
default path is wrong due to we have different install prefixes,
normally there is no need to set QTWEBENGINEPROCESS_PATH ourself.

>
> Shouldn't we keep the native-search-path for it?  Perhaps not all
> software are patched yet, and it shouldn't hurt?  Or would it defeat the
> aim of this series?

The rationale is to drop the wrapping for QTWEBENGINEPROCESS_PATH, as
there is no need to use it if the default path is working from the beginning.

v2 patches send, thanks.




Information forwarded to guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Sat, 01 Feb 2025 14:39:01 GMT) Full text and rfc822 format available.

Message #23 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 宋文武 <iyzsong <at> envs.net>
Cc: 宋文武 <iyzsong <at> member.fsf.org>, 75966 <at> debbugs.gnu.org
Subject: Re: bug#75966: [PATCH] gnu: qtwebengine: Set default path for
 QtWebEngineProcess.
Date: Sat, 01 Feb 2025 23:38:06 +0900
Hi,

宋文武 <iyzsong <at> envs.net> writes:

> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:
>
>> Could you mention what is the rationale in the commit message?  Is the
>> QTWEBENGINEPROCESS_PATH environment variable problematic is some ways
>> (perhaps mixing Qt5 and Qt6 qtwebengine?).
>
> It seems fine to mixing QtWebEngineProcess from Qt5 and Qt6, but the
> default path is wrong due to we have different install prefixes,
> normally there is no need to set QTWEBENGINEPROCESS_PATH ourself.
>
>>
>> Shouldn't we keep the native-search-path for it?  Perhaps not all
>> software are patched yet, and it shouldn't hurt?  Or would it defeat the
>> aim of this series?
>
> The rationale is to drop the wrapping for QTWEBENGINEPROCESS_PATH, as
> there is no need to use it if the default path is working from the beginning.
>
> v2 patches send, thanks.

Makes sense now, thank your for the explanation.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#75966; Package guix-patches. (Sat, 01 Feb 2025 14:45:02 GMT) Full text and rfc822 format available.

Message #26 received at 75966 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: iyzsong <at> envs.net
Cc: 宋文武 <iyzsong <at> member.fsf.org>, 75966 <at> debbugs.gnu.org
Subject: Re: bug#75966: [PATCH] gnu: qtwebengine: Set default path for
 QtWebEngineProcess.
Date: Sat, 01 Feb 2025 23:44:09 +0900
Hello,

iyzsong <at> envs.net writes:

> From: 宋文武 <iyzsong <at> member.fsf.org>
>
> Since qtwebengine and qtbase are not installed into the same prefix,
> the default path for QtWebEngineProcess won't work.  Fix it so that
> we no longer need to set QTWEBENGINEPROCESS_PATH anymore.
>
> * gnu/packages/qt.scm (qtwebengine-5, qtwebengine)[arguments]:
> Substitute 'QLibraryInfo::LibraryExecutablesPath' in 'substitute-source phase.
> [native-search-paths]: Remove QTWEBENGINEPROCESS_PATH.
> * gnu/packages/ebook.scm (calibre)
> * gnu/packages/education.scm (anki)
> * gnu/packages/kde-internet.scm (falkon)
> * gnu/packages/kde-systemtools.scm (khelpcenter)
> * gnu/packages/kde.scm (akregator)
> * gnu/packages/video.scm (openshot)
> * gnu/packages/vpn.scm (openconnect-sso)
> * gnu/packages/web-browsers.scm (qutebrowser)
> * gnu/packages/web.scm (kiwix-desktop): Remove wrapper for QTWEBENGINEPROCESS_PATH.

I think it'd be a bit clearer to introduce the change to qt/qt-utils in
a same commit, and then proceed to remove the wrappers in one commit per
package, since it doesn't break anything to do it this way and it
matches our usual 1 package per commit change convention.

Would you mind to split you series this way?  Or if it's too much work,
at least extract the core qt change as a prerequisite commit, and the
adjustment of the packages as a 2nd commit on top of it.

-- 
Thanks,
Maxim




This bug report was last modified today.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.