;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021, 2022 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;;
;;; This file is part of GNU Guix.
;;;
(list cmake-shared extra-cmake-modules pkg-config))
(inputs
`(("qtbase" ,qtbase-5)
- ("qtwayland" ,qtwayland)
+ ("qtwayland" ,qtwayland-5)
("wayland" ,wayland)
("xkbcommon" ,libxkbcommon)))
(synopsis "Material Decoration for Qt")
;; is provided by qtdeclarative-5.
(substitute*
"lib/cmake/Qt5QuickCompiler/Qt5QuickCompilerConfig.cmake"
- (("\\$\\{_qt5Core_install_prefix\\}") out)))))))))
+ (("\\$\\{_qt5Core_install_prefix\\}") out)))))
+ ;; TODO: Add phase unconditionally.
+ ,@(if (target-riscv64?)
+ '((add-after 'unpack 'fix-linking-riscv64
+ (lambda _
+ (substitute* "src/qml/qml.pro"
+ (("DEFINES \\+= QT_NO_FOREACH")
+ (string-append
+ "isEqual(QT_ARCH, \"riscv64\"): QMAKE_LIBS += -latomic\n\n"
+ "DEFINES += QT_NO_FOREACH"))))))
+ '())))))
(native-inputs
(list perl
pkg-config
(description "The @code{qtshadertools} module provides APIs and tools
supporting shader pipeline functionality as offered in Qt Quick to operate on
Vulkan, OpenGL and other main graphic APIs.")
- (license (package-home-page qtbase))))
+ (license (package-license qtbase))))
(define-public qtmultimedia
(package
set of plugins for interacting with pulseaudio and GStreamer.")
(license (package-license qtbase))))
-(define-public qtwayland
+(define-public qtwayland-5
(package (inherit qtsvg-5)
(name "qtwayland")
(version "5.15.5")
(description "The Qt Wayland module provides the QtWayland client and
compositor libraries.")))
+(define-public qtwayland
+ (package
+ (name "qtwayland")
+ (version "6.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (qt-urls name version))
+ (sha256
+ (base32 "1w60p1did7awdlzq5k8vnq2ncpskb07cpvz31cbv99bjs6igw53g"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-DQT_BUILD_TESTS=ON")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'disable-failing-tests
+ (lambda _
+ ;; FIXME: tst_seatv4::animatedCursor() fails here.
+ ;; See also: <https://bugreports.qt.io/browse/QTBUG-78317>
+ (substitute* "tests/auto/client/seatv4/tst_seatv4.cpp"
+ (((string-append
+ "QVERIFY\\(!cursorSurface\\(\\)->"
+ "m_waitingFrameCallbacks\\.empty\\(\\)\\);")) "")
+ (("QTRY_COMPARE\\(bufferSpy\\.count\\(\\), 1\\);") ""))))
+ (add-before 'check 'set-test-environment
+ (lambda _
+ ;; Do not fail just because /etc/machine-id is missing.
+ (setenv "DBUS_FATAL_WARNINGS" "0")
+ ;; Make Qt render "offscreen", required for tests.
+ (setenv "QT_QPA_PLATFORM" "offscreen"))))))
+ (native-inputs (list glib perl pkg-config qtdeclarative))
+ (inputs
+ (list fontconfig
+ freetype
+ libx11
+ libxcomposite
+ libxext
+ libxkbcommon
+ libxrender
+ mesa
+ mtdev
+ qtbase
+ vulkan-headers
+ wayland))
+ (synopsis "Qt Wayland module")
+ (description "The Qt Wayland module provides the QtWayland client and
+compositor libraries.")
+ (home-page (package-home-page qtbase))
+ (license (package-license qtbase))))
+
(define-public qtserialport
(package (inherit qtsvg-5)
(name "qtserialport")
(PyQt5, PyQt4 and PySide) and additional custom QWidgets.")
(license license:expat)))
+(define-public python-qt.py
+ (package
+ (name "python-qt.py")
+ (version "1.3.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "Qt.py" version))
+ (sha256
+ (base32 "07rvfwzjl378j75j2va0c6xylwx16icxa6dycsjgjc329pgpng40"))))
+ (build-system python-build-system)
+ (native-inputs (list python-pyqt))
+ (home-page "https://github.com/mottosso/Qt.py")
+ (synopsis "Abstraction layer for Python Qt bindings")
+ (description
+ "This package provides an abstraction layer on top of the various Qt
+bindings (PySide, PySide2, PyQt4 and PyQt5).")
+ (license license:expat)))
+
(define-public qscintilla
(package
(name "qscintilla")
"QCustomPlot is a Qt C++ widget providing 2D plots, graphs and charts.")
(license license:gpl3+)))
+;; TODO: Split shiboken2 binding generator into a dedicated output.
+;; This executable requires libxml2, libxslt, clang-toolchain at runtime.
+;; The libshiboken library only requires Qt and Python at runtime.
(define-public python-shiboken-2
(package
(name "python-shiboken-2")
qtbase-5
qtxmlpatterns))
(arguments
- `(#:tests? #f
- ;; FIXME: Building tests fails
- #:configure-flags '("-DBUILD_TESTS=off")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'use-shiboken-dir-only
- (lambda _ (chdir "sources/shiboken2") #t))
- (add-before 'configure 'make-files-writable-and-update-timestamps
- (lambda _
- ;; The build scripts need to modify some files in
- ;; the read-only source directory, and also attempts
- ;; to create Zip files which fails because the Zip
- ;; format does not support timestamps before 1980.
- (let ((circa-1980 (* 10 366 24 60 60)))
- (for-each (lambda (file)
- (make-file-writable file)
- (utime file circa-1980 circa-1980))
- (find-files ".")))
- #t))
- (add-before 'configure 'set-build-env
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((llvm (assoc-ref inputs "clang-toolchain")))
- (setenv "CLANG_INSTALL_DIR" llvm)
- #t))))))
+ (list
+ #:tests? #f
+ ;; FIXME: Building tests fails
+ #:configure-flags #~(list "-DBUILD_TESTS=off")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'use-shiboken-dir-only
+ (lambda _ (chdir "sources/shiboken2") #t))
+ (add-before 'configure 'make-files-writable-and-update-timestamps
+ (lambda _
+ ;; The build scripts need to modify some files in
+ ;; the read-only source directory, and also attempts
+ ;; to create Zip files which fails because the Zip
+ ;; format does not support timestamps before 1980.
+ (let ((circa-1980 (* 10 366 24 60 60)))
+ (for-each (lambda (file)
+ (make-file-writable file)
+ (utime file circa-1980 circa-1980))
+ (find-files ".")))
+ #t))
+ (add-before 'configure 'set-build-env
+ (lambda _
+ (let ((llvm #$(this-package-input "clang-toolchain")))
+ (setenv "CLANG_INSTALL_DIR" llvm)
+ #t))))))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
"Shiboken generates bindings for C++ libraries using CPython source code")
license:lgpl3
license:bsd-3))))
+(define-public python-shiboken-6
+ (package
+ (inherit python-shiboken-2)
+ (name "python-shiboken-6")
+ (version "6.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases"
+ "/QtForPython/pyside6/PySide6-" version
+ "-src/pyside-setup-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0xwri69nnbhn6fajm7l045r0s0qv8nlq6qj8wcj87srli3b5xa75"))))
+ (build-system cmake-build-system)
+ (inputs
+ (modify-inputs (package-inputs python-shiboken-2)
+ (replace "qtbase" qtbase)
+ (delete "qtxmlpatterns")))
+ (arguments
+ (substitute-keyword-arguments (package-arguments python-shiboken-2)
+ ((#:phases p)
+ #~(modify-phases #$p
+ (replace 'use-shiboken-dir-only
+ (lambda _ (chdir "sources/shiboken6") #t))))
+ ((#:configure-flags flags)
+ #~(cons*
+ ;; The RUNPATH of shibokenmodule contains the entry in build
+ ;; directory instead of install directory.
+ "-DCMAKE_SKIP_RPATH=TRUE"
+ (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath="
+ #$output "/lib")
+ #$flags))))))
+
(define-public python-pyside-2
(package
(name "python-pyside-2")
(source (package-source python-shiboken-2))
(build-system cmake-build-system)
(inputs
- (list libxml2
- libxslt
- clang-toolchain
- qtbase-5
+ (list qtbase-5
qtdatavis3d
qtdeclarative-5
qtlocation
qtsensors
qtspeech
qtsvg-5
+ qttools-5
qtwebchannel-5
qtwebengine-5
qtwebsockets-5
(propagated-inputs
(list python-shiboken-2))
(native-inputs
- `(("cmake" ,cmake-minimal)
- ("python" ,python-wrapper)
- ("qttools-5" ,qttools-5)
- ("which" ,which)))
+ (list python-wrapper))
(arguments
- `(#:tests? #f
- ;; FIXME: Building tests fail.
- #:configure-flags
- (list "-DBUILD_TESTS=FALSE"
- (string-append "-DPYTHON_EXECUTABLE="
- (assoc-ref %build-inputs "python")
- "/bin/python"))
- #:modules ((guix build cmake-build-system)
+ (list
+ #:tests? #f
+ ;; FIXME: Building tests fail.
+ #:configure-flags
+ #~(list "-DBUILD_TESTS=FALSE"
+ (string-append "-DPYTHON_EXECUTABLE="
+ (search-input-file %build-inputs
+ "/bin/python")))
+ #:modules '((guix build cmake-build-system)
(guix build utils)
(srfi srfi-1))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'go-to-source-dir
- (lambda _ (chdir "sources/pyside2") #t))
- (add-after 'go-to-source-dir 'fix-qt-module-detection
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Activate qt module support even if it not in the same
- ;; directory as qtbase.
- (substitute* "../cmake_helpers/helpers.cmake"
- (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
- "true"))
- ;; Add include directories for qt modules.
- (let ((dirs (map (lambda (name)
- (string-append (assoc-ref inputs name)
- "/include/qt5"))
- '("qtdatavis3d"
- "qtdeclarative"
- "qtlocation"
- "qtmultimedia"
- "qtquickcontrols"
- "qtquickcontrols2"
- "qtscript"
- "qtscxml"
- "qtsensors"
- "qtspeech"
- "qtsvg"
- "qttools-5"
- "qtwebchannel"
- "qtwebengine"
- "qtwebsockets"
- "qtx11extras"
- "qtxmlpatterns"))))
- (substitute* "cmake/Macros/PySideModules.cmake"
- (("\\$\\{PATH_SEP\\}\\$\\{core_includes\\}" all)
- (fold (lambda (dir paths)
- (string-append paths "${PATH_SEP}" dir))
- all
- dirs)))
- (setenv "CXXFLAGS" (fold (lambda (dir paths)
- (string-append paths " -I" dir))
- ""
- dirs)))))
- (add-before 'configure 'set-clang-dir
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((clang (assoc-ref inputs "clang-toolchain")))
- (setenv "CLANG_INSTALL_DIR" clang)
- #t))))))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'go-to-source-dir
+ (lambda _ (chdir "sources/pyside2") #t))
+ (add-after 'go-to-source-dir 'fix-qt-module-detection
+ (lambda _
+ ;; Activate qt module support even if it not in the same
+ ;; directory as qtbase.
+ (substitute* "../cmake_helpers/helpers.cmake"
+ (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
+ "true"))
+ ;; Add include directories for qt modules.
+ (let ((dirs (map (lambda (path)
+ (string-append path "/include/qt5"))
+ (list
+ #$@(map (lambda (name)
+ (this-package-input name))
+ '("qtdatavis3d"
+ "qtdeclarative"
+ "qtlocation"
+ "qtmultimedia"
+ "qtquickcontrols"
+ "qtquickcontrols2"
+ "qtscript"
+ "qtscxml"
+ "qtsensors"
+ "qtspeech"
+ "qtsvg"
+ "qttools"
+ "qtwebchannel"
+ "qtwebengine"
+ "qtwebsockets"
+ "qtx11extras"
+ "qtxmlpatterns"))))))
+ (substitute* "cmake/Macros/PySideModules.cmake"
+ (("\\$\\{PATH_SEP\\}\\$\\{core_includes\\}" all)
+ (fold (lambda (dir paths)
+ (string-append paths "${PATH_SEP}" dir))
+ all
+ dirs)))
+ (setenv "CXXFLAGS" (fold (lambda (dir paths)
+ (string-append paths " -I" dir))
+ ""
+ dirs))))))))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
"The Qt for Python product enables the use of Qt5 APIs in Python applications")
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")
(inputs
(list python-pyside-2 python-shiboken-2 qtbase-5))
(native-inputs
- `(("python" ,python-wrapper)))
+ (list python-wrapper))
(arguments
- `(#:tests? #f
- #:configure-flags
- (list "-DBUILD_TESTS=off"
- (string-append "-DPYTHON_EXECUTABLE="
- (assoc-ref %build-inputs "python")
- "/bin/python"))
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'go-to-source-dir
- (lambda _ (chdir "sources/pyside2-tools") #t)))))
+ (list
+ #:tests? #f
+ #:configure-flags
+ #~(list "-DBUILD_TESTS=off"
+ (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/pyside2-tools") #t)))))
(home-page "https://wiki.qt.io/Qt_for_Python")
(synopsis
- "Contains command line tools for PySide2")
+ "Command line tools for PySide2")
(description
- "Contains lupdate, rcc and uic tools for PySide2")
+ "Python-pyside-2-tools contains lupdate, rcc and uic tools for PySide2")
(license license:gpl2)))
(define-public libqglviewer
also compatible with SGI and TGS Open Inventor, and the API is based on the API
of the InventorXt GUI component toolkit.")
(license license:bsd-3))))
+
+(define-public libdbusmenu-qt
+ (package
+ (name "libdbusmenu-qt")
+ (version "0.9.3+16.04.20160218-0ubuntu1")
+ (source
+ (origin
+ (method git-fetch)
+ ;; Download from github rather than launchpad because launchpad trunk
+ ;; tarball hash is not deterministic.
+ (uri (git-reference
+ (url "https://github.com/unity8-team/libdbusmenu-qt")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0b7ii1cvmpcyl79gqal9c3va9m55h055s4hx7fpxkhhqs9463ggg"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; XXX: Tests require a dbus session and some icons.
+ '(#:tests? #f))
+ (native-inputs
+ (list doxygen))
+ (inputs
+ (list qtbase-5))
+ (home-page "https://launchpad.net/libdbusmenu-qt")
+ (synopsis "Qt implementation of the DBusMenu spec")
+ (description "This library provides a Qt implementation of the DBusMenu
+protocol. The DBusMenu protocol makes it possible for applications to export
+and import their menus over DBus.")
+ (license license:lgpl2.1+)))
+
+(define-public kdsoap
+ (package
+ (name "kdsoap")
+ (version "2.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/KDAB/KDSoap/releases/download/"
+ "kdsoap-" version "/kdsoap-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1vh4rzb09kks1ilay1y60q7gf64gwzdwsca60hmx1xx69w8672fi"))))
+ (build-system qt-build-system)
+ (inputs `(("qtbase" ,qtbase-5)))
+ (arguments
+ '(#:configure-flags '("-DKDSoap_TESTS=true")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "ctest" "-E" ;; These tests try connect to the internet.
+ "(kdsoap-webcalls|kdsoap-webcalls_wsdl|kdsoap-test_calc)"))
+ #t)))))
+ (home-page "https://www.kdab.com/development-resources/qt-tools/kd-soap/")
+ (synopsis "Qt SOAP component")
+ (description "KD SOAP is a tool for creating client applications for web
+services using the XML based SOAP protocol and without the need for a dedicated
+web server.")
+ (license (list license:gpl2 license:gpl3))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;