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