gnu: Add gpgmepp.
[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>
65e46ca0 5;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
bd677c2d
AE
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages qt)
7868000f 23 #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ lgpl3 x11-style))
bd677c2d
AE
24 #:use-module (guix packages)
25 #:use-module (guix download)
f198ffd0 26 #:use-module (guix build utils)
9e81af9e 27 #:use-module (guix build-system cmake)
bd677c2d 28 #:use-module (guix build-system gnu)
84ef83dd
AE
29 #:use-module (guix packages)
30 #:use-module (guix utils)
1e9ed0e3 31 #:use-module (gnu packages)
b332e366
AE
32 #:use-module (gnu packages bison)
33 #:use-module (gnu packages compression)
2cba3d6f
SB
34 #:use-module (gnu packages cups)
35 #:use-module (gnu packages databases)
b332e366 36 #:use-module (gnu packages fontutils)
0009ed71 37 #:use-module (gnu packages flex)
bc8ede01 38 #:use-module (gnu packages freedesktop)
8b6a5e0f 39 #:use-module (gnu packages gl)
b332e366 40 #:use-module (gnu packages glib)
0009ed71
SB
41 #:use-module (gnu packages gnuzilla)
42 #:use-module (gnu packages gperf)
f7fb0ccb 43 #:use-module (gnu packages gtk)
b332e366 44 #:use-module (gnu packages icu4c)
e55354b8 45 #:use-module (gnu packages image)
b332e366 46 #:use-module (gnu packages linux)
5f96f303 47 #:use-module (gnu packages databases)
0009ed71
SB
48 #:use-module (gnu packages pciutils)
49 #:use-module (gnu packages pcre)
b332e366
AE
50 #:use-module (gnu packages perl)
51 #:use-module (gnu packages pkg-config)
39fa8f6c 52 #:use-module (gnu packages pulseaudio)
b332e366 53 #:use-module (gnu packages python)
8b6a5e0f 54 #:use-module (gnu packages ruby)
cc2b77df 55 #:use-module (gnu packages tls)
0009ed71
SB
56 #:use-module (gnu packages xdisorg)
57 #:use-module (gnu packages xorg)
58 #:use-module (gnu packages xml))
bd677c2d 59
b332e366
AE
60(define-public qt
61 (package
62 (name "qt")
2470d779 63 (version "5.6.1-1")
b332e366
AE
64 (source (origin
65 (method url-fetch)
f7fb0ccb
AE
66 (uri
67 (string-append
68 "http://download.qt.io/official_releases/qt/"
69 (version-major+minor version)
70 "/" version
71 "/single/qt-everywhere-opensource-src-"
72 version ".tar.xz"))
b332e366 73 (sha256
f7fb0ccb 74 (base32
2470d779 75 "1nrn2wivjwdxc9q03gpsi336gcl9l2axi0xjbzsha5v6akmsf26f"))
14bcc1e1
AE
76 (modules '((guix build utils)))
77 (snippet
bc554b43
AE
78 '(begin
79 ;; Remove qtwebengine, which relies on a bundled copy of
80 ;; chromium. Not only does it fail compilation in qt 5.5:
81 ;; 3rdparty/chromium/ui/gfx/codec/jpeg_codec.cc:362:10:
82 ;; error: cannot convert ‘bool’ to ‘boolean’ in return
83 ;; it might also pose security problems.
84 ;; Alternatively, we could use the "-skip qtwebengine"
85 ;; configuration option.
86 (delete-file-recursively "qtwebengine")
87 ;; Remove one of the two bundled harfbuzz copies in addition
88 ;; to passing "-system-harfbuzz".
9c32e1fe
AE
89 (delete-file-recursively "qtbase/src/3rdparty/harfbuzz-ng")
90 ;; Remove the bundled sqlite copy in addition to
91 ;; passing "-system-sqlite".
92 (delete-file-recursively "qtbase/src/3rdparty/sqlite")))))
b332e366 93 (build-system gnu-build-system)
ef0cf53e
AE
94 (propagated-inputs
95 `(("mesa" ,mesa)))
b332e366 96 (inputs
b332e366
AE
97 `(("alsa-lib" ,alsa-lib)
98 ("dbus" ,dbus)
2cba3d6f 99 ("cups" ,cups)
0009ed71 100 ("expat" ,expat)
b332e366
AE
101 ("fontconfig" ,fontconfig)
102 ("freetype" ,freetype)
103 ("glib" ,glib)
f7fb0ccb 104 ("harfbuzz" ,harfbuzz)
b332e366 105 ("icu4c" ,icu4c)
f198ffd0 106 ("libjpeg" ,libjpeg)
2cba3d6f 107 ("libmng" ,libmng)
0009ed71 108 ("libpci" ,pciutils)
b332e366
AE
109 ("libpng" ,libpng)
110 ("libx11" ,libx11)
0009ed71
SB
111 ("libxcomposite" ,libxcomposite)
112 ("libxcursor" ,libxcursor)
113 ("libxfixes" ,libxfixes)
b332e366 114 ("libxi" ,libxi)
0009ed71 115 ("libxinerama" ,libxinerama)
b332e366 116 ("libxkbcommon" ,libxkbcommon)
0009ed71
SB
117 ("libxml2" ,libxml2)
118 ("libxrandr" ,libxrandr)
b332e366 119 ("libxrender" ,libxrender)
0009ed71
SB
120 ("libxslt" ,libxslt)
121 ("libxtst" ,libxtst)
122 ("mtdev" ,mtdev)
b332e366 123 ("mysql" ,mysql)
0009ed71 124 ("nss" ,nss)
b332e366 125 ("openssl" ,openssl)
2cba3d6f 126 ("postgresql" ,postgresql)
39fa8f6c 127 ("pulseaudio" ,pulseaudio)
0009ed71
SB
128 ("pcre" ,pcre)
129 ("sqlite" ,sqlite)
130 ("udev" ,eudev)
2cba3d6f 131 ("unixodbc" ,unixodbc)
b332e366
AE
132 ("xcb-util" ,xcb-util)
133 ("xcb-util-image" ,xcb-util-image)
134 ("xcb-util-keysyms" ,xcb-util-keysyms)
135 ("xcb-util-renderutil" ,xcb-util-renderutil)
136 ("xcb-util-wm" ,xcb-util-wm)
137 ("zlib" ,zlib)))
c4c4cc05 138 (native-inputs
0009ed71
SB
139 `(("bison" ,bison)
140 ("flex" ,flex)
141 ("gperf" ,gperf)
0009ed71
SB
142 ("perl" ,perl)
143 ("pkg-config" ,pkg-config)
144 ("python" ,python-2)
145 ("ruby" ,ruby)
ce0614dd 146 ("which" ,(@ (gnu packages base) which))))
b332e366 147 (arguments
46854e99
AE
148 `(;; FIXME: Disabling parallel building is a quick hack to avoid the
149 ;; failure described in
150 ;; https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00837.html
151 ;; A more structural fix is needed.
152 #:parallel-build? #f
153 #:phases
cce28b0c 154 (modify-phases %standard-phases
2470d779
AE
155 (add-after 'configure 'patch-bin-sh
156 (lambda _
157 (substitute* '("qtbase/config.status"
158 "qtbase/configure"
159 "qtbase/mkspecs/features/qt_functions.prf"
160 "qtbase/qmake/library/qmakebuiltins.cpp")
161 (("/bin/sh") (which "sh")))
162 #t))
cce28b0c
AE
163 (replace 'configure
164 (lambda* (#:key outputs #:allow-other-keys)
165 (let ((out (assoc-ref outputs "out")))
166 (substitute* '("configure" "qtbase/configure")
167 (("/bin/pwd") (which "pwd")))
168 (substitute* "qtbase/src/corelib/global/global.pri"
169 (("/bin/ls") (which "ls")))
170 ;; do not pass "--enable-fast-install", which makes the
171 ;; configure process fail
172 (zero? (system*
173 "./configure"
174 "-verbose"
175 "-prefix" out
176 "-opensource"
177 "-confirm-license"
4dd0a8b6
EF
178 ;; Do not build examples; if desired, these could go
179 ;; into a separate output, but for the time being, we
180 ;; prefer to save the space and build time.
181 "-nomake" "examples"
cce28b0c
AE
182 ;; Most "-system-..." are automatic, but some use
183 ;; the bundled copy by default.
184 "-system-sqlite"
185 "-system-harfbuzz"
186 ;; explicitly link with openssl instead of dlopening it
187 "-openssl-linked"
188 ;; explicitly link with dbus instead of dlopening it
189 "-dbus-linked"
190 ;; drop special machine instructions not supported
191 ;; on all instances of the target
192 ,@(if (string-prefix? "x86_64"
193 (or (%current-target-system)
194 (%current-system)))
195 '()
196 '("-no-sse2"))
197 "-no-sse3"
198 "-no-ssse3"
199 "-no-sse4.1"
200 "-no-sse4.2"
201 "-no-avx"
202 "-no-avx2"
203 "-no-mips_dsp"
204 "-no-mips_dspr2"))))))))
b332e366
AE
205 (home-page "http://qt-project.org/")
206 (synopsis "Cross-platform GUI library")
207 (description "Qt is a cross-platform application and UI framework for
208developers using C++ or QML, a CSS & JavaScript like language.")
f47638a3
LC
209 (license lgpl2.1)
210
211 ;; Qt 4: 'QBasicAtomicPointer' leads to build failures on MIPS;
212 ;; see <http://hydra.gnu.org/build/112828>.
213 ;; Qt 5: assembler error; see <http://hydra.gnu.org/build/112526>.
214 (supported-systems (delete "mips64el-linux" %supported-systems))))
1e9ed0e3
AE
215
216(define-public qt-4
217 (package (inherit qt)
d22b9397 218 (version "4.8.7")
1e9ed0e3
AE
219 (source (origin
220 (method url-fetch)
221 (uri (string-append "http://download.qt-project.org/official_releases/qt/"
222 (string-copy version 0 (string-rindex version #\.))
223 "/" version
89059aa1 224 "/qt-everywhere-opensource-src-"
1e9ed0e3
AE
225 version ".tar.gz"))
226 (sha256
227 (base32
d22b9397 228 "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272"))
fc1adab1 229 (patches (search-patches "qt4-ldflags.patch"))
7431edea
AE
230 (modules '((guix build utils)))
231 (snippet
232 ;; Remove webkit module, which is not built.
233 '(delete-file-recursively "src/3rdparty/webkit"))))
f7fb0ccb
AE
234 (inputs `(,@(alist-delete "harfbuzz"
235 (alist-delete "libjpeg" (package-inputs qt)))
e7e5a4f8
AE
236 ("libjepg" ,libjpeg-8)
237 ("libsm" ,libsm)))
31580979
LC
238
239 ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags,
240 ;; but we can't make them a separate output because "out" and "examples"
241 ;; would refer to each other.
242 (outputs '("out" ;112MiB core + 37MiB examples
243 "doc")) ;280MiB of HTML + code
1e9ed0e3
AE
244 (arguments
245 `(#:phases
cba632c4
LC
246 (modify-phases %standard-phases
247 (replace
1e9ed0e3
AE
248 'configure
249 (lambda* (#:key outputs #:allow-other-keys)
31580979
LC
250 (let ((out (assoc-ref outputs "out"))
251 (doc (assoc-ref outputs "doc")))
1e9ed0e3 252 (substitute* '("configure")
d2984346
LC
253 (("/bin/pwd") (which "pwd")))
254
206a5208
AE
255 (zero? (system*
256 "./configure"
257 "-verbose"
258 "-prefix" out
4b0f2ef7
LC
259 ;; Note: Don't pass '-docdir' since 'qmake' and
260 ;; libQtCore would record its value, thereby defeating
261 ;; the whole point of having a separate output.
ff1989a5
LC
262 "-datadir" (string-append out "/share/qt-" ,version
263 "/data")
264 "-importdir" (string-append out "/lib/qt-4"
265 "/imports")
266 "-plugindir" (string-append out "/lib/qt-4"
267 "/plugins")
268 "-translationdir" (string-append out "/share/qt-" ,version
269 "/translations")
31580979
LC
270 "-demosdir" (string-append out "/share/qt-" ,version
271 "/demos")
272 "-examplesdir" (string-append out "/share/qt-" ,version
273 "/examples")
206a5208
AE
274 "-opensource"
275 "-confirm-license"
ff0a8c59
AE
276 ;; explicitly link with dbus instead of dlopening it
277 "-dbus-linked"
7431edea
AE
278 ;; Skip the webkit module; it fails to build on armhf
279 ;; and, apart from that, may pose security risks.
280 "-no-webkit"
206a5208
AE
281 ;; drop special machine instructions not supported
282 ;; on all instances of the target
283 ,@(if (string-prefix? "x86_64"
284 (or (%current-target-system)
285 (%current-system)))
286 '()
287 '("-no-mmx"
1e9ed0e3
AE
288 "-no-3dnow"
289 "-no-sse"
206a5208
AE
290 "-no-sse2"))
291 "-no-sse3"
292 "-no-ssse3"
293 "-no-sse4.1"
294 "-no-sse4.2"
84811c22 295 "-no-avx")))))
4b0f2ef7
LC
296 (add-after
297 'install 'move-doc
298 (lambda* (#:key outputs #:allow-other-keys)
299 ;; Because of qt4-documentation-path.patch, documentation ends up
300 ;; being installed in OUT. Move it to the right place.
301 (let* ((out (assoc-ref outputs "out"))
302 (doc (assoc-ref outputs "doc"))
303 (olddoc (string-append out "/doc"))
304 (docdir (string-append doc "/share/doc/qt-" ,version)))
305 (mkdir-p (dirname docdir))
306
307 ;; Note: We can't use 'rename-file' here because OUT and DOC are
308 ;; different "devices" due to bind-mounts.
309 (copy-recursively olddoc docdir)
310 (delete-file-recursively olddoc)
311 #t))))))))
84ef83dd 312
7868000f
AE
313(define-public qtbase
314 (package
315 (name "qtbase")
c7386f4e 316 (version "5.6.1-1")
7868000f
AE
317 (source (origin
318 (method url-fetch)
319 (uri (string-append "https://download.qt.io/official_releases/qt/"
320 (version-major+minor version) "/" version
321 "/submodules/" name "-opensource-src-"
322 version ".tar.xz"))
323 (sha256
c7386f4e
EF
324 (base32
325 "0fbwprlhqmdyhh2wb9122fcpq7pbil530iak482b9sy5gqs7i5ij"))
7868000f
AE
326 (modules '((guix build utils)))
327 (snippet
328 '(begin
329 ;; Remove one of the two bundled harfbuzz copies in addition
330 ;; to passing "-system-harfbuzz".
331 (delete-file-recursively "src/3rdparty/harfbuzz-ng")
332 ;; Remove the bundled sqlite copy in addition to
333 ;; passing "-system-sqlite".
334 (delete-file-recursively "src/3rdparty/sqlite")))))
335 (build-system gnu-build-system)
48d4ce6e
EF
336 (propagated-inputs
337 `(("mesa" ,mesa)))
7868000f
AE
338 (inputs
339 `(("alsa-lib" ,alsa-lib)
340 ("cups" ,cups)
341 ("dbus" ,dbus)
f66970a7 342 ("eudev" ,eudev)
7868000f
AE
343 ("expat" ,expat)
344 ("fontconfig" ,fontconfig)
345 ("freetype" ,freetype)
346 ("glib" ,glib)
347 ("harfbuzz" ,harfbuzz)
348 ("icu4c" ,icu4c)
f66970a7 349 ("libinput" ,libinput)
7868000f
AE
350 ("libjpeg" ,libjpeg)
351 ("libmng" ,libmng)
352 ("libpng" ,libpng)
353 ("libx11" ,libx11)
354 ("libxcomposite" ,libxcomposite)
355 ("libxcursor" ,libxcursor)
356 ("libxfixes" ,libxfixes)
357 ("libxi" ,libxi)
358 ("libxinerama" ,libxinerama)
359 ("libxkbcommon" ,libxkbcommon)
360 ("libxml2" ,libxml2)
361 ("libxrandr" ,libxrandr)
362 ("libxrender" ,libxrender)
363 ("libxslt" ,libxslt)
364 ("libxtst" ,libxtst)
365 ("mtdev" ,mtdev)
366 ("mysql" ,mysql)
367 ("nss" ,nss)
368 ("openssl" ,openssl)
369 ("pcre" ,pcre)
370 ("postgresql" ,postgresql)
371 ("pulseaudio" ,pulseaudio)
372 ("sqlite" ,sqlite)
373 ("unixodbc" ,unixodbc)
374 ("xcb-util" ,xcb-util)
375 ("xcb-util-image" ,xcb-util-image)
376 ("xcb-util-keysyms" ,xcb-util-keysyms)
377 ("xcb-util-renderutil" ,xcb-util-renderutil)
378 ("xcb-util-wm" ,xcb-util-wm)
379 ("zlib" ,zlib)))
380 (native-inputs
381 `(("bison" ,bison)
382 ("flex" ,flex)
383 ("gperf" ,gperf)
384 ("perl" ,perl)
385 ("pkg-config" ,pkg-config)
386 ("python" ,python-2)
387 ("ruby" ,ruby)
388 ("which" ,(@ (gnu packages base) which))))
389 (arguments
390 `(#:phases
391 (modify-phases %standard-phases
392 (add-after 'configure 'patch-bin-sh
393 (lambda _
394 (substitute* '("config.status"
395 "configure"
396 "mkspecs/features/qt_functions.prf"
397 "qmake/library/qmakebuiltins.cpp")
398 (("/bin/sh") (which "sh")))
399 #t))
400 (replace 'configure
401 (lambda* (#:key outputs #:allow-other-keys)
402 (let ((out (assoc-ref outputs "out")))
403 (substitute* "configure"
404 (("/bin/pwd") (which "pwd")))
405 (substitute* "src/corelib/global/global.pri"
406 (("/bin/ls") (which "ls")))
7972d8a2
AE
407 ;; The configuration files for other Qt5 packages are searched
408 ;; through a call to "find_package" in Qt5Config.cmake, which
409 ;; disables the use of CMAKE_PREFIX_PATH via the parameter
410 ;; "NO_DEFAULT_PATH". Re-enable it so that the different
411 ;; components can be installed in different places.
412 (substitute* (find-files "." ".*\\.cmake")
413 (("NO_DEFAULT_PATH") ""))
7868000f
AE
414 ;; do not pass "--enable-fast-install", which makes the
415 ;; configure process fail
416 (zero? (system*
417 "./configure"
418 "-verbose"
419 "-prefix" out
420 "-opensource"
421 "-confirm-license"
422 ;; Do not build examples; if desired, these could go
423 ;; into a separate output, but for the time being, we
424 ;; prefer to save the space and build time.
425 "-nomake" "examples"
426 ;; Most "-system-..." are automatic, but some use
427 ;; the bundled copy by default.
428 "-system-sqlite"
429 "-system-harfbuzz"
430 ;; explicitly link with openssl instead of dlopening it
431 "-openssl-linked"
432 ;; explicitly link with dbus instead of dlopening it
433 "-dbus-linked"
434 ;; drop special machine instructions not supported
435 ;; on all instances of the target
436 ,@(if (string-prefix? "x86_64"
437 (or (%current-target-system)
438 (%current-system)))
439 '()
440 '("-no-sse2"))
441 "-no-sse3"
442 "-no-ssse3"
443 "-no-sse4.1"
444 "-no-sse4.2"
445 "-no-avx"
446 "-no-avx2"
447 "-no-mips_dsp"
448 "-no-mips_dspr2"))))))))
449 (home-page "https://www.qt.io/")
450 (synopsis "Cross-platform GUI library")
451 (description "Qt is a cross-platform application and UI framework for
452developers using C++ or QML, a CSS & JavaScript like language.")
453 (license (list lgpl2.1 lgpl3))))
454
19c17631
EF
455(define-public qtsvg
456 (package (inherit qtbase)
457 (name "qtsvg")
7de7d8a6 458 (version "5.6.1-1")
19c17631
EF
459 (source (origin
460 (method url-fetch)
461 (uri (string-append "https://download.qt.io/official_releases/qt/"
462 (version-major+minor version) "/" version
463 "/submodules/" name "-opensource-src-"
464 version ".tar.xz"))
465 (sha256
466 (base32
7de7d8a6 467 "1w0jvhgaiddafcms2nv8wl1klg07lncmjwm1zhdw3l6rxi9071sw"))))
48d4ce6e 468 (propagated-inputs `())
19c17631
EF
469 (native-inputs `(("perl" ,perl)))
470 (inputs
471 `(("mesa" ,mesa)
472 ("qtbase" ,qtbase)
473 ("zlib" ,zlib)))
474 (arguments
475 `(#:phases
476 (modify-phases %standard-phases
477 (replace 'configure
478 (lambda* (#:key outputs #:allow-other-keys)
479 (let ((out (assoc-ref outputs "out")))
480 (zero? (system* "qmake" (string-append "PREFIX=" out))))))
481 (add-before 'install 'fix-Makefiles
482 (lambda* (#:key inputs outputs #:allow-other-keys)
483 (let ((out (assoc-ref outputs "out"))
484 (qtbase (assoc-ref inputs "qtbase")))
485 (substitute* (find-files "." "Makefile")
486 (((string-append "INSTALL_ROOT)" qtbase))
487 (string-append "INSTALL_ROOT)" out)))))))))))
488
9b694210
EF
489(define-public qtimageformats
490 (package (inherit qtsvg)
491 (name "qtimageformats")
1c16029b 492 (version "5.6.1-1")
9b694210
EF
493 (source (origin
494 (method url-fetch)
495 (uri (string-append "https://download.qt.io/official_releases/qt/"
496 (version-major+minor version) "/" version
497 "/submodules/" name "-opensource-src-"
498 version ".tar.xz"))
499 (sha256
500 (base32
1c16029b 501 "1p98acvsm3azka2by1ph4gdb31qbnndrr5k5wns4xk2d760y8ifc"))))
9b694210
EF
502 (native-inputs `())
503 (inputs
504 `(("libmng" ,libmng)
505 ("libtiff" ,libtiff)
506 ("libwebp" ,libwebp)
507 ("mesa" ,mesa)
508 ("qtbase" ,qtbase)
509 ("zlib" ,zlib)))))
510
f6c13613
EF
511(define-public qtx11extras
512 (package (inherit qtsvg)
513 (name "qtx11extras")
0835e228 514 (version "5.6.1-1")
f6c13613
EF
515 (source (origin
516 (method url-fetch)
517 (uri (string-append "https://download.qt.io/official_releases/qt/"
518 (version-major+minor version) "/" version
519 "/submodules/" name "-opensource-src-"
520 version ".tar.xz"))
521 (sha256
522 (base32
0835e228 523 "0yj5yg2dqkrwbgbicmk2rpqsagmi8dsffkrprpsj0fmkx4awhv5y"))))
f6c13613
EF
524 (native-inputs `(("perl" ,perl)))
525 (inputs
526 `(("mesa" ,mesa)
527 ("qtbase" ,qtbase)))))
528
98eec712
EF
529(define-public qtxmlpatterns
530 (package (inherit qtsvg)
531 (name "qtxmlpatterns")
d547a197 532 (version "5.6.1-1")
98eec712
EF
533 (source (origin
534 (method url-fetch)
535 (uri (string-append "https://download.qt.io/official_releases/qt/"
536 (version-major+minor version) "/" version
537 "/submodules/" name "-opensource-src-"
538 version ".tar.xz"))
539 (sha256
540 (base32
d547a197 541 "1966rrk7f6c55k57j33rffdjs77kk4mawrnnl8yv1ckcirxc3np1"))))
98eec712
EF
542 (native-inputs `(("perl" ,perl)))
543 (inputs `(("qtbase" ,qtbase)))))
544
e3a2ed81
EF
545(define-public qtdeclarative
546 (package (inherit qtsvg)
547 (name "qtdeclarative")
f3a3210c 548 (version "5.6.1-1")
e3a2ed81
EF
549 (source (origin
550 (method url-fetch)
551 (uri (string-append "https://download.qt.io/official_releases/qt/"
552 (version-major+minor version) "/" version
553 "/submodules/" name "-opensource-src-"
554 version ".tar.xz"))
555 (sha256
556 (base32
f3a3210c 557 "094gx5mzqzcga97y7ihf052b6i5iv512lh7m0702m5q94nsn1pqw"))))
e3a2ed81
EF
558 (native-inputs
559 `(("perl" ,perl)
560 ("pkg-config" ,pkg-config)
561 ("python" ,python-2)
562 ("qtsvg" ,qtsvg)
563 ("qtxmlpatterns" ,qtxmlpatterns)))
564 (inputs
565 `(("mesa" ,mesa)
566 ("qtbase" ,qtbase)))))
567
e98cb96d
EF
568(define-public qtconnectivity
569 (package (inherit qtsvg)
570 (name "qtconnectivity")
4254b206 571 (version "5.6.1-1")
e98cb96d
EF
572 (source (origin
573 (method url-fetch)
574 (uri (string-append "https://download.qt.io/official_releases/qt/"
575 (version-major+minor version) "/" version
576 "/submodules/" name "-opensource-src-"
577 version ".tar.xz"))
578 (sha256
579 (base32
4254b206 580 "0sr6sxp0q45pacs25knr28139xdrphcjgrwlksdhdpsryfw19mzi"))))
e98cb96d
EF
581 (native-inputs
582 `(("perl" ,perl)
583 ("pkg-config" ,pkg-config)
584 ("qtdeclarative" ,qtdeclarative)))
585 (inputs
586 `(("bluez" ,bluez)
587 ("qtbase" ,qtbase)))))
588
cac893ec
EF
589(define-public qtwebsockets
590 (package (inherit qtsvg)
591 (name "qtwebsockets")
fb767deb 592 (version "5.6.1-1")
cac893ec
EF
593 (source (origin
594 (method url-fetch)
595 (uri (string-append "https://download.qt.io/official_releases/qt/"
596 (version-major+minor version) "/" version
597 "/submodules/" name "-opensource-src-"
598 version ".tar.xz"))
599 (sha256
600 (base32
fb767deb 601 "1fz0x8570zxc00a22skd848svma3p2g3xyxj14jq10559jihqqil"))))
cac893ec
EF
602 (native-inputs
603 `(("perl" ,perl)
604 ("qtdeclarative" ,qtdeclarative)))
605 (inputs `(("qtbase" ,qtbase)))))
606
3474767c
EF
607(define-public qtsensors
608 (package (inherit qtsvg)
609 (name "qtsensors")
2743daff 610 (version "5.6.1-1")
3474767c
EF
611 (source (origin
612 (method url-fetch)
613 (uri (string-append "https://download.qt.io/official_releases/qt/"
614 (version-major+minor version) "/" version
615 "/submodules/" name "-opensource-src-"
616 version ".tar.xz"))
617 (sha256
618 (base32
2743daff 619 "0kcrvf6vzn6g2v2m70f9r3raalzmfp48rwjlqhss3w84jfz3y04r"))))
3474767c
EF
620 (native-inputs
621 `(("perl" ,perl)
622 ("qtdeclarative" ,qtdeclarative)))
623 (inputs `(("qtbase" ,qtbase)))))
624
15378f93
EF
625(define-public qtmultimedia
626 (package (inherit qtsvg)
627 (name "qtmultimedia")
99f6f56f 628 (version "5.6.1-1")
15378f93
EF
629 (source (origin
630 (method url-fetch)
631 (uri (string-append "https://download.qt.io/official_releases/qt/"
632 (version-major+minor version) "/" version
633 "/submodules/" name "-opensource-src-"
634 version ".tar.xz"))
635 (sha256
636 (base32
99f6f56f 637 "0paffx0614ivjbf87lr9klpbqik6r1pzbc14l41np6d9jv3dqa2f"))))
15378f93
EF
638 (native-inputs
639 `(("perl" ,perl)
640 ("pkg-config" ,pkg-config)
641 ("python" ,python-2)
642 ("qtdeclarative" ,qtdeclarative)))
643 (inputs
644 `(("alsa-lib" ,alsa-lib)
645 ("mesa" ,mesa)
646 ("pulseaudio" ,pulseaudio)
647 ("qtbase" ,qtbase)))))
648
bc8ede01
EF
649(define-public qtwayland
650 (package (inherit qtsvg)
651 (name "qtwayland")
66f26a35 652 (version "5.6.1-1")
bc8ede01
EF
653 (source (origin
654 (method url-fetch)
655 (uri (string-append "https://download.qt.io/official_releases/qt/"
656 (version-major+minor version) "/" version
657 "/submodules/" name "-opensource-src-"
658 version ".tar.xz"))
659 (sha256
660 (base32
66f26a35 661 "1fnvgpi49ilds3ah9iizxj9qhhb5rnwqd9h03bhkwf0ydywv52c4"))))
bc8ede01
EF
662 (native-inputs
663 `(("glib" ,glib)
664 ("perl" ,perl)
665 ("pkg-config" ,pkg-config)
666 ("qtdeclarative" ,qtdeclarative)))
667 (inputs
668 `(("fontconfig" ,fontconfig)
669 ("freetype" ,freetype)
670 ("libx11" ,libx11)
671 ("libxcomposite" ,libxcomposite)
672 ("libxext" ,libxext)
673 ("libxkbcommon" ,libxkbcommon)
674 ("libxrender" ,libxrender)
675 ("mesa" ,mesa)
676 ("mtdev" ,mtdev)
677 ("qtbase" ,qtbase)
678 ("wayland" ,wayland)))))
679
00806f2b
EF
680(define-public qtserialport
681 (package (inherit qtsvg)
682 (name "qtserialport")
33741e16 683 (version "5.6.1-1")
00806f2b
EF
684 (source (origin
685 (method url-fetch)
686 (uri (string-append "https://download.qt.io/official_releases/qt/"
687 (version-major+minor version) "/" version
688 "/submodules/" name "-opensource-src-"
689 version ".tar.xz"))
690 (sha256
691 (base32
33741e16 692 "135cbgghxk0c6dblmyyrw6znfb9m8sac9hhyc2dm6vq7vzy8id52"))))
00806f2b 693 (native-inputs `(("perl" ,perl)))
33741e16
EF
694 (inputs
695 `(("qtbase" ,qtbase)
696 ("eudev" ,eudev)))))
00806f2b 697
f5377013
EF
698(define-public qtwebchannel
699 (package (inherit qtsvg)
700 (name "qtwebchannel")
a2a25656 701 (version "5.6.1-1")
f5377013
EF
702 (source (origin
703 (method url-fetch)
704 (uri (string-append "https://download.qt.io/official_releases/qt/"
705 (version-major+minor version) "/" version
706 "/submodules/" name "-opensource-src-"
707 version ".tar.xz"))
708 (sha256
709 (base32
a2a25656 710 "10kys3ppjkj60fs1s335fdcpdsbxsjn6ibvm6zph9gqbncabd2l7"))))
f5377013
EF
711 (native-inputs
712 `(("perl" ,perl)
713 ("qtdeclarative" ,qtdeclarative)
714 ("qtwebsockets" ,qtwebsockets)))
715 (inputs `(("qtbase" ,qtbase)))))
716
d5ca54ce
EF
717(define-public qtlocation
718 (package (inherit qtsvg)
719 (name "qtlocation")
677b98ae 720 (version "5.6.1-1")
d5ca54ce
EF
721 (source (origin
722 (method url-fetch)
723 (uri (string-append "https://download.qt.io/official_releases/qt/"
724 (version-major+minor version) "/" version
725 "/submodules/" name "-opensource-src-"
726 version ".tar.xz"))
727 (sha256
728 (base32
677b98ae 729 "0my4pbcxa58yzvdh65l5qx99ln03chjr5c3ml5v37wfk7nx23k69"))))
d5ca54ce
EF
730 (native-inputs
731 `(("perl" ,perl)
732 ("qtdeclarative" ,qtdeclarative)
733 ;("qtquickcontrols" ,qtquickcontrols)
734 ("qtserialport" ,qtserialport)))
735 (inputs `(("qtbase" ,qtbase)))))
736
d438c968
EF
737(define-public qttools
738 (package (inherit qtsvg)
739 (name "qttools")
095b7fea 740 (version "5.6.1-1")
d438c968
EF
741 (source (origin
742 (method url-fetch)
743 (uri (string-append "https://download.qt.io/official_releases/qt/"
744 (version-major+minor version) "/" version
745 "/submodules/" name "-opensource-src-"
746 version ".tar.xz"))
747 (sha256
748 (base32
095b7fea 749 "0haic027a2d7p7k8xz83fbvci4a4dln34360rlwgy7hlyy5m4nip"))))
d438c968
EF
750 (native-inputs
751 `(("perl" ,perl)
752 ("qtdeclarative" ,qtdeclarative)))
753 (inputs
754 `(("mesa" ,mesa)
755 ("qtbase" ,qtbase)))))
756
4742c4de
EF
757(define-public qtscript
758 (package (inherit qtsvg)
759 (name "qtscript")
760 (version "5.6.1-1")
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
769 "1gini9483flqa9q4a4bl81bh7g5s408bycqykqhgbklmfd29y5lx"))))
770 (native-inputs
771 `(("perl" ,perl)
772 ("qttools" ,qttools)))
773 (inputs
774 `(("qtbase" ,qtbase)))))
775
84ef83dd
AE
776(define-public python-sip
777 (package
778 (name "python-sip")
8fa7f8d9 779 (version "4.18")
84ef83dd
AE
780 (source
781 (origin
782 (method url-fetch)
783 (uri
784 (string-append "mirror://sourceforge/pyqt/sip/"
8fa7f8d9 785 "sip-" version "/sip-" version ".tar.gz"))
84ef83dd
AE
786 (sha256
787 (base32
8fa7f8d9 788 "1dlw4kyiwd9bzmd1djm79c121r219abaz86lvizdk6ksq20mrp7i"))))
84ef83dd
AE
789 (build-system gnu-build-system)
790 (native-inputs
791 `(("python" ,python-wrapper)))
792 (arguments
793 `(#:tests? #f ; no check target
e8bdd73a
AE
794 #:modules ((srfi srfi-1)
795 ,@%gnu-build-system-modules)
84ef83dd 796 #:phases
39766868
EF
797 (modify-phases %standard-phases
798 (replace 'configure
799 (lambda* (#:key inputs outputs #:allow-other-keys)
800 (let* ((out (assoc-ref outputs "out"))
801 (bin (string-append out "/bin"))
802 (include (string-append out "/include"))
803 (python (assoc-ref inputs "python"))
804 (python-version
805 (last (string-split python #\-)))
806 (python-major+minor
807 (string-join
808 (take (string-split python-version #\.) 2)
809 "."))
810 (lib (string-append out "/lib/python"
811 python-major+minor
812 "/site-packages")))
813 (zero?
814 (system* "python" "configure.py"
815 "--bindir" bin
816 "--destdir" lib
817 "--incdir" include))))))))
818 (home-page "https://www.riverbankcomputing.com/software/sip/intro")
84ef83dd
AE
819 (synopsis "Python binding creator for C and C++ libraries")
820 (description
821 "SIP is a tool to create Python bindings for C and C++ libraries. It
822was originally developed to create PyQt, the Python bindings for the Qt
823toolkit, but can be used to create bindings for any C or C++ library.
824
825SIP comprises a code generator and a Python module. The code generator
826processes a set of specification files and generates C or C++ code, which
827is then compiled to create the bindings extension module. The SIP Python
828module provides support functions to the automatically generated code.")
829 ;; There is a choice between a python like license, gpl2 and gpl3.
830 ;; For compatibility with pyqt, we need gpl3.
831 (license gpl3)))
832
833(define-public python2-sip
834 (package (inherit python-sip)
835 (name "python2-sip")
836 (native-inputs
837 `(("python" ,python-2)))))
014e7dd8
AE
838
839(define-public python-pyqt
840 (package
841 (name "python-pyqt")
2be06813 842 (version "5.6")
014e7dd8
AE
843 (source
844 (origin
845 (method url-fetch)
846 (uri
847 (string-append "mirror://sourceforge/pyqt/PyQt5/"
2be06813 848 "PyQt-" version "/PyQt5_gpl-"
014e7dd8
AE
849 version ".tar.gz"))
850 (sha256
851 (base32
2be06813 852 "1qgh42zsr9jppl9k7fcdbhxcd1wrb7wyaj9lng9nxfa19in1lj1f"))
fc1adab1 853 (patches (search-patches "pyqt-configure.patch"))))
014e7dd8
AE
854 (build-system gnu-build-system)
855 (native-inputs
856 `(("python-sip" ,python-sip)
2be06813 857 ("qtbase" ,qtbase))) ; for qmake
014e7dd8
AE
858 (inputs
859 `(("python" ,python-wrapper)))
860 (arguments
e8bdd73a
AE
861 `(#:modules ((srfi srfi-1)
862 ,@%gnu-build-system-modules)
863 #:phases
eef988c8
EF
864 (modify-phases %standard-phases
865 (replace 'configure
866 (lambda* (#:key inputs outputs #:allow-other-keys)
867 (let* ((out (assoc-ref outputs "out"))
868 (bin (string-append out "/bin"))
869 (sip (string-append out "/share/sip"))
870 (plugins (string-append out "/plugins"))
871 (designer (string-append plugins "/designer"))
872 (qml (string-append plugins "/PyQt5"))
873 (python (assoc-ref inputs "python"))
874 (python-version
875 (last (string-split python #\-)))
876 (python-major+minor
877 (string-join
878 (take (string-split python-version #\.) 2)
879 "."))
880 (lib (string-append out "/lib/python"
881 python-major+minor
882 "/site-packages")))
883 (zero? (system* "python" "configure.py"
884 "--confirm-license"
885 "--bindir" bin
886 "--destdir" lib
887 "--designer-plugindir" designer
888 "--qml-plugindir" qml
889 "--sipdir" sip))))))))
890 (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
014e7dd8
AE
891 (synopsis "Python bindings for Qt")
892 (description
893 "PyQt is a set of Python v2 and v3 bindings for the Qt application
894framework. The bindings are implemented as a set of Python modules and
895contain over 620 classes.")
896 (license gpl3)))
897
898(define-public python2-pyqt
899 (package (inherit python-pyqt)
900 (name "python2-pyqt")
901 (native-inputs
902 `(("python-sip" ,python2-sip)
2be06813 903 ("qtbase" ,qtbase)))
014e7dd8
AE
904 (inputs
905 `(("python" ,python-2)))))
3e291958 906
4a8c35e1
AE
907(define-public python-pyqt-5.5
908 (package (inherit python-pyqt)
909 (version "5.5")
910 (source
911 (origin
912 (method url-fetch)
913 (uri
914 (string-append "mirror://sourceforge/pyqt/PyQt5/"
915 "PyQt-" version "/PyQt-gpl-"
916 version ".tar.gz"))
917 (sha256
918 (base32
919 "056qmkv02wdcfblqdaxiswrgn4wa88sz22i1x58dpb1iniavplfd"))
920 (patches (search-patches "pyqt-configure.patch"))))
921 (native-inputs
922 `(("python-sip" ,python-sip)
923 ("qt" ,qt)))))
924
925(define-public python2-pyqt-5.5
926 (package (inherit python-pyqt-5.5)
927 (name "python2-pyqt")
928 (native-inputs
929 `(("python-sip" ,python2-sip)
930 ("qt" ,qt)))
931 (inputs
932 `(("python" ,python-2)))))
933
3e291958
AE
934(define-public python-pyqt-4
935 (package (inherit python-pyqt)
936 (name "python-pyqt")
99755491 937 (version "4.11.4")
3e291958
AE
938 (source
939 (origin
940 (method url-fetch)
941 (uri
942 (string-append "mirror://sourceforge/pyqt/PyQt4/"
943 "PyQt-" version "/PyQt-x11-gpl-"
944 version ".tar.gz"))
945 (sha256
946 (base32
99755491 947 "01zlviy5lq8g6db84wnvvpsrfnip9lbcpxagsyqa6as3jmsff7zw"))))
3e291958
AE
948 (native-inputs
949 `(("python-sip" ,python-sip)
950 ("qt" ,qt-4)))
951 (arguments
952 `(#:tests? #f ; no check target
e8bdd73a
AE
953 #:modules ((srfi srfi-1)
954 ,@%gnu-build-system-modules)
3e291958
AE
955 #:phases
956 (alist-replace
957 'configure
958 (lambda* (#:key inputs outputs #:allow-other-keys)
959 (let* ((out (assoc-ref outputs "out"))
960 (bin (string-append out "/bin"))
961 (sip (string-append out "/share/sip"))
e8bdd73a 962 (python (assoc-ref inputs "python"))
3e291958 963 (python-version
e8bdd73a
AE
964 (last (string-split python #\-)))
965 (python-major+minor
966 (string-join
967 (take (string-split python-version #\.) 2)
968 "."))
3e291958 969 (lib (string-append out "/lib/python"
e8bdd73a 970 python-major+minor
3e291958
AE
971 "/site-packages")))
972 (zero? (system* "python" "configure.py"
973 "--confirm-license"
974 "--bindir" bin
975 "--destdir" lib
976 "--sipdir" sip))))
977 %standard-phases)))
978 (license (list gpl2 gpl3)))) ; choice of either license
979
9e81af9e
EF
980(define-public qtkeychain
981 (package
982 (name "qtkeychain")
6e8dee98 983 (version "0.7.0")
9e81af9e
EF
984 (source
985 (origin
986 (method url-fetch)
987 (uri (string-append "https://github.com/frankosterfeld/qtkeychain/"
988 "archive/v" version ".tar.gz"))
989 (file-name (string-append name "-" version ".tar.gz"))
990 (sha256
6e8dee98 991 (base32 "0fka5q5cdzlf79igcjgbnb2smvwbwfasqawkzkbr34whispgm6lz"))))
9e81af9e
EF
992 (build-system cmake-build-system)
993 (inputs
b3546174 994 `(("qt" ,qt)))
9e81af9e
EF
995 (arguments
996 `(#:tests? #f ; No tests included
997 #:phases
998 (modify-phases %standard-phases
999 (add-before
1000 'configure 'set-qt-trans-dir
1001 (lambda _
1002 (substitute* "CMakeLists.txt"
1003 (("\\$\\{qt_translations_dir\\}")
1004 "${CMAKE_INSTALL_PREFIX}/share/qt/translations")))))))
1005 (home-page "https://github.com/frankosterfeld/qtkeychain")
1006 (synopsis "Qt API to store passwords")
1007 (description
1008 "QtKeychain is a Qt library to store passwords and other secret data
1009securely. It will not store any data unencrypted unless explicitly requested.")
1010 (license bsd-3)))