;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages qt)
- #:use-module ((guix licenses) #:select (lgpl2.1 x11-style))
+ #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ lgpl3 x11-style))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages databases)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages gnuzilla)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
#:use-module (gnu packages databases)
- #:use-module (gnu packages openssl)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
- #:use-module (gnu packages gl)
- #:use-module (gnu packages xorg))
-
-(define-public libxkbcommon
- (package
- (name "libxkbcommon")
- (version "0.3.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://xkbcommon.org/download/" name "-"
- version ".tar.xz"))
- (sha256
- (base32
- "13mk335r4dhi9qglzbp46ina1wz4qgcp8r7s06iq7j50pf0kb5ww"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("bison" ,bison)))
- (home-page "http://xkbcommon.org/")
- (synopsis "Library to handle keyboard descriptions")
- (description "Xkbcommon is a library to handle keyboard descriptions,
-including loading them from disk, parsing them and handling their
-state. It is mainly meant for client toolkits, window systems, and other
-system applications; currently that includes Wayland, kmscon, GTK+, Qt,
-Clutter, and more. Despite the name, it is not currently used by anything
-X11 (yet).")
- (license (x11-style "file://COPYING"
- "See 'COPYING' in the distribution."))))
+ #:use-module (gnu packages ruby)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages xml))
(define-public qt
(package
(name "qt")
- (version "5.3.2")
+ (version "5.5.1")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.qt-project.org/official_releases/qt/"
- (string-copy version 0 (string-rindex version #\.))
- "/" version
- "/single/qt-everywhere-opensource-src-"
- version ".tar.xz"))
+ (uri
+ (string-append
+ "http://download.qt.io/official_releases/qt/"
+ (version-major+minor version)
+ "/" version
+ "/single/qt-everywhere-opensource-src-"
+ version ".tar.xz"))
(sha256
- (base32
- "1w4v53889kqpwxw45wcqz5bi6zx8xp434jpafk1vlmyb8hrzjnvz"))))
+ (base32
+ "0615cn4n3n78v48lnmapqz2jizm2pzrjwvsjlnsf4awrsiiqw0kg"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove qtwebengine, which relies on a bundled copy of
+ ;; chromium. Not only does it fail compilation in qt 5.5:
+ ;; 3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc:362:10:
+ ;; error: cannot convert ‘bool’ to ‘boolean’ in return
+ ;; it might also pose security problems.
+ ;; Alternatively, we could use the "-skip qtwebengine"
+ ;; configuration option.
+ (delete-file-recursively "qtwebengine")
+ ;; Remove one of the two bundled harfbuzz copies in addition
+ ;; to passing "-system-harfbuzz".
+ (delete-file-recursively "qtbase/src/3rdparty/harfbuzz-ng")
+ ;; Remove the bundled sqlite copy in addition to
+ ;; passing "-system-sqlite".
+ (delete-file-recursively "qtbase/src/3rdparty/sqlite")))))
(build-system gnu-build-system)
(propagated-inputs
`(("mesa" ,mesa)))
(inputs
- ;; FIXME: Add input ruby once available.
`(("alsa-lib" ,alsa-lib)
("dbus" ,dbus)
+ ("cups" ,cups)
+ ("expat" ,expat)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
+ ("harfbuzz" ,harfbuzz)
("icu4c" ,icu4c)
("libjpeg" ,libjpeg)
+ ("libmng" ,libmng)
+ ("libpci" ,pciutils)
("libpng" ,libpng)
("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)
+ ("libxcursor" ,libxcursor)
+ ("libxfixes" ,libxfixes)
("libxi" ,libxi)
+ ("libxinerama" ,libxinerama)
("libxkbcommon" ,libxkbcommon)
+ ("libxml2" ,libxml2)
+ ("libxrandr" ,libxrandr)
("libxrender" ,libxrender)
+ ("libxslt" ,libxslt)
+ ("libxtst" ,libxtst)
+ ("mtdev" ,mtdev)
("mysql" ,mysql)
+ ("nss" ,nss)
("openssl" ,openssl)
+ ("postgresql" ,postgresql)
("pulseaudio" ,pulseaudio)
- ("python-wrapper" ,python-wrapper)
+ ("pcre" ,pcre)
+ ("sqlite" ,sqlite)
+ ("udev" ,eudev)
+ ("unixodbc" ,unixodbc)
("xcb-util" ,xcb-util)
("xcb-util-image" ,xcb-util-image)
("xcb-util-keysyms" ,xcb-util-keysyms)
("xcb-util-wm" ,xcb-util-wm)
("zlib" ,zlib)))
(native-inputs
- `(("perl" ,perl)
- ("pkg-config" ,pkg-config)))
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("gperf" ,gperf)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2)
+ ("ruby" ,ruby)
+ ("which" ,(@ (gnu packages base) which))))
(arguments
- `(#:phases
+ `(;; FIXME: Disabling parallel building is a quick hack to avoid the
+ ;; failure described in
+ ;; https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00837.html
+ ;; A more structural fix is needed.
+ #:parallel-build? #f
+ #:phases
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* '("configure" "qtbase/configure")
- (("/bin/pwd") (which "pwd")))
+ (("/bin/pwd") (which "pwd")))
+ (substitute* "qtbase/src/corelib/global/global.pri"
+ (("/bin/ls") (which "ls")))
;; do not pass "--enable-fast-install", which makes the
;; configure process fail
(zero? (system*
"-prefix" out
"-opensource"
"-confirm-license"
+ ;; Most "-system-..." are automatic, but some use
+ ;; the bundled copy by default.
+ "-system-sqlite"
+ "-system-harfbuzz"
+ ;; explicitly link with openssl instead of dlopening it
+ "-openssl-linked"
;; explicitly link with dbus instead of dlopening it
"-dbus-linked"
;; drop special machine instructions not supported
(define-public qt-4
(package (inherit qt)
- (version "4.8.6")
+ (version "4.8.7")
(source (origin
(method url-fetch)
(uri (string-append "http://download.qt-project.org/official_releases/qt/"
version ".tar.gz"))
(sha256
(base32
- "0b036iqgmbbv37dgwwfihw3mihjbnw3kb5kaisdy0qi8nn8xs54b"))
- (patches (list (search-patch "qt4-tests.patch")))))
- (inputs `(,@(alist-delete "libjpeg" (package-inputs qt))
+ "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272"))
+ (patches (search-patches "qt4-ldflags.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove webkit module, which is not built.
+ '(delete-file-recursively "src/3rdparty/webkit"))))
+ (inputs `(,@(alist-delete "harfbuzz"
+ (alist-delete "libjpeg" (package-inputs qt)))
("libjepg" ,libjpeg-8)
("libsm" ,libsm)))
+
+ ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags,
+ ;; but we can't make them a separate output because "out" and "examples"
+ ;; would refer to each other.
+ (outputs '("out" ;112MiB core + 37MiB examples
+ "doc")) ;280MiB of HTML + code
(arguments
`(#:phases
- (alist-replace
+ (modify-phases %standard-phases
+ (replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
+ (let ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc")))
(substitute* '("configure")
- (("/bin/pwd") (which "pwd")))
- ;; Explicitly link with icui18n, which is dlopened by
- ;; QtCore.so. The LDFLAGS are in fact added to other flags
- ;; determined by the configure phase.
- ;; According to the nix recipe, this may be necessary for
- ;; further libraries (cups, gtk-x11-2.0, libgdk-x11-2.0).
- (setenv "LDFLAGS" "-licui18n")
- ;; do not pass "--enable-fast-install", which makes the
- ;; configure process fail
+ (("/bin/pwd") (which "pwd")))
+
(zero? (system*
"./configure"
"-verbose"
"-prefix" out
+ ;; Note: Don't pass '-docdir' since 'qmake' and
+ ;; libQtCore would record its value, thereby defeating
+ ;; the whole point of having a separate output.
+ "-datadir" (string-append out "/share/qt-" ,version
+ "/data")
+ "-importdir" (string-append out "/lib/qt-4"
+ "/imports")
+ "-plugindir" (string-append out "/lib/qt-4"
+ "/plugins")
+ "-translationdir" (string-append out "/share/qt-" ,version
+ "/translations")
+ "-demosdir" (string-append out "/share/qt-" ,version
+ "/demos")
+ "-examplesdir" (string-append out "/share/qt-" ,version
+ "/examples")
"-opensource"
"-confirm-license"
;; explicitly link with dbus instead of dlopening it
"-dbus-linked"
+ ;; Skip the webkit module; it fails to build on armhf
+ ;; and, apart from that, may pose security risks.
+ "-no-webkit"
;; drop special machine instructions not supported
;; on all instances of the target
,@(if (string-prefix? "x86_64"
"-no-ssse3"
"-no-sse4.1"
"-no-sse4.2"
- "-no-avx"
- "-no-neon"))))
- %standard-phases)))))
+ "-no-avx")))))
+ (add-after
+ 'install 'move-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Because of qt4-documentation-path.patch, documentation ends up
+ ;; being installed in OUT. Move it to the right place.
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc"))
+ (olddoc (string-append out "/doc"))
+ (docdir (string-append doc "/share/doc/qt-" ,version)))
+ (mkdir-p (dirname docdir))
+
+ ;; Note: We can't use 'rename-file' here because OUT and DOC are
+ ;; different "devices" due to bind-mounts.
+ (copy-recursively olddoc docdir)
+ (delete-file-recursively olddoc)
+ #t))))))))
+
+(define-public qtbase
+ (package
+ (name "qtbase")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0r3jrqymnnxrig4f11xvs33c26f0kzfakbp3kcbdpv795gpc276h"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove one of the two bundled harfbuzz copies in addition
+ ;; to passing "-system-harfbuzz".
+ (delete-file-recursively "src/3rdparty/harfbuzz-ng")
+ ;; Remove the bundled sqlite copy in addition to
+ ;; passing "-system-sqlite".
+ (delete-file-recursively "src/3rdparty/sqlite")))))
+ (build-system gnu-build-system)
+ (propagated-inputs
+ `(("mesa" ,mesa)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("cups" ,cups)
+ ("dbus" ,dbus)
+ ("expat" ,expat)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("glib" ,glib)
+ ("harfbuzz" ,harfbuzz)
+ ("icu4c" ,icu4c)
+ ("libjpeg" ,libjpeg)
+ ("libmng" ,libmng)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)
+ ("libxcursor" ,libxcursor)
+ ("libxfixes" ,libxfixes)
+ ("libxi" ,libxi)
+ ("libxinerama" ,libxinerama)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libxml2" ,libxml2)
+ ("libxrandr" ,libxrandr)
+ ("libxrender" ,libxrender)
+ ("libxslt" ,libxslt)
+ ("libxtst" ,libxtst)
+ ("mtdev" ,mtdev)
+ ("mysql" ,mysql)
+ ("nss" ,nss)
+ ("openssl" ,openssl)
+ ("pcre" ,pcre)
+ ("postgresql" ,postgresql)
+ ("pulseaudio" ,pulseaudio)
+ ("sqlite" ,sqlite)
+ ("unixodbc" ,unixodbc)
+ ("xcb-util" ,xcb-util)
+ ("xcb-util-image" ,xcb-util-image)
+ ("xcb-util-keysyms" ,xcb-util-keysyms)
+ ("xcb-util-renderutil" ,xcb-util-renderutil)
+ ("xcb-util-wm" ,xcb-util-wm)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("gperf" ,gperf)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2)
+ ("ruby" ,ruby)
+ ("which" ,(@ (gnu packages base) which))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'patch-bin-sh
+ (lambda _
+ (substitute* '("config.status"
+ "configure"
+ "mkspecs/features/qt_functions.prf"
+ "qmake/library/qmakebuiltins.cpp")
+ (("/bin/sh") (which "sh")))
+ #t))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "configure"
+ (("/bin/pwd") (which "pwd")))
+ (substitute* "src/corelib/global/global.pri"
+ (("/bin/ls") (which "ls")))
+ ;; do not pass "--enable-fast-install", which makes the
+ ;; configure process fail
+ (zero? (system*
+ "./configure"
+ "-verbose"
+ "-prefix" out
+ "-opensource"
+ "-confirm-license"
+ ;; Do not build examples; if desired, these could go
+ ;; into a separate output, but for the time being, we
+ ;; prefer to save the space and build time.
+ "-nomake" "examples"
+ ;; Most "-system-..." are automatic, but some use
+ ;; the bundled copy by default.
+ "-system-sqlite"
+ "-system-harfbuzz"
+ ;; explicitly link with openssl instead of dlopening it
+ "-openssl-linked"
+ ;; explicitly link with dbus instead of dlopening it
+ "-dbus-linked"
+ ;; drop special machine instructions not supported
+ ;; on all instances of the target
+ ,@(if (string-prefix? "x86_64"
+ (or (%current-target-system)
+ (%current-system)))
+ '()
+ '("-no-sse2"))
+ "-no-sse3"
+ "-no-ssse3"
+ "-no-sse4.1"
+ "-no-sse4.2"
+ "-no-avx"
+ "-no-avx2"
+ "-no-mips_dsp"
+ "-no-mips_dspr2"))))))))
+ (home-page "https://www.qt.io/")
+ (synopsis "Cross-platform GUI library")
+ (description "Qt is a cross-platform application and UI framework for
+developers using C++ or QML, a CSS & JavaScript like language.")
+ (license (list lgpl2.1 lgpl3))))
+
+(define-public qtsvg
+ (package (inherit qtbase)
+ (name "qtsvg")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "08ca5g46g75acy27jfnvnalmcias5hxmjp7491v3y4k9y7a4ybpi"))))
+ (propagated-inputs `())
+ (native-inputs `(("perl" ,perl)))
+ (inputs
+ `(("mesa" ,mesa)
+ ("qtbase" ,qtbase)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (zero? (system* "qmake" (string-append "PREFIX=" out))))))
+ (add-before 'install 'fix-Makefiles
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (qtbase (assoc-ref inputs "qtbase")))
+ (substitute* (find-files "." "Makefile")
+ (((string-append "INSTALL_ROOT)" qtbase))
+ (string-append "INSTALL_ROOT)" out)))))))))))
+
+(define-public qtimageformats
+ (package (inherit qtsvg)
+ (name "qtimageformats")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "020v1148433zx4g87z2r8fgff32n0laajxqqsja1l3yzz7jbrwvl"))))
+ (native-inputs `())
+ (inputs
+ `(("libmng" ,libmng)
+ ("libtiff" ,libtiff)
+ ("libwebp" ,libwebp)
+ ("mesa" ,mesa)
+ ("qtbase" ,qtbase)
+ ("zlib" ,zlib)))))
+
+(define-public qtx11extras
+ (package (inherit qtsvg)
+ (name "qtx11extras")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0l736qiz8adrnh267xz63hv4sph6nhy90h836qfnnmv3p78ipsz8"))))
+ (native-inputs `(("perl" ,perl)))
+ (inputs
+ `(("mesa" ,mesa)
+ ("qtbase" ,qtbase)))))
+
+(define-public qtxmlpatterns
+ (package (inherit qtsvg)
+ (name "qtxmlpatterns")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0q412jv3xbg7v05b8pbahifwx17gzlp96s90akh6zwhpm8i6xx34"))))
+ (native-inputs `(("perl" ,perl)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qtdeclarative
+ (package (inherit qtsvg)
+ (name "qtdeclarative")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1d2217kxk85kpi7ls08b41hqzy26hvch8m4cgzq6km5sqi5zvz0j"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2)
+ ("qtsvg" ,qtsvg)
+ ("qtxmlpatterns" ,qtxmlpatterns)))
+ (inputs
+ `(("mesa" ,mesa)
+ ("qtbase" ,qtbase)))))
+
+(define-public qtconnectivity
+ (package (inherit qtsvg)
+ (name "qtconnectivity")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "06fr9321f52kf0nda9zjjfzp5694hbnx0y0v315iw28mnpvandas"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs
+ `(("bluez" ,bluez)
+ ("qtbase" ,qtbase)))))
+
+(define-public qtwebsockets
+ (package (inherit qtsvg)
+ (name "qtwebsockets")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0fkj52i4yi6gmq4jfjgdij08cspxspac6mbpf0fknnllimmkl7jm"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qtsensors
+ (package (inherit qtsvg)
+ (name "qtsensors")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0bll7ll6s5g8w89knyrc0famjwqyfzwpn512m1f96bf6xwacs967"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qtmultimedia
+ (package (inherit qtsvg)
+ (name "qtmultimedia")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "058523c2qra3d8fq46ygcndnkrbwlh316zy28s2cr5pjr5gmnjyj"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("mesa" ,mesa)
+ ("pulseaudio" ,pulseaudio)
+ ("qtbase" ,qtbase)))))
+
+(define-public qtwayland
+ (package (inherit qtsvg)
+ (name "qtwayland")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1jgghjfrg0wwyfzfwgwhagwxz9k936ylv3w2l9bwlpql8rgm8d11"))))
+ (native-inputs
+ `(("glib" ,glib)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs
+ `(("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)
+ ("libxext" ,libxext)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libxrender" ,libxrender)
+ ("mesa" ,mesa)
+ ("mtdev" ,mtdev)
+ ("qtbase" ,qtbase)
+ ("wayland" ,wayland)))))
+
+(define-public qtserialport
+ (package (inherit qtsvg)
+ (name "qtserialport")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1hp63cgqhps6y1k041lzhcb2b0rcpcmszabnn293q5ilbvla4x0b"))))
+ (native-inputs `(("perl" ,perl)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qtwebchannel
+ (package (inherit qtsvg)
+ (name "qtwebchannel")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "01q80917a1048hdhaii4v50dqs84h16lc9w3v99r9xvspk8vab7q"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtwebsockets" ,qtwebsockets)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qtlocation
+ (package (inherit qtsvg)
+ (name "qtlocation")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0qahs7a2n3l4h0bl8bnwci9mzy1vra3zncnzr40csic9ys67ddfk"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("qtdeclarative" ,qtdeclarative)
+ ;("qtquickcontrols" ,qtquickcontrols)
+ ("qtserialport" ,qtserialport)))
+ (inputs `(("qtbase" ,qtbase)))))
+
+(define-public qttools
+ (package (inherit qtsvg)
+ (name "qttools")
+ (version "5.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0wbzq60d7lkvlb7b5lqcw87qgy6kyjz1npjavz8f4grdxsaqi8vp"))))
+ (native-inputs
+ `(("perl" ,perl)
+ ("qtdeclarative" ,qtdeclarative)))
+ (inputs
+ `(("mesa" ,mesa)
+ ("qtbase" ,qtbase)))))
+
+(define-public qjson
+ (package
+ (name "qjson")
+ (version "0.8.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/flavio/qjson/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "163fspi0xc705irv79qw861fmh68pjyla9vx3kqiq6xrdhb9834j"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("qt" ,qt-4)))
+ (arguments
+ `(#:tests? #f)) ; no test target
+ (home-page "http://qjson.sourceforge.net/")
+ (synopsis "Qt-based library for handling JSON")
+ (description "QJson is a Qt-based library that maps JSON data to QVariant
+objects and vice versa. JSON arrays are mapped to QVariantList instances,
+while JSON objects are mapped to QVariantMap.")
+ (license lgpl2.1+)))
+
+(define-public python-sip
+ (package
+ (name "python-sip")
+ (version "4.18")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://sourceforge/pyqt/sip/"
+ "sip-" version "/sip-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1dlw4kyiwd9bzmd1djm79c121r219abaz86lvizdk6ksq20mrp7i"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("python" ,python-wrapper)))
+ (arguments
+ `(#:tests? #f ; no check target
+ #:modules ((srfi srfi-1)
+ ,@%gnu-build-system-modules)
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (include (string-append out "/include"))
+ (python (assoc-ref inputs "python"))
+ (python-version
+ (last (string-split python #\-)))
+ (python-major+minor
+ (string-join
+ (take (string-split python-version #\.) 2)
+ "."))
+ (lib (string-append out "/lib/python"
+ python-major+minor
+ "/site-packages")))
+ (zero?
+ (system* "python" "configure.py"
+ "--bindir" bin
+ "--destdir" lib
+ "--incdir" include))))))))
+ (home-page "https://www.riverbankcomputing.com/software/sip/intro")
+ (synopsis "Python binding creator for C and C++ libraries")
+ (description
+ "SIP is a tool to create Python bindings for C and C++ libraries. It
+was originally developed to create PyQt, the Python bindings for the Qt
+toolkit, but can be used to create bindings for any C or C++ library.
+
+SIP comprises a code generator and a Python module. The code generator
+processes a set of specification files and generates C or C++ code, which
+is then compiled to create the bindings extension module. The SIP Python
+module provides support functions to the automatically generated code.")
+ ;; There is a choice between a python like license, gpl2 and gpl3.
+ ;; For compatibility with pyqt, we need gpl3.
+ (license gpl3)))
+
+(define-public python2-sip
+ (package (inherit python-sip)
+ (name "python2-sip")
+ (native-inputs
+ `(("python" ,python-2)))))
+
+(define-public python-pyqt
+ (package
+ (name "python-pyqt")
+ (version "5.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://sourceforge/pyqt/PyQt5/"
+ "PyQt-" version "/PyQt5_gpl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1qgh42zsr9jppl9k7fcdbhxcd1wrb7wyaj9lng9nxfa19in1lj1f"))
+ (patches (search-patches "pyqt-configure.patch"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("python-sip" ,python-sip)
+ ("qtbase" ,qtbase))) ; for qmake
+ (inputs
+ `(("python" ,python-wrapper)))
+ (arguments
+ `(#:modules ((srfi srfi-1)
+ ,@%gnu-build-system-modules)
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (sip (string-append out "/share/sip"))
+ (plugins (string-append out "/plugins"))
+ (designer (string-append plugins "/designer"))
+ (qml (string-append plugins "/PyQt5"))
+ (python (assoc-ref inputs "python"))
+ (python-version
+ (last (string-split python #\-)))
+ (python-major+minor
+ (string-join
+ (take (string-split python-version #\.) 2)
+ "."))
+ (lib (string-append out "/lib/python"
+ python-major+minor
+ "/site-packages")))
+ (zero? (system* "python" "configure.py"
+ "--confirm-license"
+ "--bindir" bin
+ "--destdir" lib
+ "--designer-plugindir" designer
+ "--qml-plugindir" qml
+ "--sipdir" sip))))))))
+ (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
+ (synopsis "Python bindings for Qt")
+ (description
+ "PyQt is a set of Python v2 and v3 bindings for the Qt application
+framework. The bindings are implemented as a set of Python modules and
+contain over 620 classes.")
+ (license gpl3)))
+
+(define-public python2-pyqt
+ (package (inherit python-pyqt)
+ (name "python2-pyqt")
+ (native-inputs
+ `(("python-sip" ,python2-sip)
+ ("qtbase" ,qtbase)))
+ (inputs
+ `(("python" ,python-2)))))
+
+(define-public python-pyqt-4
+ (package (inherit python-pyqt)
+ (name "python-pyqt")
+ (version "4.11.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://sourceforge/pyqt/PyQt4/"
+ "PyQt-" version "/PyQt-x11-gpl-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "01zlviy5lq8g6db84wnvvpsrfnip9lbcpxagsyqa6as3jmsff7zw"))))
+ (native-inputs
+ `(("python-sip" ,python-sip)
+ ("qt" ,qt-4)))
+ (arguments
+ `(#:tests? #f ; no check target
+ #:modules ((srfi srfi-1)
+ ,@%gnu-build-system-modules)
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (sip (string-append out "/share/sip"))
+ (python (assoc-ref inputs "python"))
+ (python-version
+ (last (string-split python #\-)))
+ (python-major+minor
+ (string-join
+ (take (string-split python-version #\.) 2)
+ "."))
+ (lib (string-append out "/lib/python"
+ python-major+minor
+ "/site-packages")))
+ (zero? (system* "python" "configure.py"
+ "--confirm-license"
+ "--bindir" bin
+ "--destdir" lib
+ "--sipdir" sip))))
+ %standard-phases)))
+ (license (list gpl2 gpl3)))) ; choice of either license
+
+(define-public qtkeychain
+ (package
+ (name "qtkeychain")
+ (version "0.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/frankosterfeld/qtkeychain/"
+ "archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0fka5q5cdzlf79igcjgbnb2smvwbwfasqawkzkbr34whispgm6lz"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("qt" ,qt)))
+ (arguments
+ `(#:tests? #f ; No tests included
+ #:phases
+ (modify-phases %standard-phases
+ (add-before
+ 'configure 'set-qt-trans-dir
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{qt_translations_dir\\}")
+ "${CMAKE_INSTALL_PREFIX}/share/qt/translations")))))))
+ (home-page "https://github.com/frankosterfeld/qtkeychain")
+ (synopsis "Qt API to store passwords")
+ (description
+ "QtKeychain is a Qt library to store passwords and other secret data
+securely. It will not store any data unencrypted unless explicitly requested.")
+ (license bsd-3)))