Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / qt.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
4 ;;; Copyright © 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
5 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
6 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
7 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
8 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
9 ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
10 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
12 ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
13 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
14 ;;;
15 ;;; This file is part of GNU Guix.
16 ;;;
17 ;;; GNU Guix is free software; you can redistribute it and/or modify it
18 ;;; under the terms of the GNU General Public License as published by
19 ;;; the Free Software Foundation; either version 3 of the License, or (at
20 ;;; your option) any later version.
21 ;;;
22 ;;; GNU Guix is distributed in the hope that it will be useful, but
23 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;;; GNU General Public License for more details.
26 ;;;
27 ;;; You should have received a copy of the GNU General Public License
28 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
30 (define-module (gnu packages qt)
31 #:use-module ((guix licenses) #:prefix license:)
32 #:use-module (guix packages)
33 #:use-module (guix download)
34 #:use-module (guix git-download)
35 #:use-module (guix build-system cmake)
36 #:use-module (guix build-system gnu)
37 #:use-module (guix build-system trivial)
38 #:use-module (guix packages)
39 #:use-module (guix utils)
40 #:use-module (gnu packages)
41 #:use-module (gnu packages bison)
42 #:use-module (gnu packages compression)
43 #:use-module (gnu packages cups)
44 #:use-module (gnu packages databases)
45 #:use-module (gnu packages documentation)
46 #:use-module (gnu packages fontutils)
47 #:use-module (gnu packages flex)
48 #:use-module (gnu packages freedesktop)
49 #:use-module (gnu packages gl)
50 #:use-module (gnu packages glib)
51 #:use-module (gnu packages gperf)
52 #:use-module (gnu packages gstreamer)
53 #:use-module (gnu packages gtk)
54 #:use-module (gnu packages icu4c)
55 #:use-module (gnu packages image)
56 #:use-module (gnu packages linux)
57 #:use-module (gnu packages maths)
58 #:use-module (gnu packages nss)
59 #:use-module (gnu packages pciutils)
60 #:use-module (gnu packages pcre)
61 #:use-module (gnu packages perl)
62 #:use-module (gnu packages pkg-config)
63 #:use-module (gnu packages pulseaudio)
64 #:use-module (gnu packages python)
65 #:use-module (gnu packages python-xyz)
66 #:use-module (gnu packages ruby)
67 #:use-module (gnu packages sdl)
68 #:use-module (gnu packages sqlite)
69 #:use-module (gnu packages tls)
70 #:use-module (gnu packages vulkan)
71 #:use-module (gnu packages xdisorg)
72 #:use-module (gnu packages xorg)
73 #:use-module (gnu packages xml)
74 #:use-module (srfi srfi-1))
75
76 (define-public grantlee
77 (package
78 (name "grantlee")
79 (version "5.1.0")
80 (source
81 (origin
82 (method git-fetch)
83 (uri (git-reference
84 (url "https://github.com/steveire/grantlee.git")
85 (commit (string-append "v" version))))
86 (file-name (git-file-name name version))
87 (sha256
88 (base32 "1dmah2gd6zd4fgz2f4ir11dazqg067hjz8xshhywhfsmavchi626"))))
89 (native-inputs
90 ;; Optional: lcov and cccc, both are for code coverage
91 `(("doxygen" ,doxygen)))
92 (inputs
93 `(("qtbase" ,qtbase)
94 ("qtscript" ,qtscript)))
95 (build-system cmake-build-system)
96 (arguments
97 `(#:phases
98 (modify-phases %standard-phases
99 (add-after 'unpack 'delete-broken-tests
100 (lambda _
101 ;; TODO: Two date tests (for date01 and date02) fail for unknown
102 ;; reasons.
103 ;; Actual (result): ""
104 ;; Expected (output): "01"
105 ;; Actual (result): ""
106 ;; Expected (output): "Jan. 1, 2008"
107 (delete-file "templates/tests/testfilters.cpp")
108 (substitute* "templates/tests/CMakeLists.txt"
109 (("testfilters") ""))
110 #t))
111 (add-before 'check 'check-setup
112 (lambda _
113 ;; make Qt render "offscreen", required for tests
114 (setenv "QT_QPA_PLATFORM" "offscreen")
115 #t)))))
116 (home-page "https://github.com/steveire/grantlee")
117 (synopsis "Libraries for text templating with Qt")
118 (description "Grantlee Templates can be used for theming and generation of
119 other text such as code. The syntax uses the syntax of the Django template
120 system, and the core design of Django is reused in Grantlee.")
121 (license license:lgpl2.0+)))
122
123 (define-public qt
124 (package
125 (name "qt")
126 (version "5.11.3")
127 (outputs '("out" "examples"))
128 (source (origin
129 (method url-fetch)
130 (uri
131 (string-append
132 "http://download.qt.io/official_releases/qt/"
133 (version-major+minor version)
134 "/" version
135 "/single/qt-everywhere-src-"
136 version ".tar.xz"))
137 (sha256
138 (base32
139 "0kgzy32s1fr22fxxfhcyncfryb3qxrznlr737r4y5khk4xj1g545"))
140 (modules '((guix build utils)))
141 (snippet
142 '(begin
143 ;; Remove qtwebengine, which relies on a bundled copy of
144 ;; chromium. Not only does it fail compilation in qt 5.5:
145 ;; 3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc:362:10:
146 ;; error: cannot convert ‘bool’ to ‘boolean’ in return
147 ;; it might also pose security problems.
148 ;; Alternatively, we could use the "-skip qtwebengine"
149 ;; configuration option.
150 (delete-file-recursively "qtwebengine")
151 ;; The following snippets are copied from their mondular-qt counterparts.
152 (for-each
153 (lambda (dir)
154 (delete-file-recursively (string-append "qtbase/src/3rdparty/" dir)))
155 (list "double-conversion" "freetype" "harfbuzz-ng"
156 "libpng" "libjpeg" "pcre2" "sqlite" "xcb"
157 "xkbcommon" "zlib"))
158 (for-each
159 (lambda (dir)
160 (delete-file-recursively dir))
161 (list "qtimageformats/src/3rdparty"
162 "qtmultimedia/examples/multimedia/spectrum/3rdparty"
163 "qtwayland/examples"
164 "qtscxml/tests/3rdparty"
165 "qtcanvas3d/examples/canvas3d/3rdparty"))
166 ;; Tests depend on this example, which depends on the 3rd party code.
167 (substitute* "qtmultimedia/examples/multimedia/multimedia.pro"
168 (("spectrum") "#"))
169 (substitute* "qtxmlpatterns/tests/auto/auto.pro"
170 (("qxmlquery") "# qxmlquery")
171 (("xmlpatterns ") "# xmlpatterns"))
172 (substitute* "qtwebglplugin/tests/plugins/platforms/platforms.pro"
173 (("webgl") "# webgl"))
174 (substitute* "qtscxml/tests/auto/auto.pro"
175 (("scion") "#"))
176 (substitute* "qtnetworkauth/tests/auto/auto.pro"
177 (("oauth1 ") "# oauth1 "))
178 (substitute* "qtremoteobjects/tests/auto/qml/qml.pro"
179 (("integration") "# integration")
180 (("usertypes") "# usertypes"))
181 #t))))
182 (build-system gnu-build-system)
183 (propagated-inputs
184 `(("mesa" ,mesa)))
185 (inputs
186 `(("alsa-lib" ,alsa-lib)
187 ("bluez" ,bluez)
188 ("cups" ,cups)
189 ("dbus" ,dbus)
190 ("double-conversion" ,double-conversion)
191 ("expat" ,expat)
192 ("fontconfig" ,fontconfig)
193 ("freetype" ,freetype)
194 ("glib" ,glib)
195 ("gstreamer" ,gstreamer)
196 ("gst-plugins-base" ,gst-plugins-base)
197 ("harfbuzz" ,harfbuzz)
198 ("icu4c" ,icu4c)
199 ("jasper" ,jasper)
200 ("libinput" ,libinput-minimal)
201 ("libjpeg" ,libjpeg)
202 ("libmng" ,libmng)
203 ("libpci" ,pciutils)
204 ("libpng" ,libpng)
205 ("libtiff" ,libtiff)
206 ("libwebp" ,libwebp)
207 ("libx11" ,libx11)
208 ("libxcomposite" ,libxcomposite)
209 ("libxcursor" ,libxcursor)
210 ("libxext" ,libxext)
211 ("libxfixes" ,libxfixes)
212 ("libxi" ,libxi)
213 ("libxinerama" ,libxinerama)
214 ("libxkbcommon" ,libxkbcommon)
215 ("libxml2" ,libxml2)
216 ("libxrandr" ,libxrandr)
217 ("libxrender" ,libxrender)
218 ("libxslt" ,libxslt)
219 ("libxtst" ,libxtst)
220 ("mtdev" ,mtdev)
221 ("mariadb" ,mariadb)
222 ("nss" ,nss)
223 ("openssl" ,openssl)
224 ("postgresql" ,postgresql)
225 ("pulseaudio" ,pulseaudio)
226 ("pcre2" ,pcre2)
227 ("sqlite" ,sqlite-with-column-metadata)
228 ("udev" ,eudev)
229 ("unixodbc" ,unixodbc)
230 ("wayland" ,wayland)
231 ("xcb-util" ,xcb-util)
232 ("xcb-util-image" ,xcb-util-image)
233 ("xcb-util-keysyms" ,xcb-util-keysyms)
234 ("xcb-util-renderutil" ,xcb-util-renderutil)
235 ("xcb-util-wm" ,xcb-util-wm)
236 ("zlib" ,zlib)))
237 (native-inputs
238 `(("bison" ,bison)
239 ("flex" ,flex)
240 ("gperf" ,gperf)
241 ("perl" ,perl)
242 ("pkg-config" ,pkg-config)
243 ("python" ,python-2)
244 ("ruby" ,ruby)
245 ("vulkan-headers" ,vulkan-headers)
246 ("which" ,(@ (gnu packages base) which))))
247 (arguments
248 `(#:parallel-build? #f ; Triggers race condition in qtbase module on Hydra.
249 #:phases
250 (modify-phases %standard-phases
251 (add-after 'configure 'patch-bin-sh
252 (lambda _
253 (substitute* '("qtbase/configure"
254 "qtbase/mkspecs/features/qt_functions.prf"
255 "qtbase/qmake/library/qmakebuiltins.cpp")
256 (("/bin/sh") (which "sh")))
257 #t))
258 (replace 'configure
259 (lambda* (#:key outputs #:allow-other-keys)
260 (let ((out (assoc-ref outputs "out"))
261 (examples (assoc-ref outputs "examples")))
262 (substitute* '("configure" "qtbase/configure")
263 (("/bin/pwd") (which "pwd")))
264 (substitute* "qtbase/src/corelib/global/global.pri"
265 (("/bin/ls") (which "ls")))
266 ;; do not pass "--enable-fast-install", which makes the
267 ;; configure process fail
268 (invoke
269 "./configure"
270 "-verbose"
271 "-prefix" out
272 "-docdir" (string-append out "/share/doc/qt5")
273 "-headerdir" (string-append out "/include/qt5")
274 "-archdatadir" (string-append out "/lib/qt5")
275 "-datadir" (string-append out "/share/qt5")
276 "-examplesdir" (string-append
277 examples "/share/doc/qt5/examples") ; 151MiB
278 "-opensource"
279 "-confirm-license"
280
281 ;; These features require higher versions of Linux than the
282 ;; minimum version of the glibc. See
283 ;; src/corelib/global/minimum-linux_p.h. By disabling these
284 ;; features Qt5 applications can be used on the oldest
285 ;; kernels that the glibc supports, including the RHEL6
286 ;; (2.6.32) and RHEL7 (3.10) kernels.
287 "-no-feature-getentropy" ; requires Linux 3.17
288 "-no-feature-renameat2" ; requires Linux 3.16
289
290 ;; Do not build examples; for the time being, we
291 ;; prefer to save the space and build time.
292 "-no-compile-examples"
293 ;; Most "-system-..." are automatic, but some use
294 ;; the bundled copy by default.
295 "-system-sqlite"
296 "-system-harfbuzz"
297 "-system-pcre"
298 ;; explicitly link with openssl instead of dlopening it
299 "-openssl-linked"
300 ;; explicitly link with dbus instead of dlopening it
301 "-dbus-linked"
302 ;; don't use the precompiled headers
303 "-no-pch"
304 ;; drop special machine instructions not supported
305 ;; on all instances of the target
306 ,@(if (string-prefix? "x86_64"
307 (or (%current-target-system)
308 (%current-system)))
309 '()
310 '("-no-sse2"))
311 "-no-mips_dsp"
312 "-no-mips_dspr2"))))
313 (add-after 'install 'patch-mkspecs
314 (lambda* (#:key outputs #:allow-other-keys)
315 (let* ((out (assoc-ref outputs "out"))
316 (archdata (string-append out "/lib/qt5"))
317 (mkspecs (string-append archdata "/mkspecs"))
318 (qt_config.prf (string-append
319 mkspecs "/features/qt_config.prf")))
320 ;; For each Qt module, let `qmake' uses search paths in the
321 ;; module directory instead of all in QT_INSTALL_PREFIX.
322 (substitute* qt_config.prf
323 (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
324 "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
325 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
326 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
327 (("\\$\\$\\[QT_HOST_LIBS\\]")
328 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
329 (("\\$\\$\\[QT_INSTALL_BINS\\]")
330 "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
331
332 ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
333 (substitute* (string-append mkspecs "/features/qt_functions.prf")
334 (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
335 "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
336
337 ;; Resolve qmake spec files within qtbase by absolute paths.
338 (substitute*
339 (map (lambda (file)
340 (string-append mkspecs "/features/" file))
341 '("device_config.prf" "moc.prf" "qt_build_config.prf"
342 "qt_config.prf" "winrt/package_manifest.prf"))
343 (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
344 (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
345 #t)))
346 (add-after 'unpack 'patch-paths
347 ;; Use the absolute paths for dynamically loaded libs, otherwise
348 ;; the lib will be searched in LD_LIBRARY_PATH which typically is
349 ;; not set in guix.
350 (lambda* (#:key inputs #:allow-other-keys)
351 ;; libresolve
352 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
353 "cross-libc" "libc"))))
354 (substitute* '("qtbase/src/network/kernel/qdnslookup_unix.cpp"
355 "qtbase/src/network/kernel/qhostinfo_unix.cpp")
356 (("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b)
357 (string-append a glibc "/lib/lib" b))))
358 ;; X11/locale (compose path)
359 (substitute* "qtbase/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp"
360 ;; Don't search in /usr/…/X11/locale, …
361 (("^\\s*m_possibleLocations.append\\(QStringLiteral\\(\"/usr/.*/X11/locale\"\\)\\);" line)
362 (string-append "// " line))
363 ;; … but use libx11's path
364 (("^\\s*(m_possibleLocations.append\\(QStringLiteral\\()X11_PREFIX \"(/.*/X11/locale\"\\)\\);)" _ a b)
365 (string-append a "\"" (assoc-ref inputs "libx11") b)))
366 ;; libGL
367 (substitute* "qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp"
368 (("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b)
369 (string-append a (assoc-ref inputs "mesa") "/lib/lib" b)))
370 ;; libXcursor
371 (substitute* "qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp"
372 (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
373 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
374 (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
375 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))
376 #t)))))
377 (native-search-paths
378 (list (search-path-specification
379 (variable "QMAKEPATH")
380 (files '("lib/qt5")))
381 (search-path-specification
382 (variable "QML2_IMPORT_PATH")
383 (files '("lib/qt5/qml")))
384 (search-path-specification
385 (variable "QT_PLUGIN_PATH")
386 (files '("lib/qt5/plugins")))
387 (search-path-specification
388 (variable "XDG_DATA_DIRS")
389 (files '("share")))
390 (search-path-specification
391 (variable "XDG_CONFIG_DIRS")
392 (files '("etc/xdg")))))
393 (home-page "https://www.qt.io/")
394 (synopsis "Cross-platform GUI library")
395 (description "Qt is a cross-platform application and UI framework for
396 developers using C++ or QML, a CSS & JavaScript like language.")
397 (license (list license:lgpl2.1 license:lgpl3))
398
399 ;; Qt 4: 'QBasicAtomicPointer' leads to build failures on MIPS;
400 ;; see <http://hydra.gnu.org/build/112828>.
401 ;; Qt 5: assembler error; see <http://hydra.gnu.org/build/112526>.
402 (supported-systems (delete "mips64el-linux" %supported-systems))))
403
404 (define-public qt-4
405 (package (inherit qt)
406 (version "4.8.7")
407 (source (origin
408 (method url-fetch)
409 (uri (string-append "http://download.qt-project.org/official_releases/qt/"
410 (string-copy version 0 (string-rindex version #\.))
411 "/" version
412 "/qt-everywhere-opensource-src-"
413 version ".tar.gz"))
414 (sha256
415 (base32
416 "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272"))
417 (patches (search-patches "qt4-ldflags.patch"))
418 (modules '((guix build utils)))
419 (snippet
420 ;; Remove webkit module, which is not built.
421 '(begin (delete-file-recursively "src/3rdparty/webkit")
422 #t))))
423 (inputs
424 `(,@(fold alist-delete
425 (package-inputs qt)
426 '("harfbuzz" "libjpeg"))
427 ("libjpeg" ,libjpeg-8)
428 ("libsm" ,libsm)))
429 (native-inputs
430 `(,@(fold alist-delete
431 (package-native-inputs qt)
432 '("vulkan-headers"))))
433
434 ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags,
435 ;; but we can't make them a separate output because "out" and "examples"
436 ;; would refer to each other.
437 (outputs '("out" ;112MiB core + 37MiB examples
438 "doc")) ;280MiB of HTML + code
439 (arguments
440 `(#:phases
441 (modify-phases %standard-phases
442 (replace
443 'configure
444 (lambda* (#:key outputs #:allow-other-keys)
445 (let ((out (assoc-ref outputs "out"))
446 (doc (assoc-ref outputs "doc")))
447 (substitute* '("configure")
448 (("/bin/pwd") (which "pwd")))
449 (substitute* "src/corelib/global/global.pri"
450 (("/bin/ls") (which "ls")))
451
452 (invoke
453 "./configure"
454 "-verbose"
455 "-prefix" out
456 "-nomake" "examples demos"
457 ;; Note: Don't pass '-docdir' since 'qmake' and
458 ;; libQtCore would record its value, thereby defeating
459 ;; the whole point of having a separate output.
460 "-datadir" (string-append out "/share/qt-" ,version
461 "/data")
462 "-importdir" (string-append out "/lib/qt-4"
463 "/imports")
464 "-plugindir" (string-append out "/lib/qt-4"
465 "/plugins")
466 "-translationdir" (string-append out "/share/qt-" ,version
467 "/translations")
468 "-demosdir" (string-append out "/share/qt-" ,version
469 "/demos")
470 "-examplesdir" (string-append out "/share/qt-" ,version
471 "/examples")
472 "-opensource"
473 "-confirm-license"
474 ;; explicitly link with dbus instead of dlopening it
475 "-dbus-linked"
476 ;; Skip the webkit module; it fails to build on armhf
477 ;; and, apart from that, may pose security risks.
478 "-no-webkit"
479 ;; don't use the precompiled headers
480 "-no-pch"
481 ;; drop special machine instructions not supported
482 ;; on all instances of the target
483 ,@(if (string-prefix? "x86_64"
484 (or (%current-target-system)
485 (%current-system)))
486 '()
487 '("-no-mmx"
488 "-no-3dnow"
489 "-no-sse"
490 "-no-sse2"))
491 "-no-sse3"
492 "-no-ssse3"
493 "-no-sse4.1"
494 "-no-sse4.2"
495 "-no-avx"))))
496 (add-after
497 'install 'move-doc
498 (lambda* (#:key outputs #:allow-other-keys)
499 ;; Because of qt4-documentation-path.patch, documentation ends up
500 ;; being installed in OUT. Move it to the right place.
501 (let* ((out (assoc-ref outputs "out"))
502 (doc (assoc-ref outputs "doc"))
503 (olddoc (string-append out "/doc"))
504 (docdir (string-append doc "/share/doc/qt-" ,version)))
505 (mkdir-p (dirname docdir))
506
507 ;; Note: We can't use 'rename-file' here because OUT and DOC are
508 ;; different "devices" due to bind-mounts.
509 (copy-recursively olddoc docdir)
510 (delete-file-recursively olddoc)
511 #t))))))))
512
513 (define-public qtbase
514 (package
515 (name "qtbase")
516 (version "5.11.3")
517 (source (origin
518 (method url-fetch)
519 (uri (string-append "https://download.qt.io/official_releases/qt/"
520 (version-major+minor version) "/" version
521 "/submodules/" name "-everywhere-src-"
522 version ".tar.xz"))
523 (sha256
524 (base32
525 "071yc9iz14qs4s8yvrwllyfdzp5yjxsdpvbjxdrf0g5q69vqigy6"))
526 ;; Use TZDIR to avoid depending on package "tzdata".
527 (patches (search-patches "qtbase-use-TZDIR.patch"
528 "qtbase-old-kernel.patch"))
529 (modules '((guix build utils)))
530 (snippet
531 ;; corelib uses bundled harfbuzz, md4, md5, sha3
532 '(begin
533 (with-directory-excursion "src/3rdparty"
534 (for-each delete-file-recursively
535 (list "double-conversion" "freetype" "harfbuzz-ng"
536 "libpng" "libjpeg" "pcre2" "sqlite" "xcb"
537 "xkbcommon" "zlib"))
538 #t)))))
539 (build-system gnu-build-system)
540 (propagated-inputs
541 `(("mesa" ,mesa)
542 ("which" ,(@ (gnu packages base) which))))
543 (inputs
544 `(("alsa-lib" ,alsa-lib)
545 ("cups" ,cups)
546 ("dbus" ,dbus)
547 ("double-conversion" ,double-conversion)
548 ("eudev" ,eudev)
549 ("expat" ,expat)
550 ("fontconfig" ,fontconfig)
551 ("freetype" ,freetype)
552 ("glib" ,glib)
553 ("harfbuzz" ,harfbuzz)
554 ("icu4c" ,icu4c)
555 ("libinput" ,libinput-minimal)
556 ("libjpeg" ,libjpeg)
557 ("libmng" ,libmng)
558 ("libpng" ,libpng)
559 ("libx11" ,libx11)
560 ("libxcomposite" ,libxcomposite)
561 ("libxcursor" ,libxcursor)
562 ("libxfixes" ,libxfixes)
563 ("libxi" ,libxi)
564 ("libxinerama" ,libxinerama)
565 ("libxkbcommon" ,libxkbcommon)
566 ("libxml2" ,libxml2)
567 ("libxrandr" ,libxrandr)
568 ("libxrender" ,libxrender)
569 ("libxslt" ,libxslt)
570 ("libxtst" ,libxtst)
571 ("mtdev" ,mtdev)
572 ("mariadb" ,mariadb)
573 ("nss" ,nss)
574 ("openssl" ,openssl)
575 ("pcre2" ,pcre2)
576 ("postgresql" ,postgresql)
577 ("pulseaudio" ,pulseaudio)
578 ("sqlite" ,sqlite-with-column-metadata)
579 ("unixodbc" ,unixodbc)
580 ("xcb-util" ,xcb-util)
581 ("xcb-util-image" ,xcb-util-image)
582 ("xcb-util-keysyms" ,xcb-util-keysyms)
583 ("xcb-util-renderutil" ,xcb-util-renderutil)
584 ("xcb-util-wm" ,xcb-util-wm)
585 ("zlib" ,zlib)))
586 (native-inputs
587 `(("bison" ,bison)
588 ("flex" ,flex)
589 ("gperf" ,gperf)
590 ("perl" ,perl)
591 ("pkg-config" ,pkg-config)
592 ("python" ,python-2)
593 ("vulkan-headers" ,vulkan-headers)
594 ("ruby" ,ruby)))
595 (arguments
596 `(#:phases
597 (modify-phases %standard-phases
598 (add-after 'configure 'patch-bin-sh
599 (lambda _
600 (substitute* '("config.status"
601 "configure"
602 "mkspecs/features/qt_functions.prf"
603 "qmake/library/qmakebuiltins.cpp")
604 (("/bin/sh") (which "sh")))
605 #t))
606 (replace 'configure
607 (lambda* (#:key outputs #:allow-other-keys)
608 (let ((out (assoc-ref outputs "out")))
609 (substitute* "configure"
610 (("/bin/pwd") (which "pwd")))
611 (substitute* "src/corelib/global/global.pri"
612 (("/bin/ls") (which "ls")))
613 ;; The configuration files for other Qt5 packages are searched
614 ;; through a call to "find_package" in Qt5Config.cmake, which
615 ;; disables the use of CMAKE_PREFIX_PATH via the parameter
616 ;; "NO_DEFAULT_PATH". Re-enable it so that the different
617 ;; components can be installed in different places.
618 (substitute* (find-files "." ".*\\.cmake")
619 (("NO_DEFAULT_PATH") ""))
620 ;; do not pass "--enable-fast-install", which makes the
621 ;; configure process fail
622 (invoke
623 "./configure"
624 "-verbose"
625 "-prefix" out
626 "-docdir" (string-append out "/share/doc/qt5")
627 "-headerdir" (string-append out "/include/qt5")
628 "-archdatadir" (string-append out "/lib/qt5")
629 "-datadir" (string-append out "/share/qt5")
630 "-examplesdir" (string-append
631 out "/share/doc/qt5/examples")
632 "-opensource"
633 "-confirm-license"
634
635 ;; These features require higher versions of Linux than the
636 ;; minimum version of the glibc. See
637 ;; src/corelib/global/minimum-linux_p.h. By disabling these
638 ;; features Qt5 applications can be used on the oldest
639 ;; kernels that the glibc supports, including the RHEL6
640 ;; (2.6.32) and RHEL7 (3.10) kernels.
641 "-no-feature-getentropy" ; requires Linux 3.17
642
643 ;; Do not build examples; if desired, these could go
644 ;; into a separate output, but for the time being, we
645 ;; prefer to save the space and build time.
646 "-no-compile-examples"
647 ;; Most "-system-..." are automatic, but some use
648 ;; the bundled copy by default.
649 "-system-sqlite"
650 "-system-harfbuzz"
651 "-system-pcre"
652 ;; explicitly link with openssl instead of dlopening it
653 "-openssl-linked"
654 ;; explicitly link with dbus instead of dlopening it
655 "-dbus-linked"
656 ;; don't use the precompiled headers
657 "-no-pch"
658 ;; drop special machine instructions that do not have
659 ;; runtime detection
660 ,@(if (string-prefix? "x86_64"
661 (or (%current-target-system)
662 (%current-system)))
663 '()
664 '("-no-sse2"))
665 "-no-mips_dsp"
666 "-no-mips_dspr2"))))
667 (add-after 'install 'patch-mkspecs
668 (lambda* (#:key outputs #:allow-other-keys)
669 (let* ((out (assoc-ref outputs "out"))
670 (archdata (string-append out "/lib/qt5"))
671 (mkspecs (string-append archdata "/mkspecs"))
672 (qt_config.prf (string-append
673 mkspecs "/features/qt_config.prf")))
674 ;; For each Qt module, let `qmake' uses search paths in the
675 ;; module directory instead of all in QT_INSTALL_PREFIX.
676 (substitute* qt_config.prf
677 (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
678 "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
679 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
680 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
681 (("\\$\\$\\[QT_HOST_LIBS\\]")
682 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
683 (("\\$\\$\\[QT_INSTALL_BINS\\]")
684 "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
685
686 ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
687 (substitute* (string-append mkspecs "/features/qt_functions.prf")
688 (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
689 "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
690
691 ;; Resolve qmake spec files within qtbase by absolute paths.
692 (substitute*
693 (map (lambda (file)
694 (string-append mkspecs "/features/" file))
695 '("device_config.prf" "moc.prf" "qt_build_config.prf"
696 "qt_config.prf" "winrt/package_manifest.prf"))
697 (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
698 (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
699 #t)))
700 (add-after 'unpack 'patch-paths
701 ;; Use the absolute paths for dynamically loaded libs, otherwise
702 ;; the lib will be searched in LD_LIBRARY_PATH which typically is
703 ;; not set in guix.
704 (lambda* (#:key inputs #:allow-other-keys)
705 ;; libresolve
706 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
707 "cross-libc" "libc"))))
708 (substitute* '("src/network/kernel/qdnslookup_unix.cpp"
709 "src/network/kernel/qhostinfo_unix.cpp")
710 (("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b)
711 (string-append a glibc "/lib/lib" b))))
712 ;; X11/locale (compose path)
713 (substitute* "src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp"
714 ;; Don't search in /usr/…/X11/locale, …
715 (("^\\s*m_possibleLocations.append\\(QStringLiteral\\(\"/usr/.*/X11/locale\"\\)\\);" line)
716 (string-append "// " line))
717 ;; … but use libx11's path
718 (("^\\s*(m_possibleLocations.append\\(QStringLiteral\\()X11_PREFIX \"(/.*/X11/locale\"\\)\\);)" _ a b)
719 (string-append a "\"" (assoc-ref inputs "libx11") b)))
720 ;; libGL
721 (substitute* "src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp"
722 (("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b)
723 (string-append a (assoc-ref inputs "mesa") "/lib/lib" b)))
724 ;; libXcursor
725 (substitute* "src/plugins/platforms/xcb/qxcbcursor.cpp"
726 (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
727 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
728 (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
729 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))
730 #t)))))
731 (native-search-paths
732 (list (search-path-specification
733 (variable "QMAKEPATH")
734 (files '("lib/qt5")))
735 (search-path-specification
736 (variable "QML2_IMPORT_PATH")
737 (files '("lib/qt5/qml")))
738 (search-path-specification
739 (variable "QT_PLUGIN_PATH")
740 (files '("lib/qt5/plugins")))
741 (search-path-specification
742 (variable "XDG_DATA_DIRS")
743 (files '("share")))
744 (search-path-specification
745 (variable "XDG_CONFIG_DIRS")
746 (files '("etc/xdg")))))
747 (home-page "https://www.qt.io/")
748 (synopsis "Cross-platform GUI library")
749 (description "Qt is a cross-platform application and UI framework for
750 developers using C++ or QML, a CSS & JavaScript like language.")
751 (license (list license:lgpl2.1 license:lgpl3))))
752
753 (define-public qtsvg
754 (package (inherit qtbase)
755 (name "qtsvg")
756 (version "5.11.3")
757 (source (origin
758 (method url-fetch)
759 (uri (string-append "https://download.qt.io/official_releases/qt/"
760 (version-major+minor version) "/" version
761 "/submodules/" name "-everywhere-src-"
762 version ".tar.xz"))
763 (sha256
764 (base32
765 "14a4rprbj9f9rhixbk7143xdz34d7d39xh9v2sc1w43q9sf2rsi1"))))
766 (propagated-inputs `())
767 (native-inputs `(("perl" ,perl)))
768 (inputs
769 `(("mesa" ,mesa)
770 ("qtbase" ,qtbase)
771 ("zlib" ,zlib)))
772 (arguments
773 `(#:phases
774 (modify-phases %standard-phases
775 (add-before 'configure 'configure-qmake
776 (lambda* (#:key inputs outputs #:allow-other-keys)
777 (let* ((out (assoc-ref outputs "out"))
778 (qtbase (assoc-ref inputs "qtbase"))
779 (tmpdir (string-append (getenv "TMPDIR")))
780 (qmake (string-append tmpdir "/qmake"))
781 (qt.conf (string-append tmpdir "/qt.conf")))
782 ;; Use qmake with a customized qt.conf to override install
783 ;; paths to $out.
784 (symlink (which "qmake") qmake)
785 (setenv "PATH" (string-append tmpdir ":" (getenv "PATH")))
786 (with-output-to-file qt.conf
787 (lambda ()
788 (format #t "[Paths]
789 Prefix=~a
790 ArchData=lib/qt5
791 Data=share/qt5
792 Documentation=share/doc/qt5
793 Headers=include/qt5
794 Libraries=lib
795 LibraryExecutables=lib/qt5/libexec
796 Binaries=bin
797 Tests=tests
798 Plugins=lib/qt5/plugins
799 Imports=lib/qt5/imports
800 Qml2Imports=lib/qt5/qml
801 Translations=share/qt5/translations
802 Settings=etc/xdg
803 Examples=share/doc/qt5/examples
804 HostPrefix=~a
805 HostData=lib/qt5
806 HostBinaries=bin
807 HostLibraries=lib
808
809 [EffectiveSourcePaths]
810 HostPrefix=~a
811 HostData=lib/qt5
812 " out out qtbase)))
813 #t)))
814 (replace 'configure
815 (lambda* (#:key inputs outputs #:allow-other-keys)
816 ;; Valid QT_BUILD_PARTS variables are:
817 ;; libs tools tests examples demos docs translations
818 (invoke "qmake" "QT_BUILD_PARTS = libs tools tests")))
819 (add-before 'check 'set-display
820 (lambda _
821 ;; make Qt render "offscreen", required for tests
822 (setenv "QT_QPA_PLATFORM" "offscreen")
823 #t)))))
824 (synopsis "Qt module for displaying SVGs")
825 (description "The QtSvg module provides classes for displaying the
826 contents of SVG files.")))
827
828 (define-public qtimageformats
829 (package (inherit qtsvg)
830 (name "qtimageformats")
831 (version "5.11.3")
832 (source (origin
833 (method url-fetch)
834 (uri (string-append "https://download.qt.io/official_releases/qt/"
835 (version-major+minor version) "/" version
836 "/submodules/" name "-everywhere-src-"
837 version ".tar.xz"))
838 (sha256
839 (base32
840 "0zq8igsjyyhxsjr43vpaasrqjw3x0g6rwqf8kaz7y9vs7ny63ch4"))
841 (modules '((guix build utils)))
842 (snippet
843 '(begin
844 (delete-file-recursively "src/3rdparty")
845 #t))))
846 (native-inputs `())
847 (inputs
848 `(("jasper" ,jasper)
849 ("libmng" ,libmng)
850 ("libtiff" ,libtiff)
851 ("libwebp" ,libwebp)
852 ("mesa" ,mesa)
853 ("qtbase" ,qtbase)
854 ("zlib" ,zlib)))
855 (synopsis "Additional Image Format plugins for Qt")
856 (description "The QtImageFormats module contains plugins for adding
857 support for MNG, TGA, TIFF and WBMP image formats.")))
858
859 (define-public qtx11extras
860 (package (inherit qtsvg)
861 (name "qtx11extras")
862 (version "5.11.3")
863 (source (origin
864 (method url-fetch)
865 (uri (string-append "https://download.qt.io/official_releases/qt/"
866 (version-major+minor version) "/" version
867 "/submodules/" name "-everywhere-src-"
868 version ".tar.xz"))
869 (sha256
870 (base32
871 "11fd2mc20qmnyv1vqhaqad2q6m0i4lmkr432rmqvpkgphpkfp7pr"))))
872 (arguments
873 (substitute-keyword-arguments (package-arguments qtsvg)
874 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
875 (native-inputs `(("perl" ,perl)))
876 (inputs
877 `(("mesa" ,mesa)
878 ("qtbase" ,qtbase)))
879 (synopsis "Qt Extras for X11")
880 (description "The QtX11Extras module includes the library to access X11
881 from within Qt 5.")))
882
883 (define-public qtxmlpatterns
884 (package (inherit qtsvg)
885 (name "qtxmlpatterns")
886 (version "5.11.3")
887 (source (origin
888 (method url-fetch)
889 (uri (string-append "https://download.qt.io/official_releases/qt/"
890 (version-major+minor version) "/" version
891 "/submodules/" name "-everywhere-src-"
892 version ".tar.xz"))
893 (sha256
894 (base32
895 "1vhfvgi39miqsx3iq7c9sii2sykq0yfng69b70i0smr20zihpl4b"))))
896 (arguments
897 (substitute-keyword-arguments (package-arguments qtsvg)
898 ((#:phases phases)
899 `(modify-phases ,phases
900 (add-after 'unpack 'disable-network-tests
901 (lambda _ (substitute* "tests/auto/auto.pro"
902 (("qxmlquery") "# qxmlquery")
903 (("xmlpatterns ") "# xmlpatterns"))
904 #t))))))
905 (native-inputs `(("perl" ,perl)))
906 (inputs `(("qtbase" ,qtbase)))
907 (synopsis "Qt XML patterns module")
908 (description "The QtXmlPatterns module is a XQuery and XPath engine for
909 XML and custom data models. It contains programs such as xmlpatterns and
910 xmlpatternsvalidator.")))
911
912 (define-public qtdeclarative
913 (package (inherit qtsvg)
914 (name "qtdeclarative")
915 (version "5.11.3")
916 (source (origin
917 (method url-fetch)
918 (uri (string-append "https://download.qt.io/official_releases/qt/"
919 (version-major+minor version) "/" version
920 "/submodules/" name "-everywhere-src-"
921 version ".tar.xz"))
922 (sha256
923 (base32
924 "1rhsf9bma2zwwpixk2fsg31x7c1pmsk144npypgc9w86swhkc9lf"))))
925 (arguments
926 (substitute-keyword-arguments (package-arguments qtsvg)
927 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
928 (native-inputs
929 `(("perl" ,perl)
930 ("pkg-config" ,pkg-config)
931 ("python" ,python-2)
932 ("qtsvg" ,qtsvg)
933 ("qtxmlpatterns" ,qtxmlpatterns)))
934 (inputs
935 `(("mesa" ,mesa)
936 ("qtbase" ,qtbase)))
937 (synopsis "Qt QML module (Quick 2)")
938 (description "The Qt QML module provides a framework for developing
939 applications and libraries with the QML language. It defines and implements the
940 language and engine infrastructure, and provides an API to enable application
941 developers to extend the QML language with custom types and integrate QML code
942 with JavaScript and C++.")))
943
944 (define-public qtconnectivity
945 (package (inherit qtsvg)
946 (name "qtconnectivity")
947 (version "5.11.3")
948 (source (origin
949 (method url-fetch)
950 (uri (string-append "https://download.qt.io/official_releases/qt/"
951 (version-major+minor version) "/" version
952 "/submodules/" name "-everywhere-src-"
953 version ".tar.xz"))
954 (sha256
955 (base32
956 "0amks3qad31i7cha85kvcaxvlmmgkc3gm4jdkw2p02ixxfygr30l"))))
957 (native-inputs
958 `(("perl" ,perl)
959 ("pkg-config" ,pkg-config)
960 ("qtdeclarative" ,qtdeclarative)))
961 (inputs
962 `(("bluez" ,bluez)
963 ("qtbase" ,qtbase)))
964 (synopsis "Qt Connectivity module")
965 (description "The Qt Connectivity modules provides modules for interacting
966 with Bluetooth and NFC.")))
967
968 (define-public qtwebsockets
969 (package (inherit qtsvg)
970 (name "qtwebsockets")
971 (version "5.11.3")
972 (source (origin
973 (method url-fetch)
974 (uri (string-append "https://download.qt.io/official_releases/qt/"
975 (version-major+minor version) "/" version
976 "/submodules/" name "-everywhere-src-"
977 version ".tar.xz"))
978 (sha256
979 (base32
980 "1ffmapfy68xwwbxbg19ng6b5h8v42cf78s21j7rgq49gm70r0402"))))
981 (arguments
982 (substitute-keyword-arguments (package-arguments qtsvg)
983 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
984 (native-inputs
985 `(("perl" ,perl)
986 ("qtdeclarative" ,qtdeclarative)))
987 (inputs `(("qtbase" ,qtbase)))
988 (synopsis "Qt Web Sockets module")
989 (description "WebSocket is a web-based protocol designed to enable two-way
990 communication between a client application and a remote host. The Qt
991 WebSockets module provides C++ and QML interfaces that enable Qt applications
992 to act as a server that can process WebSocket requests, or a client that can
993 consume data received from the server, or both.")))
994
995 (define-public qtsensors
996 (package (inherit qtsvg)
997 (name "qtsensors")
998 (version "5.11.3")
999 (source (origin
1000 (method url-fetch)
1001 (uri (string-append "https://download.qt.io/official_releases/qt/"
1002 (version-major+minor version) "/" version
1003 "/submodules/" name "-everywhere-src-"
1004 version ".tar.xz"))
1005 (sha256
1006 (base32
1007 "0n88c8xi9pbyh7q1pcqv4yjv6nx62abflj8qgfr4qzb0sp8m6mx7"))))
1008 (arguments
1009 (substitute-keyword-arguments (package-arguments qtsvg)
1010 ((#:parallel-tests? _ #f) #f) ; can lead to race condition
1011 ((#:phases phases)
1012 `(modify-phases ,phases
1013 (add-after 'unpack 'fix-tests
1014 (lambda _
1015 (substitute* "tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp"
1016 (("2000") "5000") ;lengthen test timeout
1017 (("QTest::newRow(\"twist\") << \"twist\"") "")) ;failing test
1018 #t))))))
1019 (native-inputs
1020 `(("perl" ,perl)
1021 ("qtdeclarative" ,qtdeclarative)))
1022 (inputs `(("qtbase" ,qtbase)))
1023 (synopsis "Qt Sensors module")
1024 (description "The Qt Sensors API provides access to sensor hardware via QML
1025 and C++ interfaces. The Qt Sensors API also provides a motion gesture
1026 recognition API for devices.")))
1027
1028 (define-public qtmultimedia
1029 (package (inherit qtsvg)
1030 (name "qtmultimedia")
1031 (version "5.11.3")
1032 (source (origin
1033 (method url-fetch)
1034 (uri (string-append "https://download.qt.io/official_releases/qt/"
1035 (version-major+minor version) "/" version
1036 "/submodules/" name "-everywhere-src-"
1037 version ".tar.xz"))
1038 (sha256
1039 (base32
1040 "0h9wx86zj20n4xc3qnml0i360x2dc1yd2z2af1flj8fwyzppi03j"))
1041 (modules '((guix build utils)))
1042 (snippet
1043 '(begin
1044 (delete-file-recursively
1045 "examples/multimedia/spectrum/3rdparty")
1046 ;; We also prevent the spectrum example from being built.
1047 (substitute* "examples/multimedia/multimedia.pro"
1048 (("spectrum") "#"))
1049 #t))))
1050 (arguments
1051 (substitute-keyword-arguments (package-arguments qtsvg)
1052 ((#:phases phases)
1053 `(modify-phases ,phases
1054 (replace 'configure
1055 (lambda* (#:key outputs #:allow-other-keys)
1056 (let ((out (assoc-ref outputs "out")))
1057 (invoke "qmake" "QT_BUILD_PARTS = libs tools tests"
1058 (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,")
1059 (string-append "PREFIX=" out)))))))
1060 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1061 (native-inputs
1062 `(("perl" ,perl)
1063 ("pkg-config" ,pkg-config)
1064 ("python" ,python-2)
1065 ("qtdeclarative" ,qtdeclarative)))
1066 (inputs
1067 `(("alsa-lib" ,alsa-lib)
1068 ("mesa" ,mesa)
1069 ("pulseaudio" ,pulseaudio)
1070 ("qtbase" ,qtbase)
1071 ;; Gstreamer is needed for the mediaplayer plugin
1072 ("gstreamer" ,gstreamer)
1073 ("gst-plugins-base" ,gst-plugins-base)))
1074 (synopsis "Qt Multimedia module")
1075 (description "The Qt Multimedia module provides set of APIs to play and
1076 record media, and manage a collection of media content. It also contains a
1077 set of plugins for interacting with pulseaudio and GStreamer.")))
1078
1079 (define-public qtwayland
1080 (package (inherit qtsvg)
1081 (name "qtwayland")
1082 (version "5.11.3")
1083 (source (origin
1084 (method url-fetch)
1085 (uri (string-append "https://download.qt.io/official_releases/qt/"
1086 (version-major+minor version) "/" version
1087 "/submodules/" name "-everywhere-src-"
1088 version ".tar.xz"))
1089 (sha256
1090 (base32
1091 "1chz4wchgkzd45h143i5hkqg0whcgdbj37gkg7j4kj31whllzjb2"))
1092 (modules '((guix build utils)))
1093 (snippet
1094 ;; The examples try to build and cause the build to fail
1095 '(begin
1096 (delete-file-recursively "examples")
1097 #t))))
1098 (arguments
1099 (substitute-keyword-arguments (package-arguments qtsvg)
1100 ((#:phases phases)
1101 `(modify-phases ,phases
1102 (add-before 'check 'set-ld-library-path
1103 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00019.html>
1104 ;;
1105 ;; Make the uninstalled libQt5WaylandClient.so.5 available to the
1106 ;; wayland platform plugin.
1107 (lambda _
1108 (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/lib"))
1109 #t))))))
1110 (native-inputs
1111 `(("glib" ,glib)
1112 ("perl" ,perl)
1113 ("pkg-config" ,pkg-config)
1114 ("qtdeclarative" ,qtdeclarative)))
1115 (inputs
1116 `(("fontconfig" ,fontconfig)
1117 ("freetype" ,freetype)
1118 ("libx11" ,libx11)
1119 ("libxcomposite" ,libxcomposite)
1120 ("libxext" ,libxext)
1121 ("libxkbcommon" ,libxkbcommon)
1122 ("libxrender" ,libxrender)
1123 ("mesa" ,mesa)
1124 ("mtdev" ,mtdev)
1125 ("qtbase" ,qtbase)
1126 ("wayland" ,wayland)))
1127 (synopsis "Qt Wayland module")
1128 (description "The Qt Wayland module provides the QtWayland client and
1129 compositor libraries.")))
1130
1131 (define-public qtserialport
1132 (package (inherit qtsvg)
1133 (name "qtserialport")
1134 (version "5.11.3")
1135 (source (origin
1136 (method url-fetch)
1137 (uri (string-append "https://download.qt.io/official_releases/qt/"
1138 (version-major+minor version) "/" version
1139 "/submodules/" name "-everywhere-src-"
1140 version ".tar.xz"))
1141 (sha256
1142 (base32
1143 "1nkbfsxzgicwns3k11hhzjxy2hgrigj8xcw2by0jc1j71mnmxi4n"))))
1144 (native-inputs `(("perl" ,perl)))
1145 (inputs
1146 `(("qtbase" ,qtbase)
1147 ("eudev" ,eudev)))
1148 (arguments
1149 (substitute-keyword-arguments (package-arguments qtsvg)
1150 ((#:phases phases)
1151 `(modify-phases ,phases
1152 (add-after 'unpack 'patch-dlopen-paths
1153 (lambda* (#:key inputs #:allow-other-keys)
1154 (substitute* "src/serialport/qtudev_p.h"
1155 ;; Use the absolute paths for dynamically loaded libs,
1156 ;; otherwise the lib will be searched in LD_LIBRARY_PATH which
1157 ;; typically is not set in guix.
1158 (("^\\s*(udevLibrary->setFileNameAndVersion\\(QStringLiteral\\(\")(udev\"\\),\\s*[0-9]+\\);)" _ a b)
1159 (string-append a (assoc-ref inputs "eudev") "/lib/lib" b)))
1160 #t))))))
1161 (synopsis "Qt Serial Port module")
1162 (description "The Qt Serial Port module provides the library for
1163 interacting with serial ports from within Qt.")))
1164
1165 (define-public qtserialbus
1166 (package (inherit qtsvg)
1167 (name "qtserialbus")
1168 (version "5.11.3")
1169 (source (origin
1170 (method url-fetch)
1171 (uri (string-append "https://download.qt.io/official_releases/qt/"
1172 (version-major+minor version) "/" version
1173 "/submodules/" name "-everywhere-src-"
1174 version ".tar.xz"))
1175 (sha256
1176 (base32
1177 "0vf12jk1ma0v0dlpliw1x9i04iaik1kjkiaby7gaxm2abprxwr2n"))))
1178 (inputs
1179 `(("qtbase" ,qtbase)
1180 ("qtserialport" ,qtserialport)))
1181 (synopsis "Qt Serial Bus module")
1182 (description "The Qt Serial Bus API provides classes and functions to
1183 access the various industrial serial buses and protocols, such as CAN, ModBus,
1184 and others.")))
1185
1186 (define-public qtwebchannel
1187 (package (inherit qtsvg)
1188 (name "qtwebchannel")
1189 (version "5.11.3")
1190 (source (origin
1191 (method url-fetch)
1192 (uri (string-append "https://download.qt.io/official_releases/qt/"
1193 (version-major+minor version) "/" version
1194 "/submodules/" name "-everywhere-src-"
1195 version ".tar.xz"))
1196 (sha256
1197 (base32
1198 "1wrdawlqvcw84h8q52mvbjhp1vkd6fhz6c8ijlg9rw0s3fj4y99w"))))
1199 (native-inputs
1200 `(("perl" ,perl)
1201 ("qtdeclarative" ,qtdeclarative)
1202 ("qtwebsockets" ,qtwebsockets)))
1203 (inputs `(("qtbase" ,qtbase)))
1204 (synopsis "Web communication library for Qt")
1205 (description "The Qt WebChannel module enables peer-to-peer communication
1206 between the host (QML/C++ application) and the client (HTML/JavaScript
1207 application). The transport mechanism is supported out of the box by the two
1208 popular web engines, Qt WebKit 2 and Qt WebEngine.")))
1209
1210 (define-public qtwebglplugin
1211 (package (inherit qtsvg)
1212 (name "qtwebglplugin")
1213 (version "5.11.3")
1214 (source (origin
1215 (method url-fetch)
1216 (uri (string-append "https://download.qt.io/official_releases/qt/"
1217 (version-major+minor version) "/" version
1218 "/submodules/" name "-everywhere-src-"
1219 version ".tar.xz"))
1220 (sha256
1221 (base32
1222 "0wqz8lycmi7pffzy0pz5960w109lbk4mkbw0l1lh64avl6clq7b9"))))
1223 (arguments
1224 (substitute-keyword-arguments (package-arguments qtsvg)
1225 ((#:phases phases)
1226 `(modify-phases ,phases
1227 (add-after 'unpack 'disable-network-tests
1228 (lambda _ (substitute* "tests/plugins/platforms/platforms.pro"
1229 (("webgl") "# webgl"))
1230 #t))))))
1231 (native-inputs '())
1232 (inputs
1233 `(("mesa" ,mesa)
1234 ("qtbase" ,qtbase)
1235 ("qtdeclarative" ,qtdeclarative)
1236 ("qtwebsockets" ,qtwebsockets)))
1237 (synopsis "QPA plugin for running an application via a browser using
1238 streamed WebGL commands")
1239 (description "Qt back end that uses WebGL for rendering. It allows Qt
1240 applications (with some limitations) to run in a web browser that supports
1241 WebGL. WebGL is a JavaScript API for rendering 2D and 3D graphics within any
1242 compatible web browser without the use of plug-ins. The API is similar to
1243 OpenGL ES 2.0 and can be used in HTML5 canvas elements")))
1244
1245 (define-public qtwebview
1246 (package (inherit qtsvg)
1247 (name "qtwebview")
1248 (version "5.11.3")
1249 (source (origin
1250 (method url-fetch)
1251 (uri (string-append "https://download.qt.io/official_releases/qt/"
1252 (version-major+minor version) "/" version
1253 "/submodules/" name "-everywhere-src-"
1254 version ".tar.xz"))
1255 (sha256
1256 (base32
1257 "1njmn1n03dp4md8cz58cq2z6bsxd8nwlw0238zmavh7px3jzc9kh"))))
1258 (native-inputs
1259 `(("perl" ,perl)))
1260 (inputs
1261 `(("qtbase" ,qtbase)
1262 ("qtdeclarative" ,qtdeclarative)))
1263 (synopsis "Display web content in a QML application")
1264 (description "Qt WebView provides a way to display web content in a QML
1265 application without necessarily including a full web browser stack by using
1266 native APIs where it makes sense.")))
1267
1268 (define-public qtlocation
1269 (package (inherit qtsvg)
1270 (name "qtlocation")
1271 (version "5.11.3")
1272 (source (origin
1273 (method url-fetch)
1274 (uri (string-append "https://download.qt.io/official_releases/qt/"
1275 (version-major+minor version) "/" version
1276 "/submodules/" name "-everywhere-src-"
1277 version ".tar.xz"))
1278 (sha256
1279 (base32
1280 "1sq0f41jwmsimv9a1wl2nk5nifjppm5j92rr4n4s7qwnnjjrir2q"))))
1281 (arguments
1282 (substitute-keyword-arguments (package-arguments qtsvg)
1283 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1284 (native-inputs
1285 `(("perl" ,perl)
1286 ("qtdeclarative" ,qtdeclarative)
1287 ("qtquickcontrols" ,qtquickcontrols)
1288 ("qtserialport" ,qtserialport)))
1289 (inputs
1290 `(("icu4c" ,icu4c)
1291 ("openssl" ,openssl)
1292 ("qtbase" ,qtbase)
1293 ("zlib" ,zlib)))
1294 (synopsis "Qt Location and Positioning modules")
1295 (description "The Qt Location module provides an interface for location,
1296 positioning and geolocation plugins.")))
1297
1298 (define-public qttools
1299 (package (inherit qtsvg)
1300 (name "qttools")
1301 (version "5.11.3")
1302 (source (origin
1303 (method url-fetch)
1304 (uri (string-append "https://download.qt.io/official_releases/qt/"
1305 (version-major+minor version) "/" version
1306 "/submodules/" name "-everywhere-src-"
1307 version ".tar.xz"))
1308 (sha256
1309 (base32
1310 "13lzdxxi02yhvx4mflhisl6aqv2fiss5m804cqccd1wvp8dyh1f2"))))
1311 (arguments
1312 (substitute-keyword-arguments (package-arguments qtsvg)
1313 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1314 (native-inputs
1315 `(("perl" ,perl)
1316 ("qtdeclarative" ,qtdeclarative)
1317 ("vulkan-headers" ,vulkan-headers)))
1318 (inputs
1319 `(("mesa" ,mesa)
1320 ("qtbase" ,qtbase)))
1321 (synopsis "Qt Tools and Designer modules")
1322 (description "The Qt Tools module provides a set of applications to browse
1323 the documentation, translate applications, generate help files and other stuff
1324 that helps in Qt development.")))
1325
1326 (define-public qtscript
1327 (package (inherit qtsvg)
1328 (name "qtscript")
1329 (version "5.11.3")
1330 (source (origin
1331 (method url-fetch)
1332 (uri (string-append "https://download.qt.io/official_releases/qt/"
1333 (version-major+minor version) "/" version
1334 "/submodules/" name "-everywhere-src-"
1335 version ".tar.xz"))
1336 (sha256
1337 (base32
1338 "027cvggbcvwyz76cn1bl1zvqg0nq7iica1b7yx7xyy0hb36g715v"))
1339 (patches (search-patches "qtscript-disable-tests.patch"))))
1340 (native-inputs
1341 `(("perl" ,perl)
1342 ("qttools" ,qttools)))
1343 (inputs
1344 `(("qtbase" ,qtbase)))
1345 (synopsis "Qt Script module")
1346 (description "Qt provides support for application scripting with ECMAScript.
1347 The following guides and references cover aspects of programming with
1348 ECMAScript and Qt.")))
1349
1350 (define-public qtquickcontrols
1351 (package (inherit qtsvg)
1352 (name "qtquickcontrols")
1353 (version "5.11.3")
1354 (source (origin
1355 (method url-fetch)
1356 (uri (string-append "https://download.qt.io/official_releases/qt/"
1357 (version-major+minor version) "/" version
1358 "/submodules/" name "-everywhere-src-"
1359 version ".tar.xz"))
1360 (sha256
1361 (base32
1362 "0dvmy31qbl76yy0j5y8m7mvnmqyg2c01fmlkn0snvc5h5ah5skjf"))))
1363 (arguments
1364 (substitute-keyword-arguments (package-arguments qtsvg)
1365 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1366 (inputs
1367 `(("qtbase" ,qtbase)
1368 ("qtdeclarative" ,qtdeclarative)))
1369 (synopsis "Qt Quick Controls and other Quick modules")
1370 (description "The QtScript module provides classes for making Qt
1371 applications scriptable. This module provides a set of extra components that
1372 can be used to build complete interfaces in Qt Quick.")))
1373
1374 (define-public qtquickcontrols2
1375 (package (inherit qtsvg)
1376 (name "qtquickcontrols2")
1377 (version "5.11.3")
1378 (source (origin
1379 (method url-fetch)
1380 (uri (string-append "https://download.qt.io/official_releases/qt/"
1381 (version-major+minor version) "/" version
1382 "/submodules/" name "-everywhere-src-"
1383 version ".tar.xz"))
1384 (sha256
1385 (base32
1386 "11nhpb0xckv5jjkqj5szr94c2rvyjwr89ch58hh64nsqaav30mpl"))))
1387 (arguments
1388 (substitute-keyword-arguments (package-arguments qtsvg)
1389 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1390 (inputs
1391 `(("qtbase" ,qtbase)
1392 ("qtdeclarative" ,qtdeclarative)))
1393 (synopsis "Qt Quick Controls 2 and other Quick 2 modules")
1394 (description "The Qt Quick Controls 2 module contains the Qt Labs Platform
1395 module that provides platform integration: native dialogs, menus and menu bars,
1396 and tray icons. It falls back to Qt Widgets when a native implementation is
1397 not available.")))
1398
1399 (define-public qtgraphicaleffects
1400 (package (inherit qtsvg)
1401 (name "qtgraphicaleffects")
1402 (version "5.11.3")
1403 (source (origin
1404 (method url-fetch)
1405 (uri (string-append "https://download.qt.io/official_releases/qt/"
1406 (version-major+minor version) "/" version
1407 "/submodules/" name "-everywhere-src-"
1408 version ".tar.xz"))
1409 (sha256
1410 (base32
1411 "1qjpdzkamf27cg5n1wsf0zk939lcgppgydfjzap9s4fxzj1nkn0l"))))
1412 (arguments
1413 (substitute-keyword-arguments (package-arguments qtsvg)
1414 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1415 (inputs
1416 `(("qtbase" ,qtbase)
1417 ("qtdeclarative" ,qtdeclarative)))
1418 (synopsis "Qt Graphical Effects module")
1419 (description "The Qt Graphical Effects module provides a set of QML types
1420 for adding visually impressive and configurable effects to user interfaces.
1421 Effects are visual items that can be added to Qt Quick user interface as UI
1422 components. The API consists of over 20 effects provided as separate QML
1423 types. The effects cover functional areas such as blending, masking, blurring,
1424 coloring, and many more.")))
1425
1426 (define-public qtdeclarative-render2d
1427 ;; As of Qt-5.8.0 this module has been merged into qtdeclarative
1428 (package (inherit qtsvg)
1429 (name "qtdeclarative-render2d")
1430 (version "5.7.1")
1431 (source (origin
1432 (method url-fetch)
1433 (uri (string-append "https://download.qt.io/official_releases/qt/"
1434 (version-major+minor version) "/" version
1435 "/submodules/" name "-everywhere-src-"
1436 version ".tar.xz"))
1437 (sha256
1438 (base32
1439 "0zwch9vn17f3bpy300jcfxx6cx9qymk5j7khx0x9k1xqid4166c3"))
1440 (modules '((guix build utils)))
1441 (snippet
1442 '(begin
1443 (delete-file-recursively "tools/opengldummy/3rdparty")
1444 #t))))
1445 (native-inputs `())
1446 (inputs
1447 `(("qtbase" ,qtbase)
1448 ("qtdeclarative" ,qtdeclarative)))
1449 (synopsis "Qt Declarative Render module")
1450 (description "The Qt Declarative Render 2D module provides a Raster
1451 backend for QtQuick scene graph.")
1452 (properties `((superseded . ,qtdeclarative)))))
1453
1454 (define-public qtgamepad
1455 (package (inherit qtsvg)
1456 (name "qtgamepad")
1457 (version "5.11.3")
1458 (source (origin
1459 (method url-fetch)
1460 (uri (string-append "https://download.qt.io/official_releases/qt/"
1461 (version-major+minor version) "/" version
1462 "/submodules/" name "-everywhere-src-"
1463 version ".tar.xz"))
1464 (sha256
1465 (base32
1466 "1k222cx18zq48sfna91hmy427qzk2n2xz3dlyz59iyz72k6915g9"))))
1467 (native-inputs
1468 `(("perl" ,perl)
1469 ("pkg-config" ,pkg-config)))
1470 (inputs
1471 `(("fontconfig" ,fontconfig)
1472 ("freetype" ,freetype)
1473 ("libxrender" ,libxrender)
1474 ("sdl2" ,sdl2)
1475 ("qtbase" ,qtbase)
1476 ("qtdeclarative" ,qtdeclarative)))
1477 (synopsis "Qt Gamepad module")
1478 (description "The Qt Gamepad module is an add-on library that enables Qt
1479 applications to support the use of gamepad hardware and in some cases remote
1480 control equipment. The module provides both QML and C++ interfaces. The
1481 primary target audience are embedded devices with fullscreen user interfaces,
1482 and mobile applications targeting TV-like form factors.")))
1483
1484 (define-public qtscxml
1485 (package (inherit qtsvg)
1486 (name "qtscxml")
1487 (version "5.11.3")
1488 (source (origin
1489 (method url-fetch)
1490 (uri (string-append "https://download.qt.io/official_releases/qt/"
1491 (version-major+minor version) "/" version
1492 "/submodules/" name "-everywhere-src-"
1493 version ".tar.xz"))
1494 (sha256
1495 (base32
1496 "1mv8mz36v34dckrzy5r41mq3sqznbalrhndk3avz2154xmkjf5qk"))
1497 (modules '((guix build utils)))
1498 (snippet
1499 '(begin
1500 (delete-file-recursively "tests/3rdparty")
1501 ;; the scion test refers to the bundled 3rd party test code.
1502 (substitute* "tests/auto/auto.pro"
1503 (("scion") "#"))
1504 #t))))
1505 (inputs
1506 `(("qtbase" ,qtbase)
1507 ("qtdeclarative" ,qtdeclarative)))
1508 (synopsis "Qt SCXML module")
1509 (description "The Qt SCXML module provides functionality to create state
1510 machines from SCXML files. This includes both dynamically creating state
1511 machines (loading the SCXML file and instantiating states and transitions) and
1512 generating a C++ file that has a class implementing the state machine. It
1513 also contains functionality to support data models and executable content.")))
1514
1515 (define-public qtpurchasing
1516 (package (inherit qtsvg)
1517 (name "qtpurchasing")
1518 (version "5.11.3")
1519 (source (origin
1520 (method url-fetch)
1521 (uri (string-append "https://download.qt.io/official_releases/qt/"
1522 (version-major+minor version) "/" version
1523 "/submodules/" name "-everywhere-src-"
1524 version ".tar.xz"))
1525 (sha256
1526 (base32
1527 "1fd0gxdj5mrh81iwimq1243i3n47sqv9ik8nslahfh0q3dsx7k8n"))))
1528 (inputs
1529 `(("qtbase" ,qtbase)
1530 ("qtdeclarative" ,qtdeclarative)))
1531 (synopsis "Qt Purchasing module")
1532 (description "The Qt Purchasing module provides and in-app API for
1533 purchasing goods and services.")))
1534
1535 (define-public qtcanvas3d
1536 (package (inherit qtsvg)
1537 (name "qtcanvas3d")
1538 (version "5.11.3")
1539 (source (origin
1540 (method url-fetch)
1541 (uri (string-append "https://download.qt.io/official_releases/qt/"
1542 (version-major+minor version) "/" version
1543 "/submodules/" name "-everywhere-src-"
1544 version ".tar.xz"))
1545 (sha256
1546 (base32
1547 "0f110z7cmkzns9k00aa5zhzq2fpybfxkd7gdlwzcbhc8hn20986m"))
1548 (modules '((guix build utils)))
1549 (snippet
1550 '(begin
1551 (delete-file-recursively "examples/canvas3d/3rdparty")
1552 #t))))
1553 (arguments
1554 (substitute-keyword-arguments (package-arguments qtsvg)
1555 ;; Building the tests depends on the bundled 3rd party javascript files,
1556 ;; and the test phase fails to import QtCanvas3D, causing the phase to
1557 ;; fail, so we skip building them for now.
1558 ((#:phases phases)
1559 `(modify-phases ,phases
1560 (replace 'configure
1561 (lambda* (#:key outputs #:allow-other-keys)
1562 (let ((out (assoc-ref outputs "out")))
1563 (invoke "qmake" "QT_BUILD_PARTS = libs tools"
1564 (string-append "PREFIX=" out)))))))
1565 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1566 (native-inputs `())
1567 (inputs
1568 `(("qtbase" ,qtbase)
1569 ("qtdeclarative" ,qtdeclarative)))
1570 (synopsis "Qt Canvas 3D module")
1571 (description "The Qt Canvas 3D module provides a way to make WebGL-like 3D
1572 drawing calls from Qt Quick JavaScript.")))
1573
1574 (define-public qtcharts
1575 (package (inherit qtsvg)
1576 (name "qtcharts")
1577 (version "5.11.3")
1578 (source (origin
1579 (method url-fetch)
1580 (uri (string-append "https://download.qt.io/official_releases/qt/"
1581 (version-major+minor version) "/" version
1582 "/submodules/" name "-everywhere-src-"
1583 version ".tar.xz"))
1584 (sha256
1585 (base32
1586 "1p4m1nkbbxlkwmbmasx5r83skzssmlcgfzyvj30x2dyrqkmz7627"))))
1587 (arguments
1588 (substitute-keyword-arguments (package-arguments qtsvg)
1589 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1590 (inputs
1591 `(("qtbase" ,qtbase)
1592 ("qtdeclarative" ,qtdeclarative)))
1593 (synopsis "Qt Charts module")
1594 (description "The Qt Charts module provides a set of easy to use chart
1595 components. It uses the Qt Graphics View Framework, therefore charts can be
1596 easily integrated to modern user interfaces. Qt Charts can be used as QWidgets,
1597 QGraphicsWidget, or QML types. Users can easily create impressive graphs by
1598 selecting one of the charts themes.")
1599 (license license:gpl3)))
1600
1601 (define-public qtdatavis3d
1602 (package (inherit qtsvg)
1603 (name "qtdatavis3d")
1604 (version "5.11.3")
1605 (source (origin
1606 (method url-fetch)
1607 (uri (string-append "https://download.qt.io/official_releases/qt/"
1608 (version-major+minor version) "/" version
1609 "/submodules/" name "-everywhere-src-"
1610 version ".tar.xz"))
1611 (sha256
1612 (base32
1613 "1kqwr3avcvcyy4i28vjgxk1bsjj9011zr668hsk1zrjxnnwjwdl3"))))
1614 (arguments
1615 (substitute-keyword-arguments (package-arguments qtsvg)
1616 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1617 (inputs
1618 `(("qtbase" ,qtbase)
1619 ("qtdeclarative" ,qtdeclarative)))
1620 (synopsis "Qt Data Visualization module")
1621 (description "The Qt Data Visualization module provides a way to visualize
1622 data in 3D as bar, scatter, and surface graphs. It is especially useful for
1623 visualizing depth maps and large quantities of rapidly changing data, such as
1624 data received from multiple sensors. The look and feel of graphs can be
1625 customized by using themes or by adding custom items and labels to them.")
1626 (license license:gpl3)))
1627
1628 (define-public qtnetworkauth
1629 (package (inherit qtsvg)
1630 (name "qtnetworkauth")
1631 (version "5.11.3")
1632 (source (origin
1633 (method url-fetch)
1634 (uri (string-append "https://download.qt.io/official_releases/qt/"
1635 (version-major+minor version) "/" version
1636 "/submodules/" name "-everywhere-src-"
1637 version ".tar.xz"))
1638 (sha256
1639 (base32
1640 "0dd35698wzg89975vi2ijl2lym495fjizsl03mjixsjnvb1x0q50"))))
1641 (arguments
1642 (substitute-keyword-arguments (package-arguments qtsvg)
1643 ((#:phases phases)
1644 `(modify-phases ,phases
1645 (add-after 'unpack 'remove-failing-test
1646 (lambda _
1647 ;; These tests can't find their test data.
1648 (substitute* "tests/auto/auto.pro"
1649 (("oauth1 ") "# oauth1 "))
1650 #t))))))
1651 (inputs
1652 `(("qtbase" ,qtbase)))
1653 (synopsis "Qt Network Authorization module")
1654 (description "The Qt Network Authorization module provides an
1655 implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
1656
1657 (define-public qtremoteobjects
1658 (package (inherit qtsvg)
1659 (name "qtremoteobjects")
1660 (version "5.11.3")
1661 (source (origin
1662 (method url-fetch)
1663 (uri (string-append "https://download.qt.io/official_releases/qt/"
1664 (version-major+minor version) "/" version
1665 "/submodules/" name "-everywhere-src-"
1666 version ".tar.xz"))
1667 (sha256
1668 (base32
1669 "1d3jzsxfyjhgb6wj9iv1388bv7j6pi08346nmkm1c1a4iykhc0zp"))))
1670 (arguments
1671 (substitute-keyword-arguments (package-arguments qtsvg)
1672 ((#:phases phases)
1673 `(modify-phases ,phases
1674 (add-after 'unpack 'remove-failing-test
1675 (lambda _
1676 ;; This test can't find its imports.
1677 (substitute* "tests/auto/qml/qml.pro"
1678 (("integration") "# integration")
1679 (("usertypes") "# usertypes"))
1680 #t))))))
1681 (inputs
1682 `(("qtbase" ,qtbase)
1683 ("qtdeclarative" ,qtdeclarative)))
1684 (synopsis "Qt Remote Objects module")
1685 (description "The Qt Remote Objects module is an @dfn{inter-process
1686 communication} (IPC) module developed for Qt. The idea is to extend existing
1687 Qt's functionalities to enable an easy exchange of information between
1688 processes or computers.")))
1689
1690 (define-public qtspeech
1691 (package (inherit qtsvg)
1692 (name "qtspeech")
1693 (version "5.11.3")
1694 (source (origin
1695 (method url-fetch)
1696 (uri (string-append "https://download.qt.io/official_releases/qt/"
1697 (version-major+minor version) "/" version
1698 "/submodules/" name "-everywhere-src-"
1699 version ".tar.xz"))
1700 (sha256
1701 (base32
1702 "158p7zqd0vg55gf88jzc3d4f7649ihh80k0m1q46m2yp6fpdjbxr"))))
1703 (arguments
1704 (substitute-keyword-arguments (package-arguments qtsvg)
1705 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
1706 (inputs
1707 `(("qtbase" ,qtbase)))
1708 (native-inputs
1709 `(("perl" ,perl)
1710 ("qtdeclarative" ,qtdeclarative)
1711 ("qtmultimedia" ,qtmultimedia)
1712 ("qtxmlpatterns" ,qtxmlpatterns)))
1713 (synopsis "Qt Speech module")
1714 (description "The Qt Speech module enables a Qt application to support
1715 accessibility features such as text-to-speech, which is useful for end-users
1716 who are visually challenged or cannot access the application for whatever
1717 reason. The most common use case where text-to-speech comes in handy is when
1718 the end-user is driving and cannot attend the incoming messages on the phone.
1719 In such a scenario, the messaging application can read out the incoming
1720 message.")))
1721
1722 (define-public python-sip
1723 (package
1724 (name "python-sip")
1725 (version "4.19.13")
1726 (source
1727 (origin
1728 (method url-fetch)
1729 (uri
1730 (string-append "mirror://sourceforge/pyqt/sip/"
1731 "sip-" version "/sip-" version ".tar.gz"))
1732 (sha256
1733 (base32
1734 "0pniq03jk1n5bs90yjihw3s3rsmjd8m89y9zbnymzgwrcl2sflz3"))))
1735 (build-system gnu-build-system)
1736 (native-inputs
1737 `(("python" ,python-wrapper)))
1738 (arguments
1739 `(#:tests? #f ; no check target
1740 #:modules ((srfi srfi-1)
1741 ,@%gnu-build-system-modules)
1742 #:phases
1743 (modify-phases %standard-phases
1744 (replace 'configure
1745 (lambda* (#:key inputs outputs #:allow-other-keys)
1746 (let* ((out (assoc-ref outputs "out"))
1747 (bin (string-append out "/bin"))
1748 (include (string-append out "/include"))
1749 (python (assoc-ref inputs "python"))
1750 (python-version
1751 (last (string-split python #\-)))
1752 (python-major+minor
1753 (string-join
1754 (take (string-split python-version #\.) 2)
1755 "."))
1756 (lib (string-append out "/lib/python"
1757 python-major+minor
1758 "/site-packages")))
1759 (invoke "python" "configure.py"
1760 "--bindir" bin
1761 "--destdir" lib
1762 "--incdir" include)))))))
1763 (home-page "https://www.riverbankcomputing.com/software/sip/intro")
1764 (synopsis "Python binding creator for C and C++ libraries")
1765 (description
1766 "SIP is a tool to create Python bindings for C and C++ libraries. It
1767 was originally developed to create PyQt, the Python bindings for the Qt
1768 toolkit, but can be used to create bindings for any C or C++ library.
1769
1770 SIP comprises a code generator and a Python module. The code generator
1771 processes a set of specification files and generates C or C++ code, which
1772 is then compiled to create the bindings extension module. The SIP Python
1773 module provides support functions to the automatically generated code.")
1774 ;; There is a choice between a python like license, gpl2 and gpl3.
1775 ;; For compatibility with pyqt, we need gpl3.
1776 (license license:gpl3)))
1777
1778 (define-public python2-sip
1779 (package (inherit python-sip)
1780 (name "python2-sip")
1781 (native-inputs
1782 `(("python" ,python-2)))))
1783
1784 (define-public python-pyqt
1785 (package
1786 (name "python-pyqt")
1787 (version "5.11.3")
1788 (source
1789 (origin
1790 (method url-fetch)
1791 (uri
1792 (string-append "mirror://sourceforge/pyqt/PyQt5/"
1793 "PyQt-" version "/PyQt5_gpl-"
1794 version ".tar.gz"))
1795 (sha256
1796 (base32
1797 "0wqh4srqkcc03rvkwrcshaa028psrq58xkys6npnyhqxc0apvdf9"))
1798 (patches (search-patches "pyqt-configure.patch"
1799 "pyqt-public-sip.patch"))))
1800 (build-system gnu-build-system)
1801 (native-inputs
1802 `(("qtbase" ,qtbase))) ; for qmake
1803 (propagated-inputs
1804 `(("python-sip" ,python-sip)))
1805 (inputs
1806 `(("python" ,python-wrapper)
1807 ("qtbase" ,qtbase)
1808 ("qtconnectivity" ,qtconnectivity)
1809 ("qtdeclarative" ,qtdeclarative)
1810 ("qtlocation" ,qtlocation)
1811 ("qtmultimedia" ,qtmultimedia)
1812 ("qtsensors" ,qtsensors)
1813 ("qtserialport" ,qtserialport)
1814 ("qtsvg" ,qtsvg)
1815 ("qttools" ,qttools)
1816 ("qtwebchannel" ,qtwebchannel)
1817 ("qtwebkit" ,qtwebkit)
1818 ("qtwebsockets" ,qtwebsockets)
1819 ("qtx11extras" ,qtx11extras)
1820 ("qtxmlpatterns" ,qtxmlpatterns)))
1821 (arguments
1822 `(#:modules ((srfi srfi-1)
1823 ,@%gnu-build-system-modules)
1824 #:phases
1825 (modify-phases %standard-phases
1826 (replace 'configure
1827 (lambda* (#:key inputs outputs #:allow-other-keys)
1828 (let* ((out (assoc-ref outputs "out"))
1829 (bin (string-append out "/bin"))
1830 (sip (string-append out "/share/sip"))
1831 (plugins (string-append out "/plugins"))
1832 (designer (string-append plugins "/designer"))
1833 (qml (string-append plugins "/PyQt5"))
1834 (python (assoc-ref inputs "python"))
1835 (python-version
1836 (last (string-split python #\-)))
1837 (python-major+minor
1838 (string-join
1839 (take (string-split python-version #\.) 2)
1840 "."))
1841 (lib (string-append out "/lib/python"
1842 python-major+minor
1843 "/site-packages"))
1844 (stubs (string-append lib "/PyQt5")))
1845 (invoke "python" "configure.py"
1846 "--confirm-license"
1847 "--bindir" bin
1848 "--destdir" lib
1849 "--designer-plugindir" designer
1850 "--qml-plugindir" qml
1851 ; Where to install the PEP 484 Type Hints stub
1852 ; files. Without this the stubs are tried to be
1853 ; installed into the python package's
1854 ; site-package directory, which is read-only.
1855 "--stubsdir" stubs
1856 "--sipdir" sip)))))))
1857 (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
1858 (synopsis "Python bindings for Qt")
1859 (description
1860 "PyQt is a set of Python v2 and v3 bindings for the Qt application
1861 framework. The bindings are implemented as a set of Python modules and
1862 contain over 620 classes.")
1863 (license license:gpl3)))
1864
1865 ;; XXX: This is useful because qtwebkit does not build reliably at this time.
1866 ;; Ultimately, it would be nicer to have a more modular set of python-pyqt-*
1867 ;; packages that could be used together.
1868 (define-public python-pyqt-without-qtwebkit
1869 (package (inherit python-pyqt)
1870 (name "python-pyqt-without-qtwebkit")
1871 (inputs
1872 (alist-delete "qtwebkit" (package-inputs python-pyqt)))))
1873
1874 (define-public python2-pyqt
1875 (package (inherit python-pyqt)
1876 (name "python2-pyqt")
1877 (native-inputs
1878 `(("python-sip" ,python2-sip)
1879 ("qtbase" ,qtbase)))
1880 (inputs
1881 `(("python" ,python-2)
1882 ("python2-enum34" ,python2-enum34)
1883 ,@(alist-delete "python" (package-inputs python-pyqt))))))
1884
1885 (define-public python2-pyqt-4
1886 (package (inherit python-pyqt)
1887 (name "python2-pyqt")
1888 (version "4.12")
1889 (source
1890 (origin
1891 (method url-fetch)
1892 (uri
1893 (string-append "mirror://sourceforge/pyqt/PyQt4/"
1894 "PyQt-" version "/PyQt4_gpl_x11-"
1895 version ".tar.gz"))
1896 (sha256
1897 (base32
1898 "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w"))))
1899 (native-inputs
1900 `(("python-sip" ,python2-sip)
1901 ("qt" ,qt-4)))
1902 (inputs `(("python" ,python-2)))
1903 (arguments
1904 `(#:tests? #f ; no check target
1905 #:modules ((srfi srfi-1)
1906 ,@%gnu-build-system-modules)
1907 #:phases
1908 (modify-phases %standard-phases
1909 (replace 'configure
1910 (lambda* (#:key inputs outputs #:allow-other-keys)
1911 (let* ((out (assoc-ref outputs "out"))
1912 (bin (string-append out "/bin"))
1913 (sip (string-append out "/share/sip"))
1914 (python (assoc-ref inputs "python"))
1915 (python-version
1916 (last (string-split python #\-)))
1917 (python-major+minor
1918 (string-join
1919 (take (string-split python-version #\.) 2)
1920 "."))
1921 (lib (string-append out "/lib/python"
1922 python-major+minor
1923 "/site-packages")))
1924 (invoke "python" "configure.py"
1925 "--confirm-license"
1926 "--bindir" bin
1927 "--destdir" lib
1928 "--sipdir" sip)))))))
1929 (license (list license:gpl2 license:gpl3)))) ; choice of either license
1930
1931 (define-public qscintilla
1932 (package
1933 (name "qscintilla")
1934 (version "2.10.8")
1935 (source (origin
1936 (method url-fetch)
1937 (uri (string-append "mirror://sourceforge/pyqt/QScintilla2/"
1938 "QScintilla-" version "/QScintilla_gpl-"
1939 version ".tar.gz"))
1940 (sha256
1941 (base32
1942 "1swjr786w04r514pry9pn32ivza4il1cg35s60qy39cwc175pka6"))))
1943 (build-system gnu-build-system)
1944 (arguments
1945 `(#:phases
1946 (modify-phases %standard-phases
1947 (replace 'configure
1948 (lambda* (#:key outputs #:allow-other-keys)
1949 (let ((out (assoc-ref outputs "out")))
1950 (chdir "Qt4Qt5")
1951 (substitute* "qscintilla.pro"
1952 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
1953 (string-append out "/lib"))
1954 (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
1955 (string-append out "/include"))
1956 (("\\$\\$\\[QT_INSTALL_TRANSLATIONS\\]")
1957 (string-append out "/translations"))
1958 (("\\$\\$\\[QT_INSTALL_DATA\\]")
1959 (string-append out "/lib/qt$${QT_MAJOR_VERSION}"))
1960 (("\\$\\$\\[QT_HOST_DATA\\]")
1961 (string-append out "/lib/qt$${QT_MAJOR_VERSION}")))
1962 (invoke "qmake")))))))
1963 (native-inputs `(("qtbase" ,qtbase)))
1964 (home-page "https://www.riverbankcomputing.co.uk/software/qscintilla/intro")
1965 (synopsis "Qt port of the Scintilla C++ editor control")
1966 (description "QScintilla is a port to Qt of Neil Hodgson's Scintilla C++
1967 editor control. QScintilla includes features especially useful when editing
1968 and debugging source code. These include support for syntax styling, error
1969 indicators, code completion and call tips.")
1970 (license license:gpl3+)))
1971
1972 (define-public python-qscintilla
1973 (package (inherit qscintilla)
1974 (name "python-qscintilla")
1975 (arguments
1976 `(#:configure-flags
1977 (list "--pyqt=PyQt5"
1978 (string-append "--pyqt-sipdir="
1979 (assoc-ref %build-inputs "python-pyqt")
1980 "/share/sip")
1981 (string-append "--qsci-incdir="
1982 (assoc-ref %build-inputs "qscintilla")
1983 "/include")
1984 (string-append "--qsci-libdir="
1985 (assoc-ref %build-inputs "qscintilla")
1986 "/lib"))
1987 #:phases
1988 (modify-phases %standard-phases
1989 (replace 'configure
1990 (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
1991 (let ((out (assoc-ref outputs "out"))
1992 (python (assoc-ref inputs "python")))
1993 (chdir "Python")
1994 (apply invoke "python3" "configure.py"
1995 configure-flags)
1996 ;; Install to the right directory
1997 (substitute* '("Makefile"
1998 "Qsci/Makefile")
1999 (("\\$\\(INSTALL_ROOT\\)/gnu/store/[^/]+") out)
2000 (((string-append python "/lib"))
2001 (string-append out "/lib")))
2002 ;; And fix the installed.txt file
2003 (substitute* "installed.txt"
2004 (("/gnu/store/[^/]+") out)))
2005 #t)))))
2006 (inputs
2007 `(("qscintilla" ,qscintilla)
2008 ("python" ,python)
2009 ("python-pyqt" ,python-pyqt)))
2010 (description "QScintilla is a port to Qt of Neil Hodgson's Scintilla C++
2011 editor control. QScintilla includes features especially useful when editing
2012 and debugging source code. These include support for syntax styling, error
2013 indicators, code completion and call tips.
2014
2015 This package provides the Python bindings.")))
2016
2017 ;; PyQt only looks for modules in its own directory. It ignores environment
2018 ;; variables such as PYTHONPATH, so we need to build a union package to make
2019 ;; it work.
2020 (define-public python-pyqt+qscintilla
2021 (package (inherit python-pyqt)
2022 (name "python-pyqt+qscintilla")
2023 (source #f)
2024 (build-system trivial-build-system)
2025 (arguments
2026 '(#:modules ((guix build union))
2027 #:builder (begin
2028 (use-modules (ice-9 match)
2029 (guix build union))
2030 (match %build-inputs
2031 (((names . directories) ...)
2032 (union-build (assoc-ref %outputs "out")
2033 directories)
2034 #t)))))
2035 (inputs
2036 `(("python-pyqt" ,python-pyqt)
2037 ("python-qscintilla" ,python-qscintilla)))
2038 (synopsis "Union of PyQt and the Qscintilla extension")
2039 (description
2040 "This package contains the union of PyQt and the Qscintilla extension.")))
2041
2042 (define-public qtkeychain
2043 (package
2044 (name "qtkeychain")
2045 (version "0.9.1")
2046 (source
2047 (origin
2048 (method git-fetch)
2049 (uri (git-reference
2050 (url "https://github.com/frankosterfeld/qtkeychain/")
2051 (commit (string-append "v" version))))
2052 (file-name (git-file-name name version))
2053 (sha256
2054 (base32
2055 "0h4wgngn2yl35hapbjs24amkjfbzsvnna4ixfhn87snjnq5lmjbc"))))
2056 (build-system cmake-build-system)
2057 (native-inputs
2058 `(("pkg-config" ,pkg-config)
2059 ("qttools" ,qttools)))
2060 (inputs
2061 `(("qtbase" ,qtbase)))
2062 (arguments
2063 `(#:tests? #f ; No tests included
2064 #:phases
2065 (modify-phases %standard-phases
2066 (add-before 'configure 'set-qt-trans-dir
2067 (lambda _
2068 (substitute* "CMakeLists.txt"
2069 (("\\$\\{qt_translations_dir\\}")
2070 "${CMAKE_INSTALL_PREFIX}/share/qt5/translations"))
2071 #t)))))
2072 (home-page "https://github.com/frankosterfeld/qtkeychain")
2073 (synopsis "Qt API to store passwords")
2074 (description
2075 "QtKeychain is a Qt library to store passwords and other secret data
2076 securely. It will not store any data unencrypted unless explicitly requested.")
2077 (license license:bsd-3)))
2078
2079 (define-public qwt
2080 (package
2081 (name "qwt")
2082 (version "6.1.4")
2083 (source
2084 (origin
2085 (method url-fetch)
2086 (uri
2087 (string-append "mirror://sourceforge/qwt/qwt/"
2088 version "/qwt-" version ".tar.bz2"))
2089 (sha256
2090 (base32 "1navkcnmn0qz8kzsyqmk32d929zl72l0b580w1ica7z5559j2a8m"))))
2091 (build-system gnu-build-system)
2092 (inputs
2093 `(("qtbase" ,qtbase)
2094 ("qtsvg" ,qtsvg)
2095 ("qttools" ,qttools)))
2096 (arguments
2097 `(#:phases
2098 (modify-phases %standard-phases
2099 (replace 'configure
2100 (lambda* (#:key outputs #:allow-other-keys)
2101 (let* ((out (assoc-ref outputs "out"))
2102 (docdir (string-append out "/share/doc/qwt"))
2103 (incdir (string-append out "/include/qwt"))
2104 (pluginsdir (string-append out "/lib/qt5/plugins/designer"))
2105 (featuresdir (string-append out "/lib/qt5/mkspecs/features")))
2106 (substitute* '("qwtconfig.pri")
2107 (("^(\\s*QWT_INSTALL_PREFIX)\\s*=.*" _ x)
2108 (format #f "~a = ~a\n" x out))
2109 (("^(QWT_INSTALL_DOCS)\\s*=.*" _ x)
2110 (format #f "~a = ~a\n" x docdir))
2111 (("^(QWT_INSTALL_HEADERS)\\s*=.*" _ x)
2112 (format #f "~a = ~a\n" x incdir))
2113 (("^(QWT_INSTALL_PLUGINS)\\s*=.*" _ x)
2114 (format #f "~a = ~a\n" x pluginsdir))
2115 (("^(QWT_INSTALL_FEATURES)\\s*=.*" _ x)
2116 (format #f "~a = ~a\n" x featuresdir)))
2117 (substitute* '("doc/doc.pro")
2118 ;; We'll install them in the 'install-man-pages' phase.
2119 (("^unix:doc\\.files.*") ""))
2120 (invoke "qmake"))))
2121 (add-after 'install 'install-man-pages
2122 (lambda* (#:key outputs #:allow-other-keys)
2123 (let* ((out (assoc-ref outputs "out"))
2124 (man (string-append out "/share/man")))
2125 ;; Remove some incomplete manual pages.
2126 (for-each delete-file (find-files "doc/man/man3" "^_tmp.*"))
2127 (mkdir-p man)
2128 (copy-recursively "doc/man" man)
2129 #t))))))
2130 (home-page "http://qwt.sourceforge.net")
2131 (synopsis "Qt widgets for plots, scales, dials and other technical software
2132 GUI components")
2133 (description
2134 "The Qwt library contains widgets and components which are primarily useful
2135 for technical and scientific purposes. It includes a 2-D plotting widget,
2136 different kinds of sliders, and much more.")
2137 (license
2138 (list
2139 ;; The Qwt license is LGPL2.1 with some exceptions.
2140 (license:non-copyleft "http://qwt.sourceforge.net/qwtlicense.html")
2141 ;; textengines/mathml/qwt_mml_document.{cpp,h} is dual LGPL2.1/GPL3 (either).
2142 license:lgpl2.1 license:gpl3))))
2143
2144 (define-public qtwebkit
2145 (package
2146 (name "qtwebkit")
2147 (version "5.212.0-alpha2")
2148 (source
2149 (origin
2150 (method url-fetch)
2151 (uri (string-append "https://github.com/annulen/webkit/releases/download/"
2152 name "-" version "/" name "-" version ".tar.xz"))
2153 (sha256
2154 (base32
2155 "12lg7w00d8wsj672s1y5z5gm0xdcgs16nas0b5bgq4byavg03ygq"))
2156 (patches (search-patches "qtwebkit-pbutils-include.patch"))))
2157 (build-system cmake-build-system)
2158 (native-inputs
2159 `(("perl" ,perl)
2160 ("python" ,python-2.7)
2161 ("ruby" ,ruby)
2162 ("bison" ,bison)
2163 ("flex" ,flex)
2164 ("gperf" ,gperf)
2165 ("pkg-config" ,pkg-config)))
2166 (inputs
2167 `(("icu" ,icu4c)
2168 ("glib" ,glib)
2169 ("gst-plugins-base" ,gst-plugins-base)
2170 ("libjpeg" ,libjpeg)
2171 ("libpng" ,libpng)
2172 ("libwebp" ,libwebp)
2173 ("sqlite" ,sqlite)
2174 ("fontconfig" ,fontconfig)
2175 ("libxrender" ,libxrender)
2176 ("qtbase" ,qtbase)
2177 ("qtdeclarative" ,qtdeclarative)
2178 ("qtlocation" ,qtlocation)
2179 ("qtmultimedia" ,qtmultimedia)
2180 ("qtsensors" ,qtsensors)
2181 ("qtwebchannel" ,qtwebchannel)
2182 ("libxml2" ,libxml2)
2183 ("libxslt" ,libxslt)
2184 ("libx11" ,libx11)
2185 ("libxcomposite" ,libxcomposite)))
2186 (arguments
2187 `(#:tests? #f ; no apparent tests; it might be necessary to set
2188 ; ENABLE_API_TESTS, see CMakeLists.txt
2189
2190 ;; Parallel builds fail due to a race condition:
2191 ;; <https://bugs.gnu.org/34062>.
2192 #:parallel-build? #f
2193
2194 #:configure-flags (list ;"-DENABLE_API_TESTS=TRUE"
2195 "-DPORT=Qt"
2196 "-DUSE_LIBHYPHEN=OFF"
2197 "-DUSE_SYSTEM_MALLOC=ON"
2198 ;; XXX: relative dir installs to build dir?
2199 (string-append "-DECM_MKSPECS_INSTALL_DIR="
2200 %output "/lib/qt5/mkspecs/modules")
2201 ;; Sacrifice a little speed in order to link
2202 ;; libraries and test executables in a
2203 ;; reasonable amount of memory.
2204 "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--no-keep-memory"
2205 "-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-keep-memory")))
2206 (home-page "https://www.webkit.org")
2207 (synopsis "Web browser engine and classes to render and interact with web
2208 content")
2209 (description "QtWebKit provides a Web browser engine that makes it easy to
2210 embed content from the World Wide Web into your Qt application. At the same
2211 time Web content can be enhanced with native controls.")
2212 (license license:lgpl2.1+)))
2213
2214 (define-public dotherside
2215 (package
2216 (name "dotherside")
2217 (version "0.6.3")
2218 (source
2219 (origin
2220 (method url-fetch)
2221 (uri (string-append "https://github.com/filcuc/DOtherSide/"
2222 "archive/v" version ".tar.gz"))
2223 (file-name (string-append name "-" version ".tar.gz"))
2224 (sha256
2225 (base32
2226 "0azq7qlsrfdwbd6qsi7d3c1knn42qw0r47g43xf7clwbinapswpz"))))
2227 (build-system cmake-build-system)
2228 (native-inputs
2229 `(("qttools" ,qttools)))
2230 (inputs
2231 `(("qtbase" ,qtbase)
2232 ("qtdeclarative" ,qtdeclarative)))
2233 (home-page "https://filcuc.github.io/DOtherSide/index.html")
2234 (synopsis "C language library for creating bindings for the Qt QML language")
2235 (description
2236 "DOtherSide is a C language library for creating bindings for the
2237 QT QML language. The following features are implementable from
2238 a binding language:
2239 @itemize
2240 @item Creating custom QObject
2241 @item Creating custom QAbstractListModels
2242 @item Creating custom properties, signals and slots
2243 @item Creating from QML QObject defined in the binded language
2244 @item Creating from Singleton QML QObject defined in the binded language
2245 @end itemize\n")
2246 (license license:lgpl3))) ;version 3 only (+ exception)
2247
2248 ;; There have been no public releases yet.
2249 (define-public qtcolorwidgets
2250 (let ((commit "a95f72e935fe9e046061a1d1c3930cbfbcb533e0")
2251 (revision "1"))
2252 (package
2253 (name "qtcolorwidgets")
2254 (version (git-version "0" revision commit))
2255 (source (origin
2256 (method git-fetch)
2257 (uri (git-reference
2258 (url "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
2259 (commit commit)))
2260 (file-name (git-file-name name version))
2261 (sha256
2262 (base32
2263 "0dkiwlqh2gwhlp78c1fmchj3shl4p9inspcl96ya5aa8mn6kydy8"))))
2264 (build-system cmake-build-system)
2265 (arguments `(#:tests? #f)) ; There are no tests
2266 (native-inputs
2267 `(("qttools" ,qttools)))
2268 (inputs
2269 `(("qtbase" ,qtbase)))
2270 (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
2271 (synopsis "Color management widgets")
2272 (description "QtColorWidgets provides a Qt color dialog that is more
2273 user-friendly than the default @code{QColorDialog} and several other
2274 color-related widgets.")
2275 ;; Includes a license exception for combining with GPL2 code.
2276 (license license:lgpl3+))))