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