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