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