summary refs log tree commit diff
path: root/gnu/packages/qt.scm
diff options
context:
space:
mode:
authorZhu Zihao <all_but_last@163.com>2022-08-25 12:42:54 +0800
committerMarius Bakke <marius@gnu.org>2022-09-07 22:02:42 +0200
commit7c9ac0468b671eb0162d9d45ad984414f8cd2c2e (patch)
tree2df4ef6f5480e93620b4be1cfcc4ffbb32b3c864 /gnu/packages/qt.scm
parent5c08546558f97e9ce665a83724b0e9d1751abac0 (diff)
downloadguix-7c9ac0468b671eb0162d9d45ad984414f8cd2c2e.tar.gz
gnu: Add python-pyside-6.
* gnu/packages/qt.scm (python-pyside-6): New variable.

Signed-off-by: Marius Bakke <marius@gnu.org>
Diffstat (limited to 'gnu/packages/qt.scm')
-rw-r--r--gnu/packages/qt.scm72
1 files changed, 72 insertions, 0 deletions
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 2ebfe42abe..e0b88cc4d8 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3950,6 +3950,78 @@ generate Python bindings for your C or C++ code.")
               license:gpl3
               license:gpl2))))
 
+(define-public python-pyside-6
+  (package
+    (inherit python-pyside-2)
+    (name "python-pyside-6")
+    (version (package-version python-shiboken-6))
+    (source (package-source python-shiboken-6))
+    ;; TODO: Add more Qt components if available.
+    (inputs
+     (list qtbase
+           qtdeclarative
+           qtmultimedia
+           qtnetworkauth
+           qtpositioning
+           qtsvg
+           qttools
+           qtwebchannel
+           qtwebengine
+           qtwebsockets))
+    (propagated-inputs
+     (list python-shiboken-6))
+    (native-inputs
+     (list python-wrapper))
+    (arguments
+     (list
+      #:tests? #f
+      #:configure-flags
+      #~(list "-DBUILD_TESTS=FALSE"
+              (string-append "-DPYTHON_EXECUTABLE="
+                             (search-input-file %build-inputs
+                                                "/bin/python")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'go-to-source-dir
+            (lambda _ (chdir "sources/pyside6") #t))
+          (add-after 'go-to-source-dir 'fix-qt-module-detection
+            (lambda _
+              (substitute* "cmake/PySideHelpers.cmake"
+                (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
+                 "true"))
+              (let ((dirs (map (lambda (path)
+                                 (string-append path "/include/qt6"))
+                               (list
+                                #$@(map (lambda (name)
+                                          (this-package-input name))
+                                        '("qtdeclarative"
+                                          "qtmultimedia"
+                                          "qtnetworkauth"
+                                          "qtpositioning"
+                                          "qtsvg"
+                                          "qttools"
+                                          "qtwebchannel"
+                                          "qtwebengine"
+                                          "qtwebsockets"))))))
+                (substitute* "cmake/Macros/PySideModules.cmake"
+                  (("set\\(shiboken_include_dir_list " all)
+                   (string-append all (string-join dirs ";") " ")))
+                (setenv "CXXFLAGS"
+                        (string-join
+                         (map (lambda (dir)
+                                (string-append "-I" dir))
+                              dirs)
+                         " "))))))))
+    (synopsis
+     "The Qt for Python product enables the use of Qt6 APIs in Python applications")
+    (description
+     "The Qt for Python product enables the use of Qt6 APIs in Python
+applications.  It lets Python developers utilize the full potential of Qt,
+using the PySide6 module.  The PySide6 module provides access to the
+individual Qt modules such as QtCore, QtGui,and so on.  Qt for Python also
+comes with the Shiboken6 CPython binding code generator, which can be used to
+generate Python bindings for your C or C++ code.")))
+
 (define-public python-pyside-2-tools
   (package
     (name "python-pyside-2-tools")