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