gnu: qt@4: Build with libjpeg-turbo.
[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>
9b65dea8 4;;; Copyright © 2015, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
2879e605 5;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
47956fa0 6;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
fc381a33 7;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
6feb86f4 8;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
3befd0a9 9;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
506cbdb3 10;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
04162e83 11;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
359e30c9 12;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
0995a569 13;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
2c7511fb 14;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
37a3abb1 15;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
db481636 16;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
bd677c2d
AE
17;;;
18;;; This file is part of GNU Guix.
19;;;
20;;; GNU Guix is free software; you can redistribute it and/or modify it
21;;; under the terms of the GNU General Public License as published by
22;;; the Free Software Foundation; either version 3 of the License, or (at
23;;; your option) any later version.
24;;;
25;;; GNU Guix is distributed in the hope that it will be useful, but
26;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28;;; GNU General Public License for more details.
29;;;
30;;; You should have received a copy of the GNU General Public License
31;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33(define-module (gnu packages qt)
225941b0 34 #:use-module ((guix licenses) #:prefix license:)
bd677c2d
AE
35 #:use-module (guix packages)
36 #:use-module (guix download)
2879e605 37 #:use-module (guix git-download)
9e81af9e 38 #:use-module (guix build-system cmake)
bd677c2d 39 #:use-module (guix build-system gnu)
2456153a 40 #:use-module (guix build-system trivial)
eb5af18e 41 #:use-module (guix build-system python)
84ef83dd 42 #:use-module (guix packages)
02511196 43 #:use-module (guix deprecation)
84ef83dd 44 #:use-module (guix utils)
1e9ed0e3 45 #:use-module (gnu packages)
37a3abb1 46 #:use-module (gnu packages base)
b332e366 47 #:use-module (gnu packages bison)
37a3abb1 48 #:use-module (gnu packages cmake)
b332e366 49 #:use-module (gnu packages compression)
2cba3d6f 50 #:use-module (gnu packages cups)
2c7511fb 51 #:use-module (gnu packages curl)
2cba3d6f 52 #:use-module (gnu packages databases)
aa8c0ada 53 #:use-module (gnu packages documentation)
b332e366 54 #:use-module (gnu packages fontutils)
0009ed71 55 #:use-module (gnu packages flex)
bc8ede01 56 #:use-module (gnu packages freedesktop)
86b995dc 57 #:use-module (gnu packages gcc)
db481636 58 #:use-module (gnu packages ghostscript)
8b6a5e0f 59 #:use-module (gnu packages gl)
b332e366 60 #:use-module (gnu packages glib)
db481636 61 #:use-module (gnu packages gnupg)
0009ed71 62 #:use-module (gnu packages gperf)
04231311 63 #:use-module (gnu packages gstreamer)
f7fb0ccb 64 #:use-module (gnu packages gtk)
b332e366 65 #:use-module (gnu packages icu4c)
e55354b8 66 #:use-module (gnu packages image)
db481636 67 #:use-module (gnu packages libevent)
b332e366 68 #:use-module (gnu packages linux)
37a3abb1 69 #:use-module (gnu packages llvm)
04f8decf 70 #:use-module (gnu packages maths)
db481636 71 #:use-module (gnu packages ninja)
aff0cce9 72 #:use-module (gnu packages nss)
0009ed71
SB
73 #:use-module (gnu packages pciutils)
74 #:use-module (gnu packages pcre)
b332e366
AE
75 #:use-module (gnu packages perl)
76 #:use-module (gnu packages pkg-config)
39fa8f6c 77 #:use-module (gnu packages pulseaudio)
db481636 78 #:use-module (gnu packages protobuf)
b332e366 79 #:use-module (gnu packages python)
44d10b1f 80 #:use-module (gnu packages python-xyz)
db481636 81 #:use-module (gnu packages regex)
8b6a5e0f 82 #:use-module (gnu packages ruby)
51519fd3 83 #:use-module (gnu packages sdl)
db481636 84 #:use-module (gnu packages serialization)
cd0322a3 85 #:use-module (gnu packages sqlite)
db481636 86 #:use-module (gnu packages telephony)
cc2b77df 87 #:use-module (gnu packages tls)
2c7511fb 88 #:use-module (gnu packages valgrind)
db481636 89 #:use-module (gnu packages video)
124351ef 90 #:use-module (gnu packages vulkan)
0009ed71 91 #:use-module (gnu packages xdisorg)
db481636 92 #:use-module (gnu packages xiph)
0009ed71 93 #:use-module (gnu packages xorg)
124351ef
EF
94 #:use-module (gnu packages xml)
95 #:use-module (srfi srfi-1))
bd677c2d 96
aa8c0ada
TD
97(define-public grantlee
98 (package
99 (name "grantlee")
100 (version "5.1.0")
101 (source
102 (origin
6feb86f4
RW
103 (method git-fetch)
104 (uri (git-reference
105 (url "https://github.com/steveire/grantlee.git")
106 (commit (string-append "v" version))))
107 (file-name (git-file-name name version))
aa8c0ada 108 (sha256
6feb86f4 109 (base32 "1dmah2gd6zd4fgz2f4ir11dazqg067hjz8xshhywhfsmavchi626"))))
aa8c0ada 110 (native-inputs
868b1a02 111 ;; Optional: lcov and cccc, both are for code coverage
aa8c0ada
TD
112 `(("doxygen" ,doxygen)))
113 (inputs
114 `(("qtbase" ,qtbase)
115 ("qtscript" ,qtscript)))
116 (build-system cmake-build-system)
117 (arguments
ea57bb89
HG
118 `(#:configure-flags '("-DCMAKE_CXX_STANDARD=11")
119 #:phases
aa8c0ada 120 (modify-phases %standard-phases
fc64504f
RW
121 (add-after 'unpack 'delete-broken-tests
122 (lambda _
123 ;; TODO: Two date tests (for date01 and date02) fail for unknown
124 ;; reasons.
125 ;; Actual (result): ""
126 ;; Expected (output): "01"
127 ;; Actual (result): ""
128 ;; Expected (output): "Jan. 1, 2008"
129 (delete-file "templates/tests/testfilters.cpp")
130 (substitute* "templates/tests/CMakeLists.txt"
131 (("testfilters") ""))
132 #t))
868b1a02
HG
133 (add-before 'check 'check-setup
134 (lambda _
135 ;; make Qt render "offscreen", required for tests
136 (setenv "QT_QPA_PLATFORM" "offscreen")
137 #t)))))
aa8c0ada
TD
138 (home-page "https://github.com/steveire/grantlee")
139 (synopsis "Libraries for text templating with Qt")
140 (description "Grantlee Templates can be used for theming and generation of
141other text such as code. The syntax uses the syntax of the Django template
142system, and the core design of Django is reused in Grantlee.")
143 (license license:lgpl2.0+)))
144
02511196 145(define-public qt-4
b332e366
AE
146 (package
147 (name "qt")
02511196 148 (version "4.8.7")
b332e366
AE
149 (source (origin
150 (method url-fetch)
02511196
HG
151 (uri (string-append "http://download.qt-project.org/official_releases/qt/"
152 (string-copy version 0 (string-rindex version #\.))
153 "/" version
154 "/qt-everywhere-opensource-src-"
155 version ".tar.gz"))
b332e366 156 (sha256
418c62ff 157 (base32
02511196
HG
158 "183fca7n7439nlhxyg1z7aky0izgbyll3iwakw4gwivy16aj5272"))
159 (patches (search-patches "qt4-ldflags.patch"))
14bcc1e1
AE
160 (modules '((guix build utils)))
161 (snippet
02511196
HG
162 ;; Remove webkit module, which is not built.
163 '(begin (delete-file-recursively "src/3rdparty/webkit")
164 #t))))
b332e366 165 (build-system gnu-build-system)
ef0cf53e
AE
166 (propagated-inputs
167 `(("mesa" ,mesa)))
b332e366 168 (inputs
b332e366 169 `(("alsa-lib" ,alsa-lib)
5acd59ee 170 ("bluez" ,bluez)
2cba3d6f 171 ("cups" ,cups)
5acd59ee
EF
172 ("dbus" ,dbus)
173 ("double-conversion" ,double-conversion)
0009ed71 174 ("expat" ,expat)
b332e366
AE
175 ("fontconfig" ,fontconfig)
176 ("freetype" ,freetype)
177 ("glib" ,glib)
5acd59ee
EF
178 ("gstreamer" ,gstreamer)
179 ("gst-plugins-base" ,gst-plugins-base)
b332e366 180 ("icu4c" ,icu4c)
5acd59ee
EF
181 ("jasper" ,jasper)
182 ("libinput" ,libinput-minimal)
2cba3d6f 183 ("libmng" ,libmng)
0009ed71 184 ("libpci" ,pciutils)
b332e366 185 ("libpng" ,libpng)
5acd59ee
EF
186 ("libtiff" ,libtiff)
187 ("libwebp" ,libwebp)
b332e366 188 ("libx11" ,libx11)
0009ed71
SB
189 ("libxcomposite" ,libxcomposite)
190 ("libxcursor" ,libxcursor)
5acd59ee 191 ("libxext" ,libxext)
0009ed71 192 ("libxfixes" ,libxfixes)
b332e366 193 ("libxi" ,libxi)
0009ed71 194 ("libxinerama" ,libxinerama)
b332e366 195 ("libxkbcommon" ,libxkbcommon)
0009ed71
SB
196 ("libxml2" ,libxml2)
197 ("libxrandr" ,libxrandr)
b332e366 198 ("libxrender" ,libxrender)
0009ed71
SB
199 ("libxslt" ,libxslt)
200 ("libxtst" ,libxtst)
201 ("mtdev" ,mtdev)
2b8491fb
JL
202 ("mariadb" ,mariadb "lib")
203 ("mariadb-dev" ,mariadb "dev")
0009ed71 204 ("nss" ,nss)
2cba3d6f 205 ("postgresql" ,postgresql)
39fa8f6c 206 ("pulseaudio" ,pulseaudio)
5acd59ee 207 ("pcre2" ,pcre2)
d28af199 208 ("sqlite" ,sqlite-with-column-metadata)
0009ed71 209 ("udev" ,eudev)
2cba3d6f 210 ("unixodbc" ,unixodbc)
5acd59ee 211 ("wayland" ,wayland)
b332e366
AE
212 ("xcb-util" ,xcb-util)
213 ("xcb-util-image" ,xcb-util-image)
214 ("xcb-util-keysyms" ,xcb-util-keysyms)
215 ("xcb-util-renderutil" ,xcb-util-renderutil)
216 ("xcb-util-wm" ,xcb-util-wm)
02511196 217 ("zlib" ,zlib)
89595f98 218 ("libjpeg" ,libjpeg-turbo)
86b995dc
MB
219 ("libsm" ,libsm)
220 ("openssl" ,openssl-1.0)))
124351ef 221 (native-inputs
86b995dc
MB
222 `(;; XXX: The JavaScriptCore engine does not build with the C++11 standard.
223 ;; We could build it with -std=gnu++98, but then we'll get in trouble with
224 ;; ICU later. Just keep using GCC 5 for now.
225 ("gcc" ,gcc-5)
02511196
HG
226 ("bison" ,bison)
227 ("flex" ,flex)
228 ("gperf" ,gperf)
229 ("perl" ,perl)
230 ("pkg-config" ,pkg-config)
231 ("python" ,python-2)
232 ("ruby" ,ruby)
233 ("which" ,(@ (gnu packages base) which))))
31580979
LC
234 ;; Note: there are 37 MiB of examples and a '-exampledir' configure flags,
235 ;; but we can't make them a separate output because "out" and "examples"
236 ;; would refer to each other.
237 (outputs '("out" ;112MiB core + 37MiB examples
238 "doc")) ;280MiB of HTML + code
1e9ed0e3
AE
239 (arguments
240 `(#:phases
cba632c4
LC
241 (modify-phases %standard-phases
242 (replace
1e9ed0e3
AE
243 'configure
244 (lambda* (#:key outputs #:allow-other-keys)
31580979
LC
245 (let ((out (assoc-ref outputs "out"))
246 (doc (assoc-ref outputs "doc")))
1e9ed0e3 247 (substitute* '("configure")
d2984346 248 (("/bin/pwd") (which "pwd")))
1f71daf4
EF
249 (substitute* "src/corelib/global/global.pri"
250 (("/bin/ls") (which "ls")))
d2984346 251
852a5692
EF
252 (invoke
253 "./configure"
254 "-verbose"
255 "-prefix" out
256 "-nomake" "examples demos"
257 ;; Note: Don't pass '-docdir' since 'qmake' and
258 ;; libQtCore would record its value, thereby defeating
259 ;; the whole point of having a separate output.
260 "-datadir" (string-append out "/share/qt-" ,version
261 "/data")
262 "-importdir" (string-append out "/lib/qt-4"
263 "/imports")
264 "-plugindir" (string-append out "/lib/qt-4"
265 "/plugins")
266 "-translationdir" (string-append out "/share/qt-" ,version
267 "/translations")
268 "-demosdir" (string-append out "/share/qt-" ,version
269 "/demos")
270 "-examplesdir" (string-append out "/share/qt-" ,version
271 "/examples")
272 "-opensource"
273 "-confirm-license"
274 ;; explicitly link with dbus instead of dlopening it
275 "-dbus-linked"
276 ;; Skip the webkit module; it fails to build on armhf
277 ;; and, apart from that, may pose security risks.
278 "-no-webkit"
279 ;; don't use the precompiled headers
280 "-no-pch"
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"
288 "-no-3dnow"
289 "-no-sse"
290 "-no-sse2"))
291 "-no-sse3"
292 "-no-ssse3"
293 "-no-sse4.1"
294 "-no-sse4.2"
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)
02511196
HG
311 #t))))))
312 (native-search-paths
313 (list (search-path-specification
314 (variable "QMAKEPATH")
315 (files '("lib/qt5")))
316 (search-path-specification
317 (variable "QML2_IMPORT_PATH")
318 (files '("lib/qt5/qml")))
319 (search-path-specification
320 (variable "QT_PLUGIN_PATH")
321 (files '("lib/qt5/plugins")))
322 (search-path-specification
323 (variable "XDG_DATA_DIRS")
324 (files '("share")))
325 (search-path-specification
326 (variable "XDG_CONFIG_DIRS")
327 (files '("etc/xdg")))))
328 (home-page "https://www.qt.io/")
329 (synopsis "Cross-platform GUI library")
330 (description "Qt is a cross-platform application and UI framework for
331developers using C++ or QML, a CSS & JavaScript like language.")
332 (license (list license:lgpl2.1 license:lgpl3))
333
334 ;; Qt 4: 'QBasicAtomicPointer' leads to build failures on MIPS;
335 ;; see <http://hydra.gnu.org/build/112828>.
336 ;; Qt 5: assembler error; see <http://hydra.gnu.org/build/112526>.
337 (supported-systems (delete "mips64el-linux" %supported-systems))))
84ef83dd 338
7868000f
AE
339(define-public qtbase
340 (package
341 (name "qtbase")
6d460e80 342 (version "5.12.6")
7868000f
AE
343 (source (origin
344 (method url-fetch)
345 (uri (string-append "https://download.qt.io/official_releases/qt/"
346 (version-major+minor version) "/" version
1f52eb7b 347 "/submodules/" name "-everywhere-src-"
7868000f
AE
348 version ".tar.xz"))
349 (sha256
c7386f4e 350 (base32
6d460e80 351 "09wz7zs1x5mpgs2y4xnl2zv3naqls4sz6v2arwl1fz2dsx4jddba"))
64f390a4 352 ;; Use TZDIR to avoid depending on package "tzdata".
3e93b2bd 353 (patches (search-patches "qtbase-use-TZDIR.patch"))
7868000f
AE
354 (modules '((guix build utils)))
355 (snippet
924e6ddf 356 ;; corelib uses bundled harfbuzz, md4, md5, sha3
7868000f 357 '(begin
c82cd3a7
EF
358 (with-directory-excursion "src/3rdparty"
359 (for-each delete-file-recursively
360 (list "double-conversion" "freetype" "harfbuzz-ng"
361 "libpng" "libjpeg" "pcre2" "sqlite" "xcb"
3e93b2bd 362 "zlib"))
c82cd3a7 363 #t)))))
7868000f 364 (build-system gnu-build-system)
48d4ce6e 365 (propagated-inputs
8075b623
SB
366 `(("mesa" ,mesa)
367 ("which" ,(@ (gnu packages base) which))))
7868000f
AE
368 (inputs
369 `(("alsa-lib" ,alsa-lib)
370 ("cups" ,cups)
371 ("dbus" ,dbus)
04f8decf 372 ("double-conversion" ,double-conversion)
f66970a7 373 ("eudev" ,eudev)
7868000f
AE
374 ("expat" ,expat)
375 ("fontconfig" ,fontconfig)
376 ("freetype" ,freetype)
377 ("glib" ,glib)
378 ("harfbuzz" ,harfbuzz)
379 ("icu4c" ,icu4c)
9ed9b44e 380 ("libinput" ,libinput-minimal)
7868000f
AE
381 ("libjpeg" ,libjpeg)
382 ("libmng" ,libmng)
383 ("libpng" ,libpng)
384 ("libx11" ,libx11)
385 ("libxcomposite" ,libxcomposite)
386 ("libxcursor" ,libxcursor)
387 ("libxfixes" ,libxfixes)
388 ("libxi" ,libxi)
389 ("libxinerama" ,libxinerama)
390 ("libxkbcommon" ,libxkbcommon)
391 ("libxml2" ,libxml2)
392 ("libxrandr" ,libxrandr)
393 ("libxrender" ,libxrender)
394 ("libxslt" ,libxslt)
395 ("libxtst" ,libxtst)
396 ("mtdev" ,mtdev)
2b8491fb
JL
397 ("mariadb" ,mariadb "lib")
398 ("mariadb-dev" ,mariadb "dev")
7868000f
AE
399 ("nss" ,nss)
400 ("openssl" ,openssl)
924e6ddf 401 ("pcre2" ,pcre2)
7868000f
AE
402 ("postgresql" ,postgresql)
403 ("pulseaudio" ,pulseaudio)
d28af199 404 ("sqlite" ,sqlite-with-column-metadata)
7868000f
AE
405 ("unixodbc" ,unixodbc)
406 ("xcb-util" ,xcb-util)
407 ("xcb-util-image" ,xcb-util-image)
408 ("xcb-util-keysyms" ,xcb-util-keysyms)
409 ("xcb-util-renderutil" ,xcb-util-renderutil)
410 ("xcb-util-wm" ,xcb-util-wm)
411 ("zlib" ,zlib)))
412 (native-inputs
413 `(("bison" ,bison)
414 ("flex" ,flex)
415 ("gperf" ,gperf)
416 ("perl" ,perl)
417 ("pkg-config" ,pkg-config)
d733a469 418 ("python" ,python)
124351ef 419 ("vulkan-headers" ,vulkan-headers)
8075b623 420 ("ruby" ,ruby)))
7868000f
AE
421 (arguments
422 `(#:phases
423 (modify-phases %standard-phases
424 (add-after 'configure 'patch-bin-sh
425 (lambda _
426 (substitute* '("config.status"
427 "configure"
428 "mkspecs/features/qt_functions.prf"
429 "qmake/library/qmakebuiltins.cpp")
430 (("/bin/sh") (which "sh")))
431 #t))
432 (replace 'configure
433 (lambda* (#:key outputs #:allow-other-keys)
434 (let ((out (assoc-ref outputs "out")))
435 (substitute* "configure"
436 (("/bin/pwd") (which "pwd")))
437 (substitute* "src/corelib/global/global.pri"
438 (("/bin/ls") (which "ls")))
7972d8a2
AE
439 ;; The configuration files for other Qt5 packages are searched
440 ;; through a call to "find_package" in Qt5Config.cmake, which
441 ;; disables the use of CMAKE_PREFIX_PATH via the parameter
442 ;; "NO_DEFAULT_PATH". Re-enable it so that the different
443 ;; components can be installed in different places.
444 (substitute* (find-files "." ".*\\.cmake")
445 (("NO_DEFAULT_PATH") ""))
7868000f
AE
446 ;; do not pass "--enable-fast-install", which makes the
447 ;; configure process fail
1f52eb7b
EF
448 (invoke
449 "./configure"
450 "-verbose"
451 "-prefix" out
452 "-docdir" (string-append out "/share/doc/qt5")
453 "-headerdir" (string-append out "/include/qt5")
454 "-archdatadir" (string-append out "/lib/qt5")
455 "-datadir" (string-append out "/share/qt5")
456 "-examplesdir" (string-append
457 out "/share/doc/qt5/examples")
458 "-opensource"
459 "-confirm-license"
65a9f6b6
RW
460
461 ;; These features require higher versions of Linux than the
462 ;; minimum version of the glibc. See
463 ;; src/corelib/global/minimum-linux_p.h. By disabling these
464 ;; features Qt5 applications can be used on the oldest
465 ;; kernels that the glibc supports, including the RHEL6
466 ;; (2.6.32) and RHEL7 (3.10) kernels.
467 "-no-feature-getentropy" ; requires Linux 3.17
f0de36cb 468 "-no-feature-renameat2" ; requires Linux 3.16
65a9f6b6 469
1f52eb7b
EF
470 ;; Do not build examples; if desired, these could go
471 ;; into a separate output, but for the time being, we
472 ;; prefer to save the space and build time.
473 "-no-compile-examples"
474 ;; Most "-system-..." are automatic, but some use
475 ;; the bundled copy by default.
d28af199 476 "-system-sqlite"
1f52eb7b
EF
477 "-system-harfbuzz"
478 "-system-pcre"
479 ;; explicitly link with openssl instead of dlopening it
480 "-openssl-linked"
481 ;; explicitly link with dbus instead of dlopening it
482 "-dbus-linked"
483 ;; don't use the precompiled headers
484 "-no-pch"
485 ;; drop special machine instructions that do not have
486 ;; runtime detection
487 ,@(if (string-prefix? "x86_64"
488 (or (%current-target-system)
489 (%current-system)))
490 '()
491 '("-no-sse2"))
492 "-no-mips_dsp"
493 "-no-mips_dspr2"))))
8075b623 494 (add-after 'install 'patch-mkspecs
5ca6ef95
SB
495 (lambda* (#:key outputs #:allow-other-keys)
496 (let* ((out (assoc-ref outputs "out"))
8075b623
SB
497 (archdata (string-append out "/lib/qt5"))
498 (mkspecs (string-append archdata "/mkspecs"))
5ca6ef95 499 (qt_config.prf (string-append
6fc0e157 500 mkspecs "/features/qt_config.prf")))
5ca6ef95
SB
501 ;; For each Qt module, let `qmake' uses search paths in the
502 ;; module directory instead of all in QT_INSTALL_PREFIX.
503 (substitute* qt_config.prf
504 (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
6fc0e157 505 "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
5ca6ef95 506 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
6fc0e157 507 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
5ca6ef95 508 (("\\$\\$\\[QT_HOST_LIBS\\]")
6fc0e157 509 "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
5ca6ef95 510 (("\\$\\$\\[QT_INSTALL_BINS\\]")
6fc0e157 511 "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
8075b623
SB
512
513 ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
514 (substitute* (string-append mkspecs "/features/qt_functions.prf")
515 (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
516 "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
517
518 ;; Resolve qmake spec files within qtbase by absolute paths.
519 (substitute*
520 (map (lambda (file)
521 (string-append mkspecs "/features/" file))
522 '("device_config.prf" "moc.prf" "qt_build_config.prf"
523 "qt_config.prf" "winrt/package_manifest.prf"))
524 (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
525 (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
64f390a4 526 #t)))
a59e2dd8
MB
527 (add-after 'patch-mkspecs 'patch-prl-files
528 (lambda* (#:key outputs #:allow-other-keys)
529 (let ((out (assoc-ref outputs "out")))
530 ;; Insert absolute references to the qtbase libraries because
531 ;; QT_INSTALL_LIBS does not always resolve correctly, depending
532 ;; on context. See <https://bugs.gnu.org/38405>
533 (substitute* (find-files (string-append out "/lib") "\\.prl$")
534 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
535 (string-append out "/lib")))
536 #t)))
64f390a4
HG
537 (add-after 'unpack 'patch-paths
538 ;; Use the absolute paths for dynamically loaded libs, otherwise
539 ;; the lib will be searched in LD_LIBRARY_PATH which typically is
540 ;; not set in guix.
541 (lambda* (#:key inputs #:allow-other-keys)
542 ;; libresolve
543 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
544 "cross-libc" "libc"))))
545 (substitute* '("src/network/kernel/qdnslookup_unix.cpp"
546 "src/network/kernel/qhostinfo_unix.cpp")
547 (("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b)
548 (string-append a glibc "/lib/lib" b))))
549 ;; X11/locale (compose path)
550 (substitute* "src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp"
551 ;; Don't search in /usr/…/X11/locale, …
552 (("^\\s*m_possibleLocations.append\\(QStringLiteral\\(\"/usr/.*/X11/locale\"\\)\\);" line)
553 (string-append "// " line))
554 ;; … but use libx11's path
555 (("^\\s*(m_possibleLocations.append\\(QStringLiteral\\()X11_PREFIX \"(/.*/X11/locale\"\\)\\);)" _ a b)
556 (string-append a "\"" (assoc-ref inputs "libx11") b)))
557 ;; libGL
558 (substitute* "src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp"
559 (("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b)
560 (string-append a (assoc-ref inputs "mesa") "/lib/lib" b)))
561 ;; libXcursor
562 (substitute* "src/plugins/platforms/xcb/qxcbcursor.cpp"
563 (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b)
564 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))
565 (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b)
566 (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)))
567 #t)))))
5ca6ef95
SB
568 (native-search-paths
569 (list (search-path-specification
570 (variable "QMAKEPATH")
6fc0e157 571 (files '("lib/qt5")))
ed02e1fe
DC
572 (search-path-specification
573 (variable "QML2_IMPORT_PATH")
6fc0e157 574 (files '("lib/qt5/qml")))
ed02e1fe
DC
575 (search-path-specification
576 (variable "QT_PLUGIN_PATH")
6fc0e157 577 (files '("lib/qt5/plugins")))
ed02e1fe
DC
578 (search-path-specification
579 (variable "XDG_DATA_DIRS")
580 (files '("share")))
581 (search-path-specification
582 (variable "XDG_CONFIG_DIRS")
583 (files '("etc/xdg")))))
7868000f
AE
584 (home-page "https://www.qt.io/")
585 (synopsis "Cross-platform GUI library")
586 (description "Qt is a cross-platform application and UI framework for
587developers using C++ or QML, a CSS & JavaScript like language.")
225941b0 588 (license (list license:lgpl2.1 license:lgpl3))))
7868000f 589
02511196
HG
590
591;; qt used to refer to the monolithic Qt 5.x package
9b65dea8 592(define-deprecated qt qtbase)
02511196
HG
593
594
19c17631
EF
595(define-public qtsvg
596 (package (inherit qtbase)
597 (name "qtsvg")
6d460e80 598 (version "5.12.6")
19c17631
EF
599 (source (origin
600 (method url-fetch)
601 (uri (string-append "https://download.qt.io/official_releases/qt/"
602 (version-major+minor version) "/" version
1f52eb7b 603 "/submodules/" name "-everywhere-src-"
19c17631
EF
604 version ".tar.xz"))
605 (sha256
606 (base32
6d460e80 607 "13zg5095ffm88dsrybyi075i9zw3yrkibqzvj57an9sq89n3w926"))))
48d4ce6e 608 (propagated-inputs `())
19c17631
EF
609 (native-inputs `(("perl" ,perl)))
610 (inputs
611 `(("mesa" ,mesa)
612 ("qtbase" ,qtbase)
613 ("zlib" ,zlib)))
614 (arguments
615 `(#:phases
616 (modify-phases %standard-phases
8075b623 617 (add-before 'configure 'configure-qmake
19c17631 618 (lambda* (#:key inputs outputs #:allow-other-keys)
8075b623
SB
619 (let* ((out (assoc-ref outputs "out"))
620 (qtbase (assoc-ref inputs "qtbase"))
621 (tmpdir (string-append (getenv "TMPDIR")))
622 (qmake (string-append tmpdir "/qmake"))
623 (qt.conf (string-append tmpdir "/qt.conf")))
624 ;; Use qmake with a customized qt.conf to override install
625 ;; paths to $out.
626 (symlink (which "qmake") qmake)
627 (setenv "PATH" (string-append tmpdir ":" (getenv "PATH")))
628 (with-output-to-file qt.conf
629 (lambda ()
630 (format #t "[Paths]
631Prefix=~a
632ArchData=lib/qt5
633Data=share/qt5
634Documentation=share/doc/qt5
635Headers=include/qt5
636Libraries=lib
637LibraryExecutables=lib/qt5/libexec
638Binaries=bin
639Tests=tests
640Plugins=lib/qt5/plugins
641Imports=lib/qt5/imports
642Qml2Imports=lib/qt5/qml
643Translations=share/qt5/translations
644Settings=etc/xdg
645Examples=share/doc/qt5/examples
646HostPrefix=~a
647HostData=lib/qt5
648HostBinaries=bin
649HostLibraries=lib
b000294e
SB
650
651[EffectiveSourcePaths]
652HostPrefix=~a
653HostData=lib/qt5
654" out out qtbase)))
c195b5ba 655 #t)))
8075b623
SB
656 (replace 'configure
657 (lambda* (#:key inputs outputs #:allow-other-keys)
658 ;; Valid QT_BUILD_PARTS variables are:
659 ;; libs tools tests examples demos docs translations
1f52eb7b 660 (invoke "qmake" "QT_BUILD_PARTS = libs tools tests")))
8075b623
SB
661 (add-before 'check 'set-display
662 (lambda _
663 ;; make Qt render "offscreen", required for tests
664 (setenv "QT_QPA_PLATFORM" "offscreen")
665 #t)))))
96412f34
EF
666 (synopsis "Qt module for displaying SVGs")
667 (description "The QtSvg module provides classes for displaying the
668 contents of SVG files.")))
19c17631 669
9b694210
EF
670(define-public qtimageformats
671 (package (inherit qtsvg)
672 (name "qtimageformats")
6d460e80 673 (version "5.12.6")
9b694210
EF
674 (source (origin
675 (method url-fetch)
676 (uri (string-append "https://download.qt.io/official_releases/qt/"
677 (version-major+minor version) "/" version
1f52eb7b 678 "/submodules/" name "-everywhere-src-"
9b694210
EF
679 version ".tar.xz"))
680 (sha256
681 (base32
6d460e80 682 "0n3qc5rx7kzb4csmcxaxdm2bqpciz2j2pz2zdfrlpi1ml4liq39k"))
c04854da
EF
683 (modules '((guix build utils)))
684 (snippet
1f52eb7b
EF
685 '(begin
686 (delete-file-recursively "src/3rdparty")
687 #t))))
9b694210
EF
688 (native-inputs `())
689 (inputs
a532a671
EF
690 `(("jasper" ,jasper)
691 ("libmng" ,libmng)
9b694210
EF
692 ("libtiff" ,libtiff)
693 ("libwebp" ,libwebp)
694 ("mesa" ,mesa)
695 ("qtbase" ,qtbase)
96412f34
EF
696 ("zlib" ,zlib)))
697 (synopsis "Additional Image Format plugins for Qt")
698 (description "The QtImageFormats module contains plugins for adding
699support for MNG, TGA, TIFF and WBMP image formats.")))
9b694210 700
f6c13613
EF
701(define-public qtx11extras
702 (package (inherit qtsvg)
703 (name "qtx11extras")
6d460e80 704 (version "5.12.6")
f6c13613
EF
705 (source (origin
706 (method url-fetch)
707 (uri (string-append "https://download.qt.io/official_releases/qt/"
708 (version-major+minor version) "/" version
1f52eb7b 709 "/submodules/" name "-everywhere-src-"
f6c13613
EF
710 version ".tar.xz"))
711 (sha256
712 (base32
6d460e80 713 "0sqx785kb4kfxfl3cmg848dlxlxmfdg8jnfh3rrk8q0iazsr2faz"))))
c195b5ba
EF
714 (arguments
715 (substitute-keyword-arguments (package-arguments qtsvg)
716 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
f6c13613
EF
717 (native-inputs `(("perl" ,perl)))
718 (inputs
719 `(("mesa" ,mesa)
96412f34
EF
720 ("qtbase" ,qtbase)))
721 (synopsis "Qt Extras for X11")
722 (description "The QtX11Extras module includes the library to access X11
723from within Qt 5.")))
f6c13613 724
98eec712
EF
725(define-public qtxmlpatterns
726 (package (inherit qtsvg)
727 (name "qtxmlpatterns")
6d460e80 728 (version "5.12.6")
98eec712
EF
729 (source (origin
730 (method url-fetch)
731 (uri (string-append "https://download.qt.io/official_releases/qt/"
732 (version-major+minor version) "/" version
1f52eb7b 733 "/submodules/" name "-everywhere-src-"
98eec712
EF
734 version ".tar.xz"))
735 (sha256
736 (base32
6d460e80 737 "1l44476ibb8rv4rf80vbjdc3712lmrl1xcxswa513ip66k47p5vn"))))
c195b5ba
EF
738 (arguments
739 (substitute-keyword-arguments (package-arguments qtsvg)
3e10b241 740 ((#:tests? _ #f) #f) ; TODO: Enable the tests
f66b3e15
EF
741 ((#:phases phases)
742 `(modify-phases ,phases
743 (add-after 'unpack 'disable-network-tests
744 (lambda _ (substitute* "tests/auto/auto.pro"
745 (("qxmlquery") "# qxmlquery")
a20e00dd 746 (("xmlpatterns ") "# xmlpatterns"))
f66b3e15 747 #t))))))
3e10b241
GLV
748 (native-inputs `(("perl" ,perl)
749 ("qtdeclarative" ,qtdeclarative)))
96412f34
EF
750 (inputs `(("qtbase" ,qtbase)))
751 (synopsis "Qt XML patterns module")
752 (description "The QtXmlPatterns module is a XQuery and XPath engine for
753XML and custom data models. It contains programs such as xmlpatterns and
754xmlpatternsvalidator.")))
98eec712 755
e3a2ed81
EF
756(define-public qtdeclarative
757 (package (inherit qtsvg)
758 (name "qtdeclarative")
6d460e80 759 (version "5.12.6")
e3a2ed81
EF
760 (source (origin
761 (method url-fetch)
762 (uri (string-append "https://download.qt.io/official_releases/qt/"
763 (version-major+minor version) "/" version
1f52eb7b 764 "/submodules/" name "-everywhere-src-"
e3a2ed81
EF
765 version ".tar.xz"))
766 (sha256
767 (base32
6d460e80 768 "1lw6nr26cjdrshin3gq5xwqb0bvslg0ml99cw8rx9wb2anpd3c9l"))))
c195b5ba
EF
769 (arguments
770 (substitute-keyword-arguments (package-arguments qtsvg)
771 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
e3a2ed81
EF
772 (native-inputs
773 `(("perl" ,perl)
774 ("pkg-config" ,pkg-config)
d733a469
HG
775 ("python" ,python)
776 ("python-wrapper" ,python-wrapper)
3e10b241 777 ("qtsvg" ,qtsvg)))
e3a2ed81
EF
778 (inputs
779 `(("mesa" ,mesa)
96412f34
EF
780 ("qtbase" ,qtbase)))
781 (synopsis "Qt QML module (Quick 2)")
782 (description "The Qt QML module provides a framework for developing
783applications and libraries with the QML language. It defines and implements the
784language and engine infrastructure, and provides an API to enable application
785developers to extend the QML language with custom types and integrate QML code
786with JavaScript and C++.")))
e3a2ed81 787
e98cb96d
EF
788(define-public qtconnectivity
789 (package (inherit qtsvg)
790 (name "qtconnectivity")
6d460e80 791 (version "5.12.6")
e98cb96d
EF
792 (source (origin
793 (method url-fetch)
794 (uri (string-append "https://download.qt.io/official_releases/qt/"
795 (version-major+minor version) "/" version
1f52eb7b 796 "/submodules/" name "-everywhere-src-"
e98cb96d
EF
797 version ".tar.xz"))
798 (sha256
799 (base32
6d460e80 800 "1ni2x848dxf0c7ilk461vz0z46qis8zv6jxbpyhpbhzdg9rcdw8h"))))
e98cb96d
EF
801 (native-inputs
802 `(("perl" ,perl)
803 ("pkg-config" ,pkg-config)
804 ("qtdeclarative" ,qtdeclarative)))
805 (inputs
806 `(("bluez" ,bluez)
96412f34
EF
807 ("qtbase" ,qtbase)))
808 (synopsis "Qt Connectivity module")
809 (description "The Qt Connectivity modules provides modules for interacting
810with Bluetooth and NFC.")))
e98cb96d 811
cac893ec
EF
812(define-public qtwebsockets
813 (package (inherit qtsvg)
814 (name "qtwebsockets")
6d460e80 815 (version "5.12.6")
cac893ec
EF
816 (source (origin
817 (method url-fetch)
818 (uri (string-append "https://download.qt.io/official_releases/qt/"
819 (version-major+minor version) "/" version
1f52eb7b 820 "/submodules/" name "-everywhere-src-"
cac893ec
EF
821 version ".tar.xz"))
822 (sha256
823 (base32
6d460e80 824 "07nnzqhsnb4q8pbka9dk5nxmqinbg9yicag7f4rlq2p6ffmgn2zh"))))
c195b5ba
EF
825 (arguments
826 (substitute-keyword-arguments (package-arguments qtsvg)
827 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
cac893ec
EF
828 (native-inputs
829 `(("perl" ,perl)
830 ("qtdeclarative" ,qtdeclarative)))
96412f34
EF
831 (inputs `(("qtbase" ,qtbase)))
832 (synopsis "Qt Web Sockets module")
833 (description "WebSocket is a web-based protocol designed to enable two-way
834communication between a client application and a remote host. The Qt
835WebSockets module provides C++ and QML interfaces that enable Qt applications
836to act as a server that can process WebSocket requests, or a client that can
837consume data received from the server, or both.")))
cac893ec 838
3474767c
EF
839(define-public qtsensors
840 (package (inherit qtsvg)
841 (name "qtsensors")
6d460e80 842 (version "5.12.6")
3474767c
EF
843 (source (origin
844 (method url-fetch)
845 (uri (string-append "https://download.qt.io/official_releases/qt/"
846 (version-major+minor version) "/" version
1f52eb7b 847 "/submodules/" name "-everywhere-src-"
3474767c
EF
848 version ".tar.xz"))
849 (sha256
850 (base32
6d460e80 851 "1x8f55qyix5bsd0hl9rzi56ndyv4h16z2qh8is9nv13jpk0a9nsr"))))
202afee2
EF
852 (arguments
853 (substitute-keyword-arguments (package-arguments qtsvg)
5ea35b42 854 ((#:parallel-tests? _ #f) #f) ; can lead to race condition
202afee2
EF
855 ((#:phases phases)
856 `(modify-phases ,phases
04162e83 857 (add-after 'unpack 'fix-tests
202afee2
EF
858 (lambda _
859 (substitute* "tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp"
04162e83
NG
860 (("2000") "5000") ;lengthen test timeout
861 (("QTest::newRow(\"twist\") << \"twist\"") "")) ;failing test
202afee2 862 #t))))))
3474767c
EF
863 (native-inputs
864 `(("perl" ,perl)
865 ("qtdeclarative" ,qtdeclarative)))
96412f34
EF
866 (inputs `(("qtbase" ,qtbase)))
867 (synopsis "Qt Sensors module")
868 (description "The Qt Sensors API provides access to sensor hardware via QML
869and C++ interfaces. The Qt Sensors API also provides a motion gesture
870recognition API for devices.")))
3474767c 871
15378f93
EF
872(define-public qtmultimedia
873 (package (inherit qtsvg)
874 (name "qtmultimedia")
6d460e80 875 (version "5.12.6")
15378f93
EF
876 (source (origin
877 (method url-fetch)
878 (uri (string-append "https://download.qt.io/official_releases/qt/"
879 (version-major+minor version) "/" version
1f52eb7b 880 "/submodules/" name "-everywhere-src-"
15378f93
EF
881 version ".tar.xz"))
882 (sha256
883 (base32
6d460e80 884 "0w4mcxmj41b9phwirppn9ws1vxy3sww7prvhhmh0jsnaca4hwn4z"))
63d8f08f
EF
885 (modules '((guix build utils)))
886 (snippet
887 '(begin
888 (delete-file-recursively
c195b5ba
EF
889 "examples/multimedia/spectrum/3rdparty")
890 ;; We also prevent the spectrum example from being built.
891 (substitute* "examples/multimedia/multimedia.pro"
6cbee49d
MW
892 (("spectrum") "#"))
893 #t))))
c195b5ba
EF
894 (arguments
895 (substitute-keyword-arguments (package-arguments qtsvg)
04231311
RW
896 ((#:phases phases)
897 `(modify-phases ,phases
898 (replace 'configure
899 (lambda* (#:key outputs #:allow-other-keys)
900 (let ((out (assoc-ref outputs "out")))
1f52eb7b
EF
901 (invoke "qmake" "QT_BUILD_PARTS = libs tools tests"
902 (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,")
903 (string-append "PREFIX=" out)))))))
04231311 904 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
15378f93
EF
905 (native-inputs
906 `(("perl" ,perl)
907 ("pkg-config" ,pkg-config)
d733a469 908 ("python" ,python)
15378f93
EF
909 ("qtdeclarative" ,qtdeclarative)))
910 (inputs
911 `(("alsa-lib" ,alsa-lib)
912 ("mesa" ,mesa)
913 ("pulseaudio" ,pulseaudio)
04231311
RW
914 ("qtbase" ,qtbase)
915 ;; Gstreamer is needed for the mediaplayer plugin
916 ("gstreamer" ,gstreamer)
96412f34
EF
917 ("gst-plugins-base" ,gst-plugins-base)))
918 (synopsis "Qt Multimedia module")
919 (description "The Qt Multimedia module provides set of APIs to play and
920record media, and manage a collection of media content. It also contains a
921set of plugins for interacting with pulseaudio and GStreamer.")))
15378f93 922
bc8ede01
EF
923(define-public qtwayland
924 (package (inherit qtsvg)
925 (name "qtwayland")
6d460e80 926 (version "5.12.6")
bc8ede01
EF
927 (source (origin
928 (method url-fetch)
929 (uri (string-append "https://download.qt.io/official_releases/qt/"
930 (version-major+minor version) "/" version
1f52eb7b 931 "/submodules/" name "-everywhere-src-"
bc8ede01
EF
932 version ".tar.xz"))
933 (sha256
934 (base32
6d460e80 935 "1i2i4d6qa512njm6gvd1ygcyb5p4d6axciqg9ys380yw9nl6m77s"))
924e6ddf
EF
936 (modules '((guix build utils)))
937 (snippet
938 ;; The examples try to build and cause the build to fail
1f52eb7b
EF
939 '(begin
940 (delete-file-recursively "examples")
941 #t))))
6fc0e157
SB
942 (arguments
943 (substitute-keyword-arguments (package-arguments qtsvg)
944 ((#:phases phases)
945 `(modify-phases ,phases
946 (add-before 'check 'set-ld-library-path
947 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00019.html>
948 ;;
949 ;; Make the uninstalled libQt5WaylandClient.so.5 available to the
950 ;; wayland platform plugin.
951 (lambda _
952 (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/lib"))
953 #t))))))
bc8ede01
EF
954 (native-inputs
955 `(("glib" ,glib)
956 ("perl" ,perl)
957 ("pkg-config" ,pkg-config)
958 ("qtdeclarative" ,qtdeclarative)))
959 (inputs
960 `(("fontconfig" ,fontconfig)
961 ("freetype" ,freetype)
962 ("libx11" ,libx11)
963 ("libxcomposite" ,libxcomposite)
964 ("libxext" ,libxext)
965 ("libxkbcommon" ,libxkbcommon)
966 ("libxrender" ,libxrender)
967 ("mesa" ,mesa)
968 ("mtdev" ,mtdev)
969 ("qtbase" ,qtbase)
96412f34
EF
970 ("wayland" ,wayland)))
971 (synopsis "Qt Wayland module")
972 (description "The Qt Wayland module provides the QtWayland client and
973compositor libraries.")))
bc8ede01 974
00806f2b
EF
975(define-public qtserialport
976 (package (inherit qtsvg)
977 (name "qtserialport")
8df9249d 978 (version "5.12.5")
00806f2b
EF
979 (source (origin
980 (method url-fetch)
981 (uri (string-append "https://download.qt.io/official_releases/qt/"
982 (version-major+minor version) "/" version
1f52eb7b 983 "/submodules/" name "-everywhere-src-"
00806f2b
EF
984 version ".tar.xz"))
985 (sha256
986 (base32
8df9249d 987 "0qmq3yppc54vf7xrwyrwk91h6x04w0hf4bnw5b3y5kwyllhh7vzq"))))
00806f2b 988 (native-inputs `(("perl" ,perl)))
33741e16
EF
989 (inputs
990 `(("qtbase" ,qtbase)
96412f34 991 ("eudev" ,eudev)))
042f7c26
HG
992 (arguments
993 (substitute-keyword-arguments (package-arguments qtsvg)
994 ((#:phases phases)
995 `(modify-phases ,phases
996 (add-after 'unpack 'patch-dlopen-paths
997 (lambda* (#:key inputs #:allow-other-keys)
998 (substitute* "src/serialport/qtudev_p.h"
999 ;; Use the absolute paths for dynamically loaded libs,
1000 ;; otherwise the lib will be searched in LD_LIBRARY_PATH which
1001 ;; typically is not set in guix.
1002 (("^\\s*(udevLibrary->setFileNameAndVersion\\(QStringLiteral\\(\")(udev\"\\),\\s*[0-9]+\\);)" _ a b)
1003 (string-append a (assoc-ref inputs "eudev") "/lib/lib" b)))
1004 #t))))))
96412f34
EF
1005 (synopsis "Qt Serial Port module")
1006 (description "The Qt Serial Port module provides the library for
1007interacting with serial ports from within Qt.")))
00806f2b 1008
a98ffab5
EF
1009(define-public qtserialbus
1010 (package (inherit qtsvg)
1011 (name "qtserialbus")
6d460e80 1012 (version "5.12.6")
a98ffab5
EF
1013 (source (origin
1014 (method url-fetch)
1015 (uri (string-append "https://download.qt.io/official_releases/qt/"
1016 (version-major+minor version) "/" version
1f52eb7b 1017 "/submodules/" name "-everywhere-src-"
a98ffab5
EF
1018 version ".tar.xz"))
1019 (sha256
1020 (base32
6d460e80 1021 "1ppmrwshj42lpx21m2gxblrlbigjf10fwg3fk5x5130ih89446q7"))))
a98ffab5
EF
1022 (inputs
1023 `(("qtbase" ,qtbase)
96412f34
EF
1024 ("qtserialport" ,qtserialport)))
1025 (synopsis "Qt Serial Bus module")
1026 (description "The Qt Serial Bus API provides classes and functions to
1027access the various industrial serial buses and protocols, such as CAN, ModBus,
1028and others.")))
a98ffab5 1029
f5377013
EF
1030(define-public qtwebchannel
1031 (package (inherit qtsvg)
1032 (name "qtwebchannel")
6d460e80 1033 (version "5.12.6")
f5377013
EF
1034 (source (origin
1035 (method url-fetch)
1036 (uri (string-append "https://download.qt.io/official_releases/qt/"
1037 (version-major+minor version) "/" version
1f52eb7b 1038 "/submodules/" name "-everywhere-src-"
f5377013
EF
1039 version ".tar.xz"))
1040 (sha256
1041 (base32
6d460e80 1042 "1my8vcsidx9r5wpd1iax8skhp5ac3234g9r7ax04k9z17mqd2i97"))))
f5377013
EF
1043 (native-inputs
1044 `(("perl" ,perl)
1045 ("qtdeclarative" ,qtdeclarative)
1046 ("qtwebsockets" ,qtwebsockets)))
96412f34
EF
1047 (inputs `(("qtbase" ,qtbase)))
1048 (synopsis "Web communication library for Qt")
1049 (description "The Qt WebChannel module enables peer-to-peer communication
1050between the host (QML/C++ application) and the client (HTML/JavaScript
1051application). The transport mechanism is supported out of the box by the two
1052popular web engines, Qt WebKit 2 and Qt WebEngine.")))
f5377013 1053
b5792b9c
HG
1054(define-public qtwebglplugin
1055 (package (inherit qtsvg)
1056 (name "qtwebglplugin")
6d460e80 1057 (version "5.12.6")
b5792b9c
HG
1058 (source (origin
1059 (method url-fetch)
1060 (uri (string-append "https://download.qt.io/official_releases/qt/"
1061 (version-major+minor version) "/" version
1062 "/submodules/" name "-everywhere-src-"
1063 version ".tar.xz"))
1064 (sha256
1065 (base32
6d460e80 1066 "1pahdyhinhq1xhsc7lsfprjjpz6fn9vgwqcyi72hc3wzyr98in11"))))
b6476ecc
EF
1067 (arguments
1068 (substitute-keyword-arguments (package-arguments qtsvg)
1069 ((#:phases phases)
1070 `(modify-phases ,phases
1071 (add-after 'unpack 'disable-network-tests
1072 (lambda _ (substitute* "tests/plugins/platforms/platforms.pro"
1073 (("webgl") "# webgl"))
1074 #t))))))
b5792b9c
HG
1075 (native-inputs '())
1076 (inputs
1077 `(("mesa" ,mesa)
1078 ("qtbase" ,qtbase)
b6476ecc 1079 ("qtdeclarative" ,qtdeclarative)
b5792b9c
HG
1080 ("qtwebsockets" ,qtwebsockets)))
1081 (synopsis "QPA plugin for running an application via a browser using
1082streamed WebGL commands")
1083 (description "Qt back end that uses WebGL for rendering. It allows Qt
1084applications (with some limitations) to run in a web browser that supports
1085WebGL. WebGL is a JavaScript API for rendering 2D and 3D graphics within any
1086compatible web browser without the use of plug-ins. The API is similar to
1087OpenGL ES 2.0 and can be used in HTML5 canvas elements")))
1088
359e30c9
HG
1089(define-public qtwebview
1090 (package (inherit qtsvg)
1091 (name "qtwebview")
6d460e80 1092 (version "5.12.6")
359e30c9
HG
1093 (source (origin
1094 (method url-fetch)
1095 (uri (string-append "https://download.qt.io/official_releases/qt/"
1096 (version-major+minor version) "/" version
1097 "/submodules/" name "-everywhere-src-"
1098 version ".tar.xz"))
1099 (sha256
1100 (base32
6d460e80 1101 "0ykjwz3cwv718gvgvnlhq7wia8gllnj3cdzw3amj0rh63hy65h22"))))
359e30c9
HG
1102 (native-inputs
1103 `(("perl" ,perl)))
1104 (inputs
1105 `(("qtbase" ,qtbase)
1106 ("qtdeclarative" ,qtdeclarative)))
1107 (synopsis "Display web content in a QML application")
1108 (description "Qt WebView provides a way to display web content in a QML
1109application without necessarily including a full web browser stack by using
1110native APIs where it makes sense.")))
1111
d5ca54ce
EF
1112(define-public qtlocation
1113 (package (inherit qtsvg)
1114 (name "qtlocation")
6d460e80 1115 (version "5.12.6")
d5ca54ce
EF
1116 (source (origin
1117 (method url-fetch)
1118 (uri (string-append "https://download.qt.io/official_releases/qt/"
1119 (version-major+minor version) "/" version
1f52eb7b 1120 "/submodules/" name "-everywhere-src-"
d5ca54ce
EF
1121 version ".tar.xz"))
1122 (sha256
1123 (base32
6d460e80 1124 "0y12vs6jwiwljdn57jqs1dwi6wfw1l5l95dvj9g93h739p533qks"))))
c195b5ba
EF
1125 (arguments
1126 (substitute-keyword-arguments (package-arguments qtsvg)
1127 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
d5ca54ce
EF
1128 (native-inputs
1129 `(("perl" ,perl)
1130 ("qtdeclarative" ,qtdeclarative)
9a935ef2 1131 ("qtquickcontrols" ,qtquickcontrols)
d5ca54ce 1132 ("qtserialport" ,qtserialport)))
924e6ddf
EF
1133 (inputs
1134 `(("icu4c" ,icu4c)
1135 ("openssl" ,openssl)
1136 ("qtbase" ,qtbase)
96412f34
EF
1137 ("zlib" ,zlib)))
1138 (synopsis "Qt Location and Positioning modules")
1139 (description "The Qt Location module provides an interface for location,
1140positioning and geolocation plugins.")))
d5ca54ce 1141
d438c968
EF
1142(define-public qttools
1143 (package (inherit qtsvg)
1144 (name "qttools")
6d460e80 1145 (version "5.12.6")
d438c968
EF
1146 (source (origin
1147 (method url-fetch)
1148 (uri (string-append "https://download.qt.io/official_releases/qt/"
1149 (version-major+minor version) "/" version
1f52eb7b 1150 "/submodules/" name "-everywhere-src-"
d438c968
EF
1151 version ".tar.xz"))
1152 (sha256
1153 (base32
6d460e80 1154 "0xy7sf8w2lln1l59lhrf0kb687avwirrh63izp7509jwi33r2jg9"))))
c195b5ba
EF
1155 (arguments
1156 (substitute-keyword-arguments (package-arguments qtsvg)
1157 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
d438c968
EF
1158 (native-inputs
1159 `(("perl" ,perl)
124351ef
EF
1160 ("qtdeclarative" ,qtdeclarative)
1161 ("vulkan-headers" ,vulkan-headers)))
d438c968
EF
1162 (inputs
1163 `(("mesa" ,mesa)
96412f34
EF
1164 ("qtbase" ,qtbase)))
1165 (synopsis "Qt Tools and Designer modules")
1166 (description "The Qt Tools module provides a set of applications to browse
1167the documentation, translate applications, generate help files and other stuff
1168that helps in Qt development.")))
d438c968 1169
4742c4de
EF
1170(define-public qtscript
1171 (package (inherit qtsvg)
1172 (name "qtscript")
6d460e80 1173 (version "5.12.6")
4742c4de
EF
1174 (source (origin
1175 (method url-fetch)
1176 (uri (string-append "https://download.qt.io/official_releases/qt/"
1177 (version-major+minor version) "/" version
1f52eb7b 1178 "/submodules/" name "-everywhere-src-"
4742c4de
EF
1179 version ".tar.xz"))
1180 (sha256
1181 (base32
6d460e80 1182 "0z3p4bb2ddylb7y2xvagjbn7fc5d0ic08cmrrb67h8wf6fnq5051"))
7c5cf7a2 1183 (patches (search-patches "qtscript-disable-tests.patch"))))
4742c4de
EF
1184 (native-inputs
1185 `(("perl" ,perl)
1186 ("qttools" ,qttools)))
1187 (inputs
96412f34
EF
1188 `(("qtbase" ,qtbase)))
1189 (synopsis "Qt Script module")
1190 (description "Qt provides support for application scripting with ECMAScript.
1191The following guides and references cover aspects of programming with
1192ECMAScript and Qt.")))
4742c4de 1193
ae0e5133
DC
1194(define-public qtquickcontrols
1195 (package (inherit qtsvg)
1196 (name "qtquickcontrols")
6d460e80 1197 (version "5.12.6")
ae0e5133
DC
1198 (source (origin
1199 (method url-fetch)
1200 (uri (string-append "https://download.qt.io/official_releases/qt/"
1201 (version-major+minor version) "/" version
1f52eb7b 1202 "/submodules/" name "-everywhere-src-"
ae0e5133
DC
1203 version ".tar.xz"))
1204 (sha256
1205 (base32
6d460e80 1206 "169cvwiav5d538cw81rbdimb1pis0z6fkaxlwhd4z4pzhyhrd3f4"))))
c195b5ba
EF
1207 (arguments
1208 (substitute-keyword-arguments (package-arguments qtsvg)
1209 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
ae0e5133
DC
1210 (inputs
1211 `(("qtbase" ,qtbase)
96412f34
EF
1212 ("qtdeclarative" ,qtdeclarative)))
1213 (synopsis "Qt Quick Controls and other Quick modules")
1214 (description "The QtScript module provides classes for making Qt
1215applications scriptable. This module provides a set of extra components that
1216can be used to build complete interfaces in Qt Quick.")))
ae0e5133 1217
42da1492
DC
1218(define-public qtquickcontrols2
1219 (package (inherit qtsvg)
1220 (name "qtquickcontrols2")
6d460e80 1221 (version "5.12.6")
42da1492
DC
1222 (source (origin
1223 (method url-fetch)
1224 (uri (string-append "https://download.qt.io/official_releases/qt/"
1225 (version-major+minor version) "/" version
1f52eb7b 1226 "/submodules/" name "-everywhere-src-"
42da1492
DC
1227 version ".tar.xz"))
1228 (sha256
1229 (base32
6d460e80 1230 "0w5910wblzc7q2llyb7fyfcbmy1fl369c6w5d6r5sh26z490gasw"))))
c195b5ba
EF
1231 (arguments
1232 (substitute-keyword-arguments (package-arguments qtsvg)
1233 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
42da1492
DC
1234 (inputs
1235 `(("qtbase" ,qtbase)
96412f34
EF
1236 ("qtdeclarative" ,qtdeclarative)))
1237 (synopsis "Qt Quick Controls 2 and other Quick 2 modules")
1238 (description "The Qt Quick Controls 2 module contains the Qt Labs Platform
1239module that provides platform integration: native dialogs, menus and menu bars,
1240and tray icons. It falls back to Qt Widgets when a native implementation is
1241not available.")))
42da1492 1242
4e4ed0ee
DC
1243(define-public qtgraphicaleffects
1244 (package (inherit qtsvg)
1245 (name "qtgraphicaleffects")
6d460e80 1246 (version "5.12.6")
4e4ed0ee
DC
1247 (source (origin
1248 (method url-fetch)
1249 (uri (string-append "https://download.qt.io/official_releases/qt/"
1250 (version-major+minor version) "/" version
1f52eb7b 1251 "/submodules/" name "-everywhere-src-"
4e4ed0ee
DC
1252 version ".tar.xz"))
1253 (sha256
1254 (base32
6d460e80 1255 "1vvpq34433j94n9yyhh4if4yv51i8xiffpvyn3xgffx14iv35l6y"))))
c195b5ba
EF
1256 (arguments
1257 (substitute-keyword-arguments (package-arguments qtsvg)
1258 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
4e4ed0ee
DC
1259 (inputs
1260 `(("qtbase" ,qtbase)
96412f34
EF
1261 ("qtdeclarative" ,qtdeclarative)))
1262 (synopsis "Qt Graphical Effects module")
1263 (description "The Qt Graphical Effects module provides a set of QML types
1264for adding visually impressive and configurable effects to user interfaces.
1265Effects are visual items that can be added to Qt Quick user interface as UI
1266components. The API consists of over 20 effects provided as separate QML
1267types. The effects cover functional areas such as blending, masking, blurring,
1268coloring, and many more.")))
4e4ed0ee 1269
51519fd3
EF
1270(define-public qtgamepad
1271 (package (inherit qtsvg)
1272 (name "qtgamepad")
6d460e80 1273 (version "5.12.6")
51519fd3
EF
1274 (source (origin
1275 (method url-fetch)
1276 (uri (string-append "https://download.qt.io/official_releases/qt/"
1277 (version-major+minor version) "/" version
1f52eb7b 1278 "/submodules/" name "-everywhere-src-"
51519fd3
EF
1279 version ".tar.xz"))
1280 (sha256
1281 (base32
6d460e80 1282 "1cxkqnhx0baxh3csjl7ar151v0zizf86f4338rr38liwb7rwbsz1"))))
51519fd3
EF
1283 (native-inputs
1284 `(("perl" ,perl)
1285 ("pkg-config" ,pkg-config)))
1286 (inputs
1287 `(("fontconfig" ,fontconfig)
1288 ("freetype" ,freetype)
1289 ("libxrender" ,libxrender)
1290 ("sdl2" ,sdl2)
1291 ("qtbase" ,qtbase)
96412f34
EF
1292 ("qtdeclarative" ,qtdeclarative)))
1293 (synopsis "Qt Gamepad module")
1294 (description "The Qt Gamepad module is an add-on library that enables Qt
1295applications to support the use of gamepad hardware and in some cases remote
1296control equipment. The module provides both QML and C++ interfaces. The
1297primary target audience are embedded devices with fullscreen user interfaces,
1298and mobile applications targeting TV-like form factors.")))
51519fd3 1299
56cd88fd
EF
1300(define-public qtscxml
1301 (package (inherit qtsvg)
1302 (name "qtscxml")
6d460e80 1303 (version "5.12.6")
56cd88fd
EF
1304 (source (origin
1305 (method url-fetch)
1306 (uri (string-append "https://download.qt.io/official_releases/qt/"
1307 (version-major+minor version) "/" version
1f52eb7b 1308 "/submodules/" name "-everywhere-src-"
56cd88fd
EF
1309 version ".tar.xz"))
1310 (sha256
1311 (base32
6d460e80 1312 "12y6ga7j6xby9rz1c9h17r9ih4i16i1ylr6b4vmrn7svidy87msk"))
56cd88fd
EF
1313 (modules '((guix build utils)))
1314 (snippet
c195b5ba
EF
1315 '(begin
1316 (delete-file-recursively "tests/3rdparty")
1317 ;; the scion test refers to the bundled 3rd party test code.
1318 (substitute* "tests/auto/auto.pro"
6cbee49d
MW
1319 (("scion") "#"))
1320 #t))))
56cd88fd
EF
1321 (inputs
1322 `(("qtbase" ,qtbase)
96412f34
EF
1323 ("qtdeclarative" ,qtdeclarative)))
1324 (synopsis "Qt SCXML module")
1325 (description "The Qt SCXML module provides functionality to create state
1326machines from SCXML files. This includes both dynamically creating state
1327machines (loading the SCXML file and instantiating states and transitions) and
1328generating a C++ file that has a class implementing the state machine. It
1329also contains functionality to support data models and executable content.")))
56cd88fd 1330
de5e0180
EF
1331(define-public qtpurchasing
1332 (package (inherit qtsvg)
1333 (name "qtpurchasing")
6d460e80 1334 (version "5.12.6")
de5e0180
EF
1335 (source (origin
1336 (method url-fetch)
1337 (uri (string-append "https://download.qt.io/official_releases/qt/"
1338 (version-major+minor version) "/" version
1f52eb7b 1339 "/submodules/" name "-everywhere-src-"
de5e0180
EF
1340 version ".tar.xz"))
1341 (sha256
1342 (base32
6d460e80 1343 "1kbhmzrw612yb4brxi3fwslil31j31vm0zqpb52vcma7vbivg80z"))))
de5e0180
EF
1344 (inputs
1345 `(("qtbase" ,qtbase)
96412f34
EF
1346 ("qtdeclarative" ,qtdeclarative)))
1347 (synopsis "Qt Purchasing module")
1348 (description "The Qt Purchasing module provides and in-app API for
1349purchasing goods and services.")))
de5e0180 1350
173b54b9
EF
1351(define-public qtcanvas3d
1352 (package (inherit qtsvg)
1353 (name "qtcanvas3d")
6d460e80 1354 (version "5.12.6")
173b54b9
EF
1355 (source (origin
1356 (method url-fetch)
1357 (uri (string-append "https://download.qt.io/official_releases/qt/"
1358 (version-major+minor version) "/" version
1f52eb7b 1359 "/submodules/" name "-everywhere-src-"
173b54b9
EF
1360 version ".tar.xz"))
1361 (sha256
1362 (base32
6d460e80 1363 "024xglrb321rp3wb3fhprw7pl6zvmpgfkpwgabbyx8p58k4yccrd"))
173b54b9
EF
1364 (modules '((guix build utils)))
1365 (snippet
1f52eb7b
EF
1366 '(begin
1367 (delete-file-recursively "examples/canvas3d/3rdparty")
1368 #t))))
c195b5ba
EF
1369 (arguments
1370 (substitute-keyword-arguments (package-arguments qtsvg)
1371 ;; Building the tests depends on the bundled 3rd party javascript files,
1372 ;; and the test phase fails to import QtCanvas3D, causing the phase to
1373 ;; fail, so we skip building them for now.
1374 ((#:phases phases)
1375 `(modify-phases ,phases
1376 (replace 'configure
1377 (lambda* (#:key outputs #:allow-other-keys)
1378 (let ((out (assoc-ref outputs "out")))
1f52eb7b
EF
1379 (invoke "qmake" "QT_BUILD_PARTS = libs tools"
1380 (string-append "PREFIX=" out)))))))
c195b5ba 1381 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
173b54b9
EF
1382 (native-inputs `())
1383 (inputs
1384 `(("qtbase" ,qtbase)
96412f34
EF
1385 ("qtdeclarative" ,qtdeclarative)))
1386 (synopsis "Qt Canvas 3D module")
1387 (description "The Qt Canvas 3D module provides a way to make WebGL-like 3D
1388drawing calls from Qt Quick JavaScript.")))
173b54b9 1389
68bbe14b
EF
1390(define-public qtcharts
1391 (package (inherit qtsvg)
1392 (name "qtcharts")
6d460e80 1393 (version "5.12.6")
68bbe14b
EF
1394 (source (origin
1395 (method url-fetch)
1396 (uri (string-append "https://download.qt.io/official_releases/qt/"
1397 (version-major+minor version) "/" version
1f52eb7b 1398 "/submodules/" name "-everywhere-src-"
68bbe14b
EF
1399 version ".tar.xz"))
1400 (sha256
1401 (base32
6d460e80 1402 "0gdark4z2g8j0kzjg1aqq91ap04h6hzjl163g8xlwxwdn5dxpnql"))))
c195b5ba
EF
1403 (arguments
1404 (substitute-keyword-arguments (package-arguments qtsvg)
1405 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
68bbe14b
EF
1406 (inputs
1407 `(("qtbase" ,qtbase)
96412f34
EF
1408 ("qtdeclarative" ,qtdeclarative)))
1409 (synopsis "Qt Charts module")
1410 (description "The Qt Charts module provides a set of easy to use chart
1411components. It uses the Qt Graphics View Framework, therefore charts can be
1412easily integrated to modern user interfaces. Qt Charts can be used as QWidgets,
1413QGraphicsWidget, or QML types. Users can easily create impressive graphs by
9c2c524d
EF
1414selecting one of the charts themes.")
1415 (license license:gpl3)))
68bbe14b 1416
a69945a7
EF
1417(define-public qtdatavis3d
1418 (package (inherit qtsvg)
1419 (name "qtdatavis3d")
6d460e80 1420 (version "5.12.6")
a69945a7
EF
1421 (source (origin
1422 (method url-fetch)
1423 (uri (string-append "https://download.qt.io/official_releases/qt/"
1424 (version-major+minor version) "/" version
1f52eb7b 1425 "/submodules/" name "-everywhere-src-"
a69945a7
EF
1426 version ".tar.xz"))
1427 (sha256
1428 (base32
6d460e80 1429 "1zm4xfi2ijqr3n3g0lfs3yzil6w7c54r8vsj1d541lz7wnm92ka1"))))
c195b5ba
EF
1430 (arguments
1431 (substitute-keyword-arguments (package-arguments qtsvg)
1432 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
a69945a7
EF
1433 (inputs
1434 `(("qtbase" ,qtbase)
96412f34
EF
1435 ("qtdeclarative" ,qtdeclarative)))
1436 (synopsis "Qt Data Visualization module")
1437 (description "The Qt Data Visualization module provides a way to visualize
1438data in 3D as bar, scatter, and surface graphs. It is especially useful for
1439visualizing depth maps and large quantities of rapidly changing data, such as
1440data received from multiple sensors. The look and feel of graphs can be
9c2c524d
EF
1441customized by using themes or by adding custom items and labels to them.")
1442 (license license:gpl3)))
f47d2793
EF
1443
1444(define-public qtnetworkauth
1445 (package (inherit qtsvg)
1446 (name "qtnetworkauth")
6d460e80 1447 (version "5.12.6")
f47d2793
EF
1448 (source (origin
1449 (method url-fetch)
1450 (uri (string-append "https://download.qt.io/official_releases/qt/"
1451 (version-major+minor version) "/" version
1f52eb7b 1452 "/submodules/" name "-everywhere-src-"
f47d2793
EF
1453 version ".tar.xz"))
1454 (sha256
1455 (base32
6d460e80 1456 "1gba6rdhcvljc4dnzhnkxrdlaxm3y095ljqg1sz3p1k0m632s4pa"))))
f18c9470
EF
1457 (arguments
1458 (substitute-keyword-arguments (package-arguments qtsvg)
1459 ((#:phases phases)
1460 `(modify-phases ,phases
1461 (add-after 'unpack 'remove-failing-test
1462 (lambda _
1463 ;; These tests can't find their test data.
1464 (substitute* "tests/auto/auto.pro"
1465 (("oauth1 ") "# oauth1 "))
1466 #t))))))
f47d2793 1467 (inputs
96412f34
EF
1468 `(("qtbase" ,qtbase)))
1469 (synopsis "Qt Network Authorization module")
1470 (description "The Qt Network Authorization module provides an
1471implementation of OAuth and OAuth2 authenticathon methods for Qt.")))
213238d9
EF
1472
1473(define-public qtremoteobjects
1474 (package (inherit qtsvg)
1475 (name "qtremoteobjects")
6d460e80 1476 (version "5.12.6")
213238d9
EF
1477 (source (origin
1478 (method url-fetch)
1479 (uri (string-append "https://download.qt.io/official_releases/qt/"
1480 (version-major+minor version) "/" version
1f52eb7b 1481 "/submodules/" name "-everywhere-src-"
213238d9
EF
1482 version ".tar.xz"))
1483 (sha256
1484 (base32
6d460e80 1485 "16fna70pljn45yj6hv3g4qvb1imcnfj43jchvydspdhg08ykbda9"))))
1f52eb7b
EF
1486 (arguments
1487 (substitute-keyword-arguments (package-arguments qtsvg)
1488 ((#:phases phases)
1489 `(modify-phases ,phases
1490 (add-after 'unpack 'remove-failing-test
1491 (lambda _
1492 ;; This test can't find its imports.
1493 (substitute* "tests/auto/qml/qml.pro"
b6476ecc
EF
1494 (("integration") "# integration")
1495 (("usertypes") "# usertypes"))
1f52eb7b 1496 #t))))))
213238d9
EF
1497 (inputs
1498 `(("qtbase" ,qtbase)
96412f34
EF
1499 ("qtdeclarative" ,qtdeclarative)))
1500 (synopsis "Qt Remote Objects module")
1501 (description "The Qt Remote Objects module is an @dfn{inter-process
1502communication} (IPC) module developed for Qt. The idea is to extend existing
1503Qt's functionalities to enable an easy exchange of information between
1504processes or computers.")))
b84cc89a
EF
1505
1506(define-public qtspeech
1507 (package (inherit qtsvg)
1508 (name "qtspeech")
6d460e80 1509 (version "5.12.6")
b84cc89a
EF
1510 (source (origin
1511 (method url-fetch)
1512 (uri (string-append "https://download.qt.io/official_releases/qt/"
1513 (version-major+minor version) "/" version
1f52eb7b 1514 "/submodules/" name "-everywhere-src-"
b84cc89a
EF
1515 version ".tar.xz"))
1516 (sha256
1517 (base32
6d460e80 1518 "12l7rycjfa6d9gnnjd6i097pf1qqzjnz9c1jgxhpldvkf0n7pbi7"))))
2c7511fb 1519
b6476ecc
EF
1520 (arguments
1521 (substitute-keyword-arguments (package-arguments qtsvg)
1522 ((#:tests? _ #f) #f))) ; TODO: Enable the tests
b84cc89a
EF
1523 (inputs
1524 `(("qtbase" ,qtbase)))
1525 (native-inputs
1526 `(("perl" ,perl)
1527 ("qtdeclarative" ,qtdeclarative)
1528 ("qtmultimedia" ,qtmultimedia)
96412f34
EF
1529 ("qtxmlpatterns" ,qtxmlpatterns)))
1530 (synopsis "Qt Speech module")
1531 (description "The Qt Speech module enables a Qt application to support
1532accessibility features such as text-to-speech, which is useful for end-users
1533who are visually challenged or cannot access the application for whatever
1534reason. The most common use case where text-to-speech comes in handy is when
1535the end-user is driving and cannot attend the incoming messages on the phone.
1536In such a scenario, the messaging application can read out the incoming
1537message.")))
a69945a7 1538
db481636
MR
1539(define-public qtwebengine
1540 (package
1541 (inherit qtsvg)
1542 (name "qtwebengine")
1543 (version (package-version qtbase))
2c7511fb
MB
1544 (source
1545 (origin
1546 (method url-fetch)
1547 (uri (string-append "https://download.qt.io/official_releases/qt/"
1548 (version-major+minor version) "/" version
1549 "/submodules/" name "-everywhere-src-"
1550 version ".tar.xz"))
1551 (sha256
1552 (base32 "08c60nh95m98mcqk444axs76xi6m9x0wvdxrzk9c2cxwqdbz59fa"))
1553 (modules '((ice-9 ftw)
1554 (ice-9 match)
1555 (srfi srfi-1)
1556 (srfi srfi-26)
1557 (guix build utils)))
1558 (snippet
1559 '(begin
1560 (let ((preserved-third-party-files
1561 '("base/third_party/dmg_fp"
1562 "base/third_party/dynamic_annotations"
1563 "base/third_party/icu"
1564 "base/third_party/libevent"
1565 "base/third_party/nspr"
1566 "base/third_party/superfasthash"
1567 "base/third_party/symbolize"
1568 "base/third_party/xdg_mime"
1569 "base/third_party/xdg_user_dirs"
1570 "net/third_party/http2"
1571 "net/third_party/mozilla_security_manager"
1572 "net/third_party/nss"
1573 "net/third_party/spdy"
1574 "net/third_party/quic"
1575 "third_party/abseil-cpp"
1576 "third_party/angle"
1577 "third_party/angle/src/common/third_party/base"
1578 "third_party/angle/src/common/third_party/smhasher"
1579 "third_party/angle/src/third_party/compiler"
1580 "third_party/blink"
1581 "third_party/boringssl"
1582 "third_party/boringssl/src/third_party/fiat"
1583 "third_party/breakpad"
1584 "third_party/brotli"
1585 "third_party/ced"
1586 "third_party/crc32c"
1587 "third_party/ffmpeg"
1588 "third_party/googletest"
1589 "third_party/hunspell"
1590 "third_party/iccjpeg"
1591 "third_party/icu"
1592 "third_party/inspector_protocol"
1593 "third_party/jinja2"
1594 "third_party/jstemplate"
1595 "third_party/khronos"
1596 "third_party/leveldatabase"
1597 "third_party/libaddressinput"
1598 "third_party/libjingle_xmpp"
1599 "third_party/libpng"
1600 "third_party/libsrtp"
1601 "third_party/libsync"
1602 "third_party/libudev"
1603 "third_party/libvpx"
1604 "third_party/libwebm"
1605 "third_party/libwebp"
1606 "third_party/libxml"
1607 "third_party/libxslt"
1608 "third_party/libyuv"
1609 "third_party/lss"
1610 "third_party/markupsafe"
1611 "third_party/mesa"
1612 "third_party/metrics_proto"
1613 "third_party/modp_b64"
1614 "third_party/opus"
1615 "third_party/ots"
1616 "third_party/ply"
1617 "third_party/polymer"
1618 "third_party/protobuf"
1619 "third_party/pyjson5"
1620 "third_party/re2"
1621 "third_party/rnnoise"
1622 "third_party/skia"
1623 "third_party/skia/third_party/gif"
1624 "third_party/skia/third_party/skcms"
1625 "third_party/smhasher"
1626 "third_party/snappy"
1627 "third_party/sqlite"
1628 "third_party/usrsctp"
1629 "third_party/web-animations-js"
1630 "third_party/webrtc"
1631 "third_party/webrtc_overrides"
1632 "third_party/widevine/cdm/widevine_cdm_common.h"
1633 "third_party/widevine/cdm/widevine_cdm_version.h"
1634 "third_party/woff2"
1635 "third_party/yasm"
1636 "third_party/zlib"
1637 "url/third_party/mozilla"
1638 "v8/src/third_party/utf8-decoder"
1639 "v8/src/third_party/valgrind"
1640 "v8/third_party/antlr4"
1641 "v8/third_party/inspector_protocol"))
1642 (protected (make-regexp "\\.(gn|gyp)i?$")))
1643 (define preserved-club
1644 (map (lambda (member)
1645 (string-append "./" member))
1646 preserved-third-party-files))
1647 (define (empty? dir)
1648 (equal? (scandir dir) '("." "..")))
1649 (define (third-party? file)
1650 (string-contains file "third_party/"))
1651 (define (useless? file)
1652 (any (cute string-suffix? <> file)
1653 '(".zip" ".so" ".dll" ".exe" ".jar")))
1654 (define (parents child)
1655 ;; Return all parent directories of CHILD up to and including
1656 ;; the closest "third_party".
1657 (let* ((dirs (match (string-split child #\/)
1658 ((dirs ... last) dirs)))
1659 (closest (list-index (lambda (dir)
1660 (string=? "third_party" dir))
1661 (reverse dirs)))
1662 (delim (- (length dirs) closest)))
1663 (fold (lambda (dir prev)
1664 (cons (string-append (car prev) "/" dir)
1665 prev))
1666 (list (string-join (list-head dirs delim) "/"))
1667 (list-tail dirs delim))))
1668 (define (remove-loudly file)
1669 (format #t "deleting ~a...~%" file)
1670 (force-output)
1671 (delete-file file))
1672 (define (delete-unwanted-files child stat flag base level)
1673 (match flag
1674 ((or 'regular 'symlink 'stale-symlink)
1675 (when (third-party? child)
1676 (unless (or (member child preserved-club)
1677 (any (cute member <> preserved-club)
1678 (parents child))
1679 (regexp-exec protected child))
1680 (remove-loudly child)))
1681 (when (and (useless? child) (file-exists? child))
1682 (remove-loudly child))
1683 #t)
1684 ('directory-processed
1685 (when (empty? child)
1686 (rmdir child))
1687 #t)
1688 (_ #t)))
1689
1690 (with-directory-excursion "src/3rdparty"
1691 ;; TODO: Try removing "gn" too for future versions of qtwebengine.
1692 (delete-file-recursively "ninja")
1693
1694 (with-directory-excursion "chromium"
1695 ;; Delete bundled software and binaries that were not explicitly
1696 ;; preserved above.
1697 (nftw "." delete-unwanted-files 'depth 'physical)
1698
1699 ;; Assert that each preserved item is present to catch removals.
1700 (for-each (lambda (third-party)
1701 (unless (file-exists? third-party)
1702 (error (format #f "~s does not exist!~%" third-party))))
1703 preserved-club)
1704
1705 ;; Use relative header locations instead of hard coded ones.
1706 (substitute*
1707 "base/third_party/dynamic_annotations/dynamic_annotations.c"
1708 (("base/third_party/valgrind") "valgrind"))
1709 (substitute*
1710 "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
1711 (("third_party/curl") "curl"))
1712
1713 ;; Replace Google Analytics bundle with an empty file and hope
1714 ;; no one notices.
1715 (mkdir-p "third_party/analytics")
1716 (call-with-output-file
1717 "third_party/analytics/google-analytics-bundle.js"
1718 (lambda (port)
1719 (const #t)))))
1720
1721 ;; Do not enable support for loading the Widevine DRM plugin.
1722 (substitute* "src/core/config/common.pri"
1723 (("enable_widevine=true")
1724 "enable_widevine=false"))
1725 #t)))))
db481636
MR
1726 (build-system gnu-build-system)
1727 (native-inputs
1728 `(("bison" ,bison)
1729 ("flex" ,flex)
1730 ("gperf" ,gperf)
1731 ("ninja" ,ninja)
1732 ("perl" ,perl)
1733 ("pkg-config" ,pkg-config)
1734 ("python-2" ,python-2)
1735 ("ruby" ,ruby)))
1736 (inputs
1737 `(("alsa-lib" ,alsa-lib)
1738 ("atk" ,atk)
1739 ("cups-minimal" ,cups-minimal)
2c7511fb 1740 ("curl" ,curl)
db481636
MR
1741 ("dbus" ,dbus)
1742 ("ffmpeg" ,ffmpeg)
1743 ("fontconfig" ,fontconfig)
1744 ("harbuzz" ,harfbuzz)
1745 ("icu4c" ,icu4c)
1746 ("jsoncpp" ,jsoncpp)
1747 ("lcms" ,lcms)
1748 ("libcap" ,libcap)
1749 ("libevent" ,libevent)
1750 ("libgcrypt" ,libgcrypt)
1751 ("libjpeg" ,libjpeg-turbo)
1752 ("libvpx" ,libvpx)
1753 ;; FIXME: configure does not find system lcms
1754 ;; ("lcms" ,lcms)
1755 ("libwebp" ,libwebp)
1756 ("libx11" ,libx11)
1757 ("libxcb" ,libxcb)
1758 ("libxcomposite" ,libxcomposite)
1759 ("libxcursor" ,libxcursor)
1760 ("libxi" ,libxi)
1761 ("libxkbcommon" ,libxkbcommon)
1762 ;; FIXME: libxml2 needs to built with icu support though it links to
1763 ;; libxml2 configure summary still states "Checking for compatible
1764 ;; system libxml2... no"
1765 ("libxml2" ,libxml2)
1766 ("libxrandr" ,libxrandr)
1767 ("libxrender" ,libxrender)
1768 ("libxslt" ,libxslt)
1769 ("libxtst" ,libxtst)
1770 ("mesa" ,mesa)
1771 ("minizip" ,minizip)
1772 ("nss" ,nss)
1773 ("opus" ,opus)
1774 ("pciutils" ,pciutils)
1775 ("protobuf" ,protobuf)
1776 ("pulseaudio" ,pulseaudio)
1777 ("qtbase" ,qtbase)
1778 ("qtdeclarative" ,qtdeclarative)
1779 ("qtmultimedia" ,qtmultimedia)
1780 ("qtwebchannel" ,qtwebchannel)
1781 ("re2" ,re2)
1782 ("snappy" ,snappy)
1783 ("udev" ,eudev)
2c7511fb 1784 ("valgrind" ,valgrind)
db481636
MR
1785 ("xcb-util" ,xcb-util)))
1786 (arguments
1787 (substitute-keyword-arguments (package-arguments qtsvg)
1788 ((#:phases phases)
1789 `(modify-phases ,phases
1790 (add-before 'configure 'substitute-source
1791 (lambda* (#:key inputs outputs #:allow-other-keys)
1792 (let ((out (assoc-ref outputs "out"))
1793 (nss (assoc-ref inputs "nss"))
1794 (udev (assoc-ref inputs "udev")))
1795 ;; Qtwebengine is not installed into the same prefix as
1796 ;; qtbase. Some qtbase QTLibraryInfo constants will not
1797 ;; work. Replace with the full path to the qtwebengine
1798 ;; translations and locales in the store.
1799 (substitute* "src/core/web_engine_library_info.cpp"
1800 (("QLibraryInfo::location\\(QLibraryInfo::TranslationsPath\\)")
1801 (string-append "QLatin1String(\"" out "/share/qt5/translations\")"))
1802 (("QLibraryInfo::location\\(QLibraryInfo::DataPath\\)")
1803 (string-append "QLatin1String(\"" out "/share/qt5\")")))
1804 ;; Substitute full dynamic library path for nss.
1805 (substitute* "src/3rdparty/chromium/crypto/nss_util.cc"
1806 (("libnssckbi.so")
1807 (string-append nss "/lib/nss/libnssckbi.so")))
1808 ;; Substitute full dynamic library path for udev.
1809 (substitute* "src/3rdparty/chromium/device/udev_linux/udev1_loader.cc"
1810 (("libudev.so.1")
1811 (string-append udev "/lib/libudev.so.1")))
1812 #t)))
1813 (add-before 'configure 'set-env
1814 (lambda _
1815 ;; Avoids potential race conditions.
1816 (setenv "PYTHONDONTWRITEBYTECODE" "1")
1817 (setenv "NINJAFLAGS"
1818 (string-append "-k1" ;less verbose build output
1819 ;; Respect the '--cores' option of 'guix build'.
1820 " -j" (number->string (parallel-job-count))))
1821 #t))
1822 (replace 'configure
1823 (lambda _
1824 ;; Valid QT_BUILD_PARTS variables are:
1825 ;; libs tools tests examples demos docs translations
1826 (invoke "qmake" "QT_BUILD_PARTS = libs tools" "--"
1827 "--webengine-printing-and-pdf=no"
1828 "--webengine-ffmpeg=system"
1829 "--webengine-icu=system"
1830 "--webengine-pepper-plugins=no")))))
1831 ;; Tests are disabled due to "Could not find QtWebEngineProcess error"
1832 ;; It's possible this can be fixed by setting QTWEBENGINEPROCESS_PATH
1833 ;; before running tests.
1834 ((#:tests? _ #f) #f)))
1835 (native-search-paths
1836 (list (search-path-specification
1837 (file-type 'regular)
1838 (separator #f)
1839 (variable "QTWEBENGINEPROCESS_PATH")
1840 (files '("lib/qt5/libexec/QtWebEngineProcess")))))
1841 (home-page "https://wiki.qt.io/QtWebEngine")
1842 (synopsis "Qt WebEngine module")
1843 (description "The Qt5WebEngine module provides support for web applications
1844using the Chromium browser project. The Chromium source code has Google services
1845and binaries removed, and adds modular support for using system libraries.")
1846 (license license:lgpl2.1+)))
1847
84ef83dd
AE
1848(define-public python-sip
1849 (package
1850 (name "python-sip")
3e93b2bd 1851 (version "4.19.18")
84ef83dd
AE
1852 (source
1853 (origin
1854 (method url-fetch)
3e93b2bd
EF
1855 (uri (string-append "https://www.riverbankcomputing.com/static/"
1856 "Downloads/sip/" version "/sip-" version ".tar.gz"))
84ef83dd
AE
1857 (sha256
1858 (base32
3e93b2bd 1859 "07kyd56xgbb40ljb022rq82shgxprlbl0z27mpf1b6zd00w8dgf0"))))
84ef83dd
AE
1860 (build-system gnu-build-system)
1861 (native-inputs
1862 `(("python" ,python-wrapper)))
1863 (arguments
1864 `(#:tests? #f ; no check target
e8bdd73a
AE
1865 #:modules ((srfi srfi-1)
1866 ,@%gnu-build-system-modules)
84ef83dd 1867 #:phases
39766868
EF
1868 (modify-phases %standard-phases
1869 (replace 'configure
1870 (lambda* (#:key inputs outputs #:allow-other-keys)
1871 (let* ((out (assoc-ref outputs "out"))
1872 (bin (string-append out "/bin"))
1873 (include (string-append out "/include"))
1874 (python (assoc-ref inputs "python"))
1875 (python-version
1876 (last (string-split python #\-)))
1877 (python-major+minor
1878 (string-join
1879 (take (string-split python-version #\.) 2)
1880 "."))
1881 (lib (string-append out "/lib/python"
1882 python-major+minor
1883 "/site-packages")))
e3232b26 1884 (invoke "python" "configure.py"
e3232b26
EF
1885 "--bindir" bin
1886 "--destdir" lib
1887 "--incdir" include)))))))
39766868 1888 (home-page "https://www.riverbankcomputing.com/software/sip/intro")
84ef83dd
AE
1889 (synopsis "Python binding creator for C and C++ libraries")
1890 (description
1891 "SIP is a tool to create Python bindings for C and C++ libraries. It
1892was originally developed to create PyQt, the Python bindings for the Qt
1893toolkit, but can be used to create bindings for any C or C++ library.
1894
1895SIP comprises a code generator and a Python module. The code generator
1896processes a set of specification files and generates C or C++ code, which
1897is then compiled to create the bindings extension module. The SIP Python
1898module provides support functions to the automatically generated code.")
1899 ;; There is a choice between a python like license, gpl2 and gpl3.
1900 ;; For compatibility with pyqt, we need gpl3.
225941b0 1901 (license license:gpl3)))
84ef83dd
AE
1902
1903(define-public python2-sip
1904 (package (inherit python-sip)
1905 (name "python2-sip")
1906 (native-inputs
1907 `(("python" ,python-2)))))
014e7dd8
AE
1908
1909(define-public python-pyqt
1910 (package
1911 (name "python-pyqt")
3e93b2bd 1912 (version "5.12.3")
014e7dd8
AE
1913 (source
1914 (origin
1915 (method url-fetch)
3e93b2bd
EF
1916 (uri (string-append "https://www.riverbankcomputing.com/static/"
1917 "Downloads/PyQt5/" version "/PyQt5_gpl-"
1918 version ".tar.gz"))
014e7dd8
AE
1919 (sha256
1920 (base32
3e93b2bd 1921 "041155bdzp57jy747p5d59740c55yy3241cy1x2lgcdsvqvzmc0d"))
2338755a 1922 (patches (search-patches "pyqt-configure.patch"
e8062974 1923 "pyqt-unbundled-qt.patch"
2338755a 1924 "pyqt-public-sip.patch"))))
014e7dd8
AE
1925 (build-system gnu-build-system)
1926 (native-inputs
499991cf
EB
1927 `(("qtbase" ,qtbase))) ; for qmake
1928 (propagated-inputs
1929 `(("python-sip" ,python-sip)))
014e7dd8 1930 (inputs
e9adcd81
EF
1931 `(("python" ,python-wrapper)
1932 ("qtbase" ,qtbase)
1933 ("qtconnectivity" ,qtconnectivity)
1934 ("qtdeclarative" ,qtdeclarative)
1935 ("qtlocation" ,qtlocation)
1936 ("qtmultimedia" ,qtmultimedia)
1937 ("qtsensors" ,qtsensors)
1938 ("qtserialport" ,qtserialport)
1939 ("qtsvg" ,qtsvg)
1940 ("qttools" ,qttools)
1941 ("qtwebchannel" ,qtwebchannel)
52404022 1942 ("qtwebkit" ,qtwebkit)
e9adcd81
EF
1943 ("qtwebsockets" ,qtwebsockets)
1944 ("qtx11extras" ,qtx11extras)
1945 ("qtxmlpatterns" ,qtxmlpatterns)))
014e7dd8 1946 (arguments
e8bdd73a
AE
1947 `(#:modules ((srfi srfi-1)
1948 ,@%gnu-build-system-modules)
1949 #:phases
eef988c8 1950 (modify-phases %standard-phases
9deae982
MR
1951 ;; When building python-pyqtwebengine, <qprinter.h> can not be
1952 ;; included. Here we substitute the full path to the header in the
1953 ;; store.
1954 (add-before 'configure 'substitute-source
1955 (lambda* (#:key inputs #:allow-other-keys)
1956 (let* ((qtbase (assoc-ref inputs "qtbase"))
1957 (qtprinter.h (string-append "\"" qtbase "/include/qt5/QtPrintSupport/qprinter.h\"")))
1958 (substitute* "sip/QtPrintSupport/qprinter.sip"
1959 (("<qprinter.h>")
1960 qtprinter.h))
1961 #t)))
eef988c8
EF
1962 (replace 'configure
1963 (lambda* (#:key inputs outputs #:allow-other-keys)
1964 (let* ((out (assoc-ref outputs "out"))
1965 (bin (string-append out "/bin"))
1966 (sip (string-append out "/share/sip"))
4ae8180c 1967 (plugins (string-append out "/lib/qt5/plugins"))
eef988c8
EF
1968 (designer (string-append plugins "/designer"))
1969 (qml (string-append plugins "/PyQt5"))
1970 (python (assoc-ref inputs "python"))
1971 (python-version
1972 (last (string-split python #\-)))
1973 (python-major+minor
1974 (string-join
1975 (take (string-split python-version #\.) 2)
1976 "."))
1977 (lib (string-append out "/lib/python"
1978 python-major+minor
43e8824d
HG
1979 "/site-packages"))
1980 (stubs (string-append lib "/PyQt5")))
a01a3763
EF
1981 (invoke "python" "configure.py"
1982 "--confirm-license"
1983 "--bindir" bin
1984 "--destdir" lib
1985 "--designer-plugindir" designer
1986 "--qml-plugindir" qml
1987 ; Where to install the PEP 484 Type Hints stub
1988 ; files. Without this the stubs are tried to be
1989 ; installed into the python package's
1990 ; site-package directory, which is read-only.
1991 "--stubsdir" stubs
1992 "--sipdir" sip)))))))
eef988c8 1993 (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
014e7dd8
AE
1994 (synopsis "Python bindings for Qt")
1995 (description
1996 "PyQt is a set of Python v2 and v3 bindings for the Qt application
1997framework. The bindings are implemented as a set of Python modules and
1998contain over 620 classes.")
225941b0 1999 (license license:gpl3)))
eb5af18e
MR
2000
2001(define-public python-pyqtwebengine
2002 (package
2003 (name "python-pyqtwebengine")
2004 (version "5.12.1")
2005 (source
2006 (origin
2007 (method url-fetch)
2008 (uri (string-append
2009 "https://www.riverbankcomputing.com/static/Downloads/PyQtWebEngine/"
2010 version "/PyQtWebEngine_gpl-" version ".tar.gz"))
2011 (sha256
2012 (base32
2013 "0wylkd7fh2g27y3710rpxmj9wx0wpi3z7qbv6khiddm15rkh81w6"))))
2014 (build-system gnu-build-system)
2015 (native-inputs
2016 `(("python" ,python)
2017 ("python-sip" ,python-sip)
2018 ;; qtbase is required for qmake
2019 ("qtbase" ,qtbase)))
2020 (inputs
2021 `(("python" ,python-wrapper)
2022 ("python-sip" ,python-sip)
2023 ("python-pyqt" ,python-pyqt)
2024 ("qtbase" ,qtbase)
2025 ("qtsvg" ,qtsvg)
2026 ("qtdeclarative" ,qtdeclarative)
2027 ("qtwebchannel" ,qtwebchannel)
2028 ("python-pyqt" ,python-pyqt)
2029 ("qtwebengine" ,qtwebengine)))
2030 (arguments
2031 `(#:modules ((srfi srfi-1)
2032 ,@%gnu-build-system-modules)
2033 #:phases
2034 (modify-phases %standard-phases
2035 (replace 'configure
2036 (lambda* (#:key inputs outputs #:allow-other-keys)
2037 (let* ((out (assoc-ref outputs "out"))
2038 (sipdir (string-append out "/share/sip"))
2039 (pyqt-sipdir (string-append
2040 (assoc-ref inputs "python-pyqt") "/share/sip"))
2041 (python (assoc-ref inputs "python"))
2042 (python-version
2043 (last (string-split python #\-)))
2044 (python-major+minor
2045 (string-join
2046 (take (string-split python-version #\.) 2) "."))
2047 (lib (string-append out "/lib/python"
2048 python-major+minor
2049 "/site-packages/PyQt5"))
2050 (stubs (string-append lib "/PyQt5")))
2051
2052 (mkdir-p sipdir)
2053 (invoke "python" "configure.py"
2054 "-w"
2055 "--no-dist-info"
2056 "--destdir" lib
2057 "--no-qsci-api"
2058 "--stubsdir" stubs
2059 "--sipdir" sipdir
2060 "--pyqt-sipdir" pyqt-sipdir))))
2061 ;; Because this has a different prefix than python-pyqt then we need
2062 ;; to make this a namespace of it's own
2063 (add-after 'install 'make-namespace
2064 (lambda* (#:key inputs outputs #:allow-other-keys)
2065 (let* ((__init__.py (string-append
2066 (assoc-ref outputs "out")
2067 "/lib/python3.7/site-packages/PyQt5/__init__.py")))
2068 (with-output-to-file __init__.py
2069 (lambda _ (display "
2070from pkgutil import extend_path
2071__path__ = extend_path(__path__, __name__)
2072")))
2073 #t))))))
2074 (home-page "https://www.riverbankcomputing.com/software/pyqtwebengine/intro")
2075 (synopsis "Python bindings for QtWebEngine")
2076 (description
2077 "PyQtWebEngine is a set of Python bindings for The Qt Company's Qt
2078WebEngine libraries. The bindings sit on top of PyQt5 and are implemented as a
2079set of three modules. Prior to v5.12 these bindings were part of PyQt
2080itself.")
2081 (license license:gpl3)))
014e7dd8 2082
0e2d6d26
RW
2083;; XXX: This is useful because qtwebkit does not build reliably at this time.
2084;; Ultimately, it would be nicer to have a more modular set of python-pyqt-*
2085;; packages that could be used together.
2086(define-public python-pyqt-without-qtwebkit
2087 (package (inherit python-pyqt)
2088 (name "python-pyqt-without-qtwebkit")
2089 (inputs
2090 (alist-delete "qtwebkit" (package-inputs python-pyqt)))))
2091
014e7dd8
AE
2092(define-public python2-pyqt
2093 (package (inherit python-pyqt)
2094 (name "python2-pyqt")
2095 (native-inputs
2096 `(("python-sip" ,python2-sip)
2be06813 2097 ("qtbase" ,qtbase)))
014e7dd8 2098 (inputs
e9adcd81 2099 `(("python" ,python-2)
a01a3763 2100 ("python2-enum34" ,python2-enum34)
e9adcd81 2101 ,@(alist-delete "python" (package-inputs python-pyqt))))))
3e291958 2102
bba60697 2103(define-public python2-pyqt-4
3e291958 2104 (package (inherit python-pyqt)
bba60697 2105 (name "python2-pyqt")
41fa164a 2106 (version "4.12")
3e291958
AE
2107 (source
2108 (origin
2109 (method url-fetch)
2110 (uri
2111 (string-append "mirror://sourceforge/pyqt/PyQt4/"
41fa164a 2112 "PyQt-" version "/PyQt4_gpl_x11-"
3e291958
AE
2113 version ".tar.gz"))
2114 (sha256
2115 (base32
41fa164a 2116 "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w"))))
3e291958 2117 (native-inputs
bba60697 2118 `(("python-sip" ,python2-sip)
3e291958 2119 ("qt" ,qt-4)))
bba60697 2120 (inputs `(("python" ,python-2)))
3e291958
AE
2121 (arguments
2122 `(#:tests? #f ; no check target
e8bdd73a
AE
2123 #:modules ((srfi srfi-1)
2124 ,@%gnu-build-system-modules)
3e291958 2125 #:phases
f9513086
EF
2126 (modify-phases %standard-phases
2127 (replace 'configure
2128 (lambda* (#:key inputs outputs #:allow-other-keys)
2129 (let* ((out (assoc-ref outputs "out"))
2130 (bin (string-append out "/bin"))
2131 (sip (string-append out "/share/sip"))
2132 (python (assoc-ref inputs "python"))
2133 (python-version
2134 (last (string-split python #\-)))
2135 (python-major+minor
2136 (string-join
2137 (take (string-split python-version #\.) 2)
2138 "."))
2139 (lib (string-append out "/lib/python"
2140 python-major+minor
2141 "/site-packages")))
39df4d19
RW
2142 (invoke "python" "configure.py"
2143 "--confirm-license"
2144 "--bindir" bin
2145 "--destdir" lib
2146 "--sipdir" sip)))))))
225941b0 2147 (license (list license:gpl2 license:gpl3)))) ; choice of either license
3e291958 2148
3befd0a9
RW
2149(define-public qscintilla
2150 (package
2151 (name "qscintilla")
9f8fee50 2152 (version "2.10.8")
3befd0a9
RW
2153 (source (origin
2154 (method url-fetch)
2155 (uri (string-append "mirror://sourceforge/pyqt/QScintilla2/"
2156 "QScintilla-" version "/QScintilla_gpl-"
2157 version ".tar.gz"))
2158 (sha256
2159 (base32
9f8fee50 2160 "1swjr786w04r514pry9pn32ivza4il1cg35s60qy39cwc175pka6"))))
3befd0a9
RW
2161 (build-system gnu-build-system)
2162 (arguments
2163 `(#:phases
2164 (modify-phases %standard-phases
2165 (replace 'configure
2166 (lambda* (#:key outputs #:allow-other-keys)
2167 (let ((out (assoc-ref outputs "out")))
2168 (chdir "Qt4Qt5")
2169 (substitute* "qscintilla.pro"
2170 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
2171 (string-append out "/lib"))
2172 (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
2173 (string-append out "/include"))
2174 (("\\$\\$\\[QT_INSTALL_TRANSLATIONS\\]")
2175 (string-append out "/translations"))
5430732b
HG
2176 (("\\$\\$\\[QT_INSTALL_DATA\\]")
2177 (string-append out "/lib/qt$${QT_MAJOR_VERSION}"))
2178 (("\\$\\$\\[QT_HOST_DATA\\]")
2179 (string-append out "/lib/qt$${QT_MAJOR_VERSION}")))
0af6ffdd 2180 (invoke "qmake")))))))
3befd0a9 2181 (native-inputs `(("qtbase" ,qtbase)))
d338321d 2182 (home-page "https://www.riverbankcomputing.co.uk/software/qscintilla/intro")
3befd0a9
RW
2183 (synopsis "Qt port of the Scintilla C++ editor control")
2184 (description "QScintilla is a port to Qt of Neil Hodgson's Scintilla C++
2185editor control. QScintilla includes features especially useful when editing
2186and debugging source code. These include support for syntax styling, error
2187indicators, code completion and call tips.")
2188 (license license:gpl3+)))
2189
06d04dbc
RW
2190(define-public python-qscintilla
2191 (package (inherit qscintilla)
2192 (name "python-qscintilla")
2193 (arguments
2194 `(#:configure-flags
2195 (list "--pyqt=PyQt5"
2196 (string-append "--pyqt-sipdir="
2197 (assoc-ref %build-inputs "python-pyqt")
2198 "/share/sip")
2199 (string-append "--qsci-incdir="
2200 (assoc-ref %build-inputs "qscintilla")
2201 "/include")
2202 (string-append "--qsci-libdir="
2203 (assoc-ref %build-inputs "qscintilla")
2204 "/lib"))
2205 #:phases
2206 (modify-phases %standard-phases
2207 (replace 'configure
9f8fee50
EF
2208 (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
2209 (let ((out (assoc-ref outputs "out"))
2210 (python (assoc-ref inputs "python")))
2211 (chdir "Python")
2212 (apply invoke "python3" "configure.py"
2213 configure-flags)
2214 ;; Install to the right directory
2215 (substitute* '("Makefile"
2216 "Qsci/Makefile")
2217 (("\\$\\(INSTALL_ROOT\\)/gnu/store/[^/]+") out)
2218 (((string-append python "/lib"))
2219 (string-append out "/lib")))
2220 ;; And fix the installed.txt file
2221 (substitute* "installed.txt"
2222 (("/gnu/store/[^/]+") out)))
76c7fc43 2223 #t)))))
06d04dbc
RW
2224 (inputs
2225 `(("qscintilla" ,qscintilla)
2226 ("python" ,python)
2227 ("python-pyqt" ,python-pyqt)))
2228 (description "QScintilla is a port to Qt of Neil Hodgson's Scintilla C++
2229editor control. QScintilla includes features especially useful when editing
2230and debugging source code. These include support for syntax styling, error
2231indicators, code completion and call tips.
2232
2233This package provides the Python bindings.")))
2234
2456153a
RW
2235;; PyQt only looks for modules in its own directory. It ignores environment
2236;; variables such as PYTHONPATH, so we need to build a union package to make
2237;; it work.
2238(define-public python-pyqt+qscintilla
2239 (package (inherit python-pyqt)
2240 (name "python-pyqt+qscintilla")
2241 (source #f)
2242 (build-system trivial-build-system)
2243 (arguments
2244 '(#:modules ((guix build union))
2245 #:builder (begin
2246 (use-modules (ice-9 match)
2247 (guix build union))
2248 (match %build-inputs
2249 (((names . directories) ...)
2250 (union-build (assoc-ref %outputs "out")
e3cfef22
MW
2251 directories)
2252 #t)))))
2456153a
RW
2253 (inputs
2254 `(("python-pyqt" ,python-pyqt)
2255 ("python-qscintilla" ,python-qscintilla)))
2256 (synopsis "Union of PyQt and the Qscintilla extension")
2257 (description
2258 "This package contains the union of PyQt and the Qscintilla extension.")))
2259
9e81af9e
EF
2260(define-public qtkeychain
2261 (package
2262 (name "qtkeychain")
2879e605 2263 (version "0.9.1")
9e81af9e
EF
2264 (source
2265 (origin
2879e605
EF
2266 (method git-fetch)
2267 (uri (git-reference
2268 (url "https://github.com/frankosterfeld/qtkeychain/")
2269 (commit (string-append "v" version))))
2270 (file-name (git-file-name name version))
9e81af9e 2271 (sha256
2879e605
EF
2272 (base32
2273 "0h4wgngn2yl35hapbjs24amkjfbzsvnna4ixfhn87snjnq5lmjbc"))))
9e81af9e 2274 (build-system cmake-build-system)
18174d8a 2275 (native-inputs
f8127d26
HG
2276 `(("pkg-config" ,pkg-config)
2277 ("qttools" ,qttools)))
9e81af9e 2278 (inputs
18174d8a 2279 `(("qtbase" ,qtbase)))
9e81af9e
EF
2280 (arguments
2281 `(#:tests? #f ; No tests included
2282 #:phases
2283 (modify-phases %standard-phases
2879e605 2284 (add-before 'configure 'set-qt-trans-dir
9e81af9e
EF
2285 (lambda _
2286 (substitute* "CMakeLists.txt"
2287 (("\\$\\{qt_translations_dir\\}")
2879e605 2288 "${CMAKE_INSTALL_PREFIX}/share/qt5/translations"))
4ad70ad8 2289 #t)))))
9e81af9e
EF
2290 (home-page "https://github.com/frankosterfeld/qtkeychain")
2291 (synopsis "Qt API to store passwords")
2292 (description
2293 "QtKeychain is a Qt library to store passwords and other secret data
2294securely. It will not store any data unencrypted unless explicitly requested.")
225941b0 2295 (license license:bsd-3)))
fc381a33
TD
2296
2297(define-public qwt
2298 (package
2299 (name "qwt")
f1aa44ad 2300 (version "6.1.4")
fc381a33
TD
2301 (source
2302 (origin
2303 (method url-fetch)
2304 (uri
2305 (string-append "mirror://sourceforge/qwt/qwt/"
2306 version "/qwt-" version ".tar.bz2"))
2307 (sha256
f1aa44ad 2308 (base32 "1navkcnmn0qz8kzsyqmk32d929zl72l0b580w1ica7z5559j2a8m"))))
fc381a33
TD
2309 (build-system gnu-build-system)
2310 (inputs
2311 `(("qtbase" ,qtbase)
2312 ("qtsvg" ,qtsvg)
2313 ("qttools" ,qttools)))
2314 (arguments
2315 `(#:phases
2316 (modify-phases %standard-phases
2317 (replace 'configure
2318 (lambda* (#:key outputs #:allow-other-keys)
163651cb
SB
2319 (let* ((out (assoc-ref outputs "out"))
2320 (docdir (string-append out "/share/doc/qwt"))
2321 (incdir (string-append out "/include/qwt"))
2322 (pluginsdir (string-append out "/lib/qt5/plugins/designer"))
2323 (featuresdir (string-append out "/lib/qt5/mkspecs/features")))
fc381a33 2324 (substitute* '("qwtconfig.pri")
163651cb
SB
2325 (("^(\\s*QWT_INSTALL_PREFIX)\\s*=.*" _ x)
2326 (format #f "~a = ~a\n" x out))
2327 (("^(QWT_INSTALL_DOCS)\\s*=.*" _ x)
2328 (format #f "~a = ~a\n" x docdir))
2329 (("^(QWT_INSTALL_HEADERS)\\s*=.*" _ x)
2330 (format #f "~a = ~a\n" x incdir))
2331 (("^(QWT_INSTALL_PLUGINS)\\s*=.*" _ x)
2332 (format #f "~a = ~a\n" x pluginsdir))
2333 (("^(QWT_INSTALL_FEATURES)\\s*=.*" _ x)
2334 (format #f "~a = ~a\n" x featuresdir)))
2335 (substitute* '("doc/doc.pro")
2336 ;; We'll install them in the 'install-man-pages' phase.
2337 (("^unix:doc\\.files.*") ""))
41173df9 2338 (invoke "qmake"))))
163651cb 2339 (add-after 'install 'install-man-pages
fc381a33
TD
2340 (lambda* (#:key outputs #:allow-other-keys)
2341 (let* ((out (assoc-ref outputs "out"))
2342 (man (string-append out "/share/man")))
2343 ;; Remove some incomplete manual pages.
2344 (for-each delete-file (find-files "doc/man/man3" "^_tmp.*"))
2345 (mkdir-p man)
2346 (copy-recursively "doc/man" man)
2347 #t))))))
2348 (home-page "http://qwt.sourceforge.net")
2349 (synopsis "Qt widgets for plots, scales, dials and other technical software
2350GUI components")
2351 (description
2352 "The Qwt library contains widgets and components which are primarily useful
2353for technical and scientific purposes. It includes a 2-D plotting widget,
2354different kinds of sliders, and much more.")
2355 (license
2356 (list
2357 ;; The Qwt license is LGPL2.1 with some exceptions.
2358 (license:non-copyleft "http://qwt.sourceforge.net/qwtlicense.html")
2359 ;; textengines/mathml/qwt_mml_document.{cpp,h} is dual LGPL2.1/GPL3 (either).
2360 license:lgpl2.1 license:gpl3))))
47e1d280
TD
2361
2362(define-public qtwebkit
2363 (package
2364 (name "qtwebkit")
e6df9c7e 2365 (version "5.212.0-alpha3")
47e1d280
TD
2366 (source
2367 (origin
2368 (method url-fetch)
601cb1be 2369 (uri (string-append "https://github.com/annulen/webkit/releases/download/"
b5bf3dd9 2370 "qtwebkit-" version "/qtwebkit-" version ".tar.xz"))
47e1d280
TD
2371 (sha256
2372 (base32
e6df9c7e 2373 "05syvwi3jw9abwsc93rmjkna0vyh6bkfrsqhwir48ms54icfwzim"))
601cb1be
AE
2374 (patches (search-patches "qtwebkit-pbutils-include.patch"))))
2375 (build-system cmake-build-system)
47e1d280
TD
2376 (native-inputs
2377 `(("perl" ,perl)
2378 ("python" ,python-2.7)
2379 ("ruby" ,ruby)
2380 ("bison" ,bison)
2381 ("flex" ,flex)
2382 ("gperf" ,gperf)
2383 ("pkg-config" ,pkg-config)))
2384 (inputs
2385 `(("icu" ,icu4c)
601cb1be
AE
2386 ("glib" ,glib)
2387 ("gst-plugins-base" ,gst-plugins-base)
47e1d280
TD
2388 ("libjpeg" ,libjpeg)
2389 ("libpng" ,libpng)
2390 ("libwebp" ,libwebp)
8bfd7c8b 2391 ("sqlite" ,sqlite-with-column-metadata)
47e1d280 2392 ("fontconfig" ,fontconfig)
c695fb76 2393 ("libxrender" ,libxrender)
47e1d280
TD
2394 ("qtbase" ,qtbase)
2395 ("qtdeclarative" ,qtdeclarative)
601cb1be 2396 ("qtlocation" ,qtlocation)
47e1d280 2397 ("qtmultimedia" ,qtmultimedia)
601cb1be
AE
2398 ("qtsensors" ,qtsensors)
2399 ("qtwebchannel" ,qtwebchannel)
47e1d280
TD
2400 ("libxml2" ,libxml2)
2401 ("libxslt" ,libxslt)
2402 ("libx11" ,libx11)
2403 ("libxcomposite" ,libxcomposite)))
2404 (arguments
601cb1be
AE
2405 `(#:tests? #f ; no apparent tests; it might be necessary to set
2406 ; ENABLE_API_TESTS, see CMakeLists.txt
b717d0f9
LC
2407
2408 ;; Parallel builds fail due to a race condition:
2409 ;; <https://bugs.gnu.org/34062>.
2410 #:parallel-build? #f
2411
601cb1be
AE
2412 #:configure-flags (list ;"-DENABLE_API_TESTS=TRUE"
2413 "-DPORT=Qt"
2414 "-DUSE_LIBHYPHEN=OFF"
0995a569
EB
2415 "-DUSE_SYSTEM_MALLOC=ON"
2416 ;; XXX: relative dir installs to build dir?
2417 (string-append "-DECM_MKSPECS_INSTALL_DIR="
ebdb15bc
EB
2418 %output "/lib/qt5/mkspecs/modules")
2419 ;; Sacrifice a little speed in order to link
2420 ;; libraries and test executables in a
2421 ;; reasonable amount of memory.
2422 "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,--no-keep-memory"
2423 "-DCMAKE_EXE_LINKER_FLAGS=-Wl,--no-keep-memory")))
47e1d280
TD
2424 (home-page "https://www.webkit.org")
2425 (synopsis "Web browser engine and classes to render and interact with web
2426content")
2427 (description "QtWebKit provides a Web browser engine that makes it easy to
2428embed content from the World Wide Web into your Qt application. At the same
2429time Web content can be enhanced with native controls.")
af9afb0b
MB
2430 ;; Building QtWebKit takes around 13 hours on an AArch64 machine. Give some
2431 ;; room for slower or busy hardware.
2432 (properties '((timeout . 64800))) ;18 hours
4961364f
LC
2433
2434 ;; XXX: This consumes too much RAM to successfully build on AArch64 (e.g.,
2435 ;; SoftIron OverDrive with 8 GiB of RAM), so instead of wasting resources,
2436 ;; disable it on non-Intel platforms.
2437 (supported-systems '("x86_64-linux" "i686-linux"))
2438
47e1d280 2439 (license license:lgpl2.1+)))
f048f12b 2440
2441(define-public dotherside
2442 (package
2443 (name "dotherside")
53216881 2444 (version "0.6.4")
f048f12b 2445 (source
2446 (origin
d43f1732
EF
2447 (method git-fetch)
2448 (uri (git-reference
2449 (url "https://github.com/filcuc/DOtherSide")
2450 (commit (string-append "v" version))))
2451 (file-name (git-file-name name version))
f048f12b 2452 (sha256
2453 (base32
53216881 2454 "09fz6v8rp28997f235yaifj8p4vvsyv45knc1iivgdvx7msgcd0m"))))
f048f12b 2455 (build-system cmake-build-system)
2456 (native-inputs
2457 `(("qttools" ,qttools)))
2458 (inputs
2459 `(("qtbase" ,qtbase)
2460 ("qtdeclarative" ,qtdeclarative)))
96bdf904 2461 (home-page "https://filcuc.github.io/DOtherSide/index.html")
f048f12b 2462 (synopsis "C language library for creating bindings for the Qt QML language")
2463 (description
2464 "DOtherSide is a C language library for creating bindings for the
2465QT QML language. The following features are implementable from
2466a binding language:
2467@itemize
2468@item Creating custom QObject
2469@item Creating custom QAbstractListModels
2470@item Creating custom properties, signals and slots
2471@item Creating from QML QObject defined in the binded language
2472@item Creating from Singleton QML QObject defined in the binded language
2473@end itemize\n")
2474 (license license:lgpl3))) ;version 3 only (+ exception)
b16640ac
P
2475
2476;; There have been no public releases yet.
2477(define-public qtcolorwidgets
2478 (let ((commit "a95f72e935fe9e046061a1d1c3930cbfbcb533e0")
2479 (revision "1"))
2480 (package
2481 (name "qtcolorwidgets")
2482 (version (git-version "0" revision commit))
2483 (source (origin
2484 (method git-fetch)
2485 (uri (git-reference
2486 (url "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
2487 (commit commit)))
2488 (file-name (git-file-name name version))
2489 (sha256
2490 (base32
2491 "0dkiwlqh2gwhlp78c1fmchj3shl4p9inspcl96ya5aa8mn6kydy8"))))
2492 (build-system cmake-build-system)
2493 (arguments `(#:tests? #f)) ; There are no tests
2494 (native-inputs
2495 `(("qttools" ,qttools)))
2496 (inputs
2497 `(("qtbase" ,qtbase)))
2498 (home-page "https://gitlab.com/mattia.basaglia/Qt-Color-Widgets")
2499 (synopsis "Color management widgets")
2500 (description "QtColorWidgets provides a Qt color dialog that is more
2501user-friendly than the default @code{QColorDialog} and several other
2502color-related widgets.")
2503 ;; Includes a license exception for combining with GPL2 code.
2504 (license license:lgpl3+))))
37a3abb1
JS
2505
2506(define-public python-shiboken-2
2507 (let ((revision "1")
2508 ;; Pinned to branches with support for qt 5.11.3
2509 (commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
2510 (package
2511 (name "python-shiboken-2")
2512 (version (git-version "v5.11.3" revision commit))
2513 (source
2514 (origin
2515 (method git-fetch)
2516 (uri (git-reference
2517 ;; The latest versions of Shiboken live in the pyside repo.
2518 ;; There is another standalone repo only for Shiboken
2519 ;; but it is outdated
2520 (url "https://code.qt.io/pyside/pyside-setup")
2521 (commit commit)))
2522 (file-name (git-file-name name version))
2523 (sha256
2524 (base32
2525 "0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
2526 (build-system cmake-build-system)
2527 (inputs
162cc7f8 2528 `(("clang-toolchain" ,clang-toolchain-6)
37a3abb1
JS
2529 ("libxml2" ,libxml2)
2530 ("libxslt" ,libxslt)
2531 ("python-wrapper" ,python-wrapper)
2532 ("qtbase" ,qtbase)
2533 ("qtxmlpatterns" ,qtxmlpatterns)))
2534 (arguments
2535 `(#:tests? #f
2536 ;; FIXME: Building tests fails
2537 #:configure-flags '("-DBUILD_TESTS=off")
2538 #:phases
2539 (modify-phases %standard-phases
2540 (add-after 'unpack 'use-shiboken-dir-only
2541 (lambda _ (chdir "sources/shiboken2") #t))
2542 (add-before 'configure 'set-build-env
2543 (lambda* (#:key inputs #:allow-other-keys)
162cc7f8 2544 (let ((llvm (assoc-ref inputs "clang-toolchain")))
37a3abb1
JS
2545 (setenv "CLANG_INSTALL_DIR" llvm)
2546 #t))))))
2547 (home-page "https://wiki.qt.io/Qt_for_Python")
2548 (synopsis
2549 "Shiboken generates bindings for C++ libraries using CPython source code")
2550 (description
2551 "Shiboken generates bindings for C++ libraries using CPython source code")
2552 (license
2553 (list
2554 ;; The main code is GPL3 or LGPL3.
2555 ;; Examples are BSD-3.
2556 license:gpl3
2557 license:lgpl3
2558 license:bsd-3)))))
f1c4dbfa
JS
2559
2560(define-public python-pyside-2
2561 (let ((revision "1")
2562 ;; Pinned to branches with support for qt 5.11.3
2563 (commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
2564 (package
2565 (name "python-pyside-2")
2566 (version (git-version "v5.11.3" revision commit))
2567 (source
2568 (origin
2569 (method git-fetch)
2570 (uri (git-reference
2571 (url "https://code.qt.io/pyside/pyside-setup")
2572 (commit commit)))
2573 (file-name (git-file-name name version))
2574 (sha256
2575 (base32
2576 "0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
2577 (build-system cmake-build-system)
2578 (inputs
2579 `(("libcxx" ,libcxx-6)
2580 ("libxml2" ,libxml2)
2581 ("libxslt" ,libxslt)
43001931 2582 ("clang-toolchain" ,clang-toolchain-6)
f1c4dbfa
JS
2583 ("qtbase" ,qtbase)
2584 ("qtdatavis3d" ,qtdatavis3d)
2585 ("qtlocation" ,qtlocation)
2586 ("qtmultimedia" ,qtmultimedia)
2587 ("qtquickcontrols" ,qtquickcontrols)
2588 ("qtscript" ,qtscript)
2589 ("qtscxml" ,qtscxml)
2590 ("qtsensors" ,qtsensors)
2591 ("qtspeech" ,qtspeech)
2592 ("qtsvg" ,qtsvg)
2593 ("qtwebchannel" ,qtwebchannel)
2594 ("qtwebsockets" ,qtwebsockets)
2595 ("qtx11extras" ,qtx11extras)
2596 ("qtxmlpatterns" ,qtxmlpatterns)))
2597 (native-inputs
2598 `(("cmake" ,cmake)
2599 ("python-shiboken-2" ,python-shiboken-2)
2600 ("python-wrapper" ,python-wrapper)
2601 ("qttools" ,qttools)
2602 ("which" ,which)))
2603 (arguments
2604 `(#:tests? #f
2605 ;; FIXME: Building tests fail.
2606 #:configure-flags '("-DBUILD_TESTS=FALSE")
2607 #:phases
43001931 2608 (modify-phases %standard-phases
f1c4dbfa
JS
2609 (add-after 'unpack 'go-to-source-dir
2610 (lambda _ (chdir "sources/pyside2") #t))
2611 (add-before 'configure 'set-clang-dir
2612 (lambda* (#:key inputs #:allow-other-keys)
43001931 2613 (let ((clang (assoc-ref inputs "clang-toolchain"))
f1c4dbfa
JS
2614 (libcxx (assoc-ref inputs "libcxx")))
2615 (setenv "CLANG_INSTALL_DIR" clang)
2616 (substitute* "cmake/Macros/PySideModules.cmake"
2617 (("--include-paths=")
2618 (string-append "--include-paths=" libcxx "/include/c++/v1:")))
2619 #t))))))
2620 (home-page "https://wiki.qt.io/Qt_for_Python")
2621 (synopsis
2622 "The Qt for Python product enables the use of Qt5 APIs in Python applications")
2623 (description
2624 "The Qt for Python product enables the use of Qt5 APIs in Python
2625applications. It lets Python developers utilize the full potential of Qt,
2626using the PySide2 module. The PySide2 module provides access to the
2627individual Qt modules such as QtCore, QtGui,and so on. Qt for Python also
2628comes with the Shiboken2 CPython binding code generator, which can be used to
2629generate Python bindings for your C or C++ code.")
2630 (license (list
2631 license:lgpl3
2632 ;;They state that:
2633 ;; this file may be used under the terms of the GNU General
2634 ;; Public License version 2.0 or (at your option) the GNU
2635 ;; General Public license version 3 or any later version
2636 ;; approved by the KDE Free Qt Foundation.
2637 ;; Thus, it is currently v2 or v3, but no "+".
2638 license:gpl3
2639 license:gpl2)))))
2ea8b51a
JS
2640
2641(define-public python-pyside-2-tools
2642 (let ((revision "1")
2643 ;; Pinned to branches with support for qt 5.11.3
2644 (commit "f1b775537e7fbd718516749583b2abf1cb6adbce"))
2645 (package
2646 (name "python-pyside-2-tools")
2647 (version (git-version "v5.11.2" revision commit))
2648 (source
2649 (origin
2650 (method git-fetch)
2651 (uri (git-reference
2652 (url "https://code.qt.io/pyside/pyside-tools")
2653 (commit commit)))
2654 (file-name (git-file-name name version))
2655 (sha256
2656 (base32
2657 "1w2g5afvww9r89wmdm9jx8sz67x4bzy9difkh72n4c73ya1n91ry"))))
2658 (build-system cmake-build-system)
2659 (inputs
2660 `(("python-pyside-2" ,python-pyside-2)
2661 ("python-shiboken-2" ,python-shiboken-2)
2662 ("qtbase" ,qtbase)))
2663 (arguments
2664 `(#:tests? #f
2665 #:configure-flags '("-DBUILD_TESTS=off")))
2666 (home-page "https://wiki.qt.io/Qt_for_Python")
2667 (synopsis
2668 "Contains command line tools for PySide2")
2669 (description
2670 "Contains lupdate, rcc and uic tools for PySide2")
2671 (license license:gpl2))))