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