projects/guix·blob javascript-team · refs

1317 lines · 51.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015, 2017, 2019, 2021 Ludovic Courtès <[email protected]>
3;;; Copyright © 2015, 2025, 2026 Ricardo Wurmus <[email protected]>
4;;; Copyright © 2015, 2017 Andreas Enge <[email protected]>
5;;; Copyright © 2016-2019, 2021, 2023, 2024, 2026 Efraim Flashner <[email protected]>
6;;; Copyright © 2017 Roel Janssen <[email protected]>
7;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <[email protected]>
8;;; Copyright © 2018 Leo Famulari <[email protected]>
9;;; Copyright © 2020 Sebastian Schott <[email protected]>
10;;; Copyright © 2020 Vincent Legoll <[email protected]>
11;;; Copyright © 2020, 2024. 2021, 2022, 2024 Vinicius Monego <[email protected]>
12;;; Copyright © 2023, 2025-2026 Maxim Cournoyer <[email protected]>
13;;; Copyright © 2021 Maxime Devos <[email protected]>
14;;; Copyright © 2022, 2023, 2025 John Kehayias <[email protected]>
15;;; Copyright © 2022 Sharlatan Hellseher <[email protected]>
16;;; Copyright © 2023 Bruno Victal <[email protected]>
17;;; Copyright © 2024 Zheng Junjie <[email protected]>
18;;; Copyright © 2025 Nico Rikken <[email protected]>
19;;;
20;;; This file is part of GNU Guix.
21;;;
22;;; GNU Guix is free software; you can redistribute it and/or modify it
23;;; under the terms of the GNU General Public License as published by
24;;; the Free Software Foundation; either version 3 of the License, or (at
25;;; your option) any later version.
26;;;
27;;; GNU Guix is distributed in the hope that it will be useful, but
28;;; WITHOUT ANY WARRANTY; without even the implied warranty of
29;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30;;; GNU General Public License for more details.
31;;;
32;;; You should have received a copy of the GNU General Public License
33;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
34
35(define-module (gnu packages photo)
36 #:use-module (guix build-system cmake)
37 #:use-module (guix build-system gnu)
38 #:use-module (guix build-system meson)
39 #:use-module (guix build-system perl)
40 #:use-module (guix build-system pyproject)
41 #:use-module (guix build-system qt)
42 #:use-module (guix gexp)
43 #:use-module (guix download)
44 #:use-module (guix git-download)
45 #:use-module ((guix licenses) #:prefix license:)
46 #:use-module (guix packages)
47 #:use-module (guix utils)
48 #:use-module (gnu packages)
49 #:use-module (gnu packages algebra)
50 #:use-module (gnu packages assembly)
51 #:use-module (gnu packages autotools)
52 #:use-module (gnu packages base)
53 #:use-module (gnu packages bash)
54 #:use-module (gnu packages boost)
55 #:use-module (gnu packages build-tools)
56 #:use-module (gnu packages check)
57 #:use-module (gnu packages cmake)
58 #:use-module (gnu packages compression)
59 #:use-module (gnu packages cpp)
60 #:use-module (gnu packages cups)
61 #:use-module (gnu packages curl)
62 #:use-module (gnu packages docbook)
63 #:use-module (gnu packages documentation)
64 #:use-module (gnu packages file)
65 #:use-module (gnu packages fontutils)
66 #:use-module (gnu packages freedesktop)
67 #:use-module (gnu packages gcc)
68 #:use-module (gnu packages geo)
69 #:use-module (gnu packages gettext)
70 #:use-module (gnu packages ghostscript)
71 #:use-module (gnu packages gl)
72 #:use-module (gnu packages gnome)
73 #:use-module (gnu packages glib)
74 #:use-module (gnu packages graphics)
75 #:use-module (gnu packages graphviz)
76 #:use-module (gnu packages groff)
77 #:use-module (gnu packages gstreamer)
78 #:use-module (gnu packages gtk)
79 #:use-module (gnu packages image)
80 #:use-module (gnu packages image-processing)
81 #:use-module (gnu packages imagemagick)
82 #:use-module (gnu packages iso-codes)
83 #:use-module (gnu packages libcanberra)
84 #:use-module (gnu packages libevent)
85 #:use-module (gnu packages libusb)
86 #:use-module (gnu packages linux)
87 #:use-module (gnu packages llvm)
88 #:use-module (gnu packages lua)
89 #:use-module (gnu packages m4)
90 #:use-module (gnu packages man)
91 #:use-module (gnu packages maths)
92 #:use-module (gnu packages music)
93 #:use-module (gnu packages networking)
94 #:use-module (gnu packages ocaml)
95 #:use-module (gnu packages opencl)
96 #:use-module (gnu packages perl)
97 #:use-module (gnu packages pkg-config)
98 #:use-module (gnu packages popt)
99 #:use-module (gnu packages pretty-print)
100 #:use-module (gnu packages python)
101 #:use-module (gnu packages python-build)
102 #:use-module (gnu packages python-xyz)
103 #:use-module (gnu packages python-web)
104 #:use-module (gnu packages qt)
105 #:use-module (gnu packages readline)
106 #:use-module (gnu packages ruby)
107 #:use-module (gnu packages serialization)
108 #:use-module (gnu packages sdl)
109 #:use-module (gnu packages sphinx)
110 #:use-module (gnu packages sqlite)
111 #:use-module (gnu packages tex)
112 #:use-module (gnu packages time)
113 #:use-module (gnu packages video)
114 #:use-module (gnu packages web)
115 #:use-module (gnu packages wxwidgets)
116 #:use-module (gnu packages xorg)
117 #:use-module (gnu packages xml)
118 #:use-module ((srfi srfi-1) #:hide (zip))
119 #:use-module (srfi srfi-26))
120
121(define-public focus-stack
122 (package
123 (name "focus-stack")
124 (version "1.5")
125 (source
126 (origin
127 (method git-fetch)
128 (uri (git-reference
129 (url "https://github.com/PetteriAimonen/focus-stack")
130 (commit version)))
131 (file-name (git-file-name name version))
132 (sha256
133 (base32 "1y90s0iwqph4amziva0xyjwrkykxrqqz9qf9zyqfxfny33r8m1l4"))))
134 (build-system gnu-build-system)
135 (arguments
136 (list
137 #:tests? #false ;requires idiff
138 #:make-flags
139 #~(list (string-append "prefix=" #$output))
140 #:phases
141 #~(modify-phases %standard-phases
142 (replace 'configure
143 (lambda _
144 (substitute* "Makefile"
145 (("^VERSION =.*")
146 (string-append "VERSION = \"" #$version "\"\n"))
147 (("-DGIT_VERSION=.*")
148 (string-append "-DGIT_VERSION=\\\"" #$version "\\\"\n")))
149 (substitute* "src/main.cc"
150 ((", built \" __DATE__ \" \" __TIME__ \"")
151 ", built with Guix")))))))
152 (native-inputs
153 (list opencl-headers pkg-config ronn-ng which))
154 (inputs (list opencv))
155 (home-page "https://github.com/PetteriAimonen/focus-stack")
156 (synopsis "Fast and easy focus stacking")
157 (description
158 "This project implements a tool for focus stacking images. The
159application takes a set of images captured at different focus distances and
160combines them so that the complete subject is in focus.")
161 (license license:expat)))
162
163(define-public mtfmapper
164 (package
165 (name "mtfmapper")
166 (version "0.7.41")
167 (source (origin
168 (method url-fetch)
169 (uri (string-append "mirror://sourceforge/mtfmapper/"
170 "mtfmapper-" version ".tgz"))
171 (sha256
172 (base32
173 "02080lnlfn4yyyqmhd4lwk312d7sgnf1n9qjdapiww3pf08jhdlb"))))
174 (build-system cmake-build-system)
175 (arguments
176 (list
177 ;; There are no automated tests that could be run from the build system.
178 #:tests? #false
179 ;; Parallel building fails when building the manuals.
180 #:parallel-build? #false
181 #:configure-flags
182 #~(list "-DBUILD_DOC=ON" "-DUNIX=ON"
183 (string-append "-DDOCDIR=" #$output "/share/mtfmapper")
184 (string-append "-DMANDIR=" #$output "/share/man/man1"))
185 #:phases
186 '(modify-phases %standard-phases
187 ;; Needed for LaTeX fonts.
188 (add-before 'build 'set-HOME
189 (lambda _ (setenv "HOME" (getcwd)))))))
190 (inputs (list eigen opencv qtbase-5 qtcharts-5 tclap zlib))
191 (native-inputs
192 (list asciidoc
193 dblatex
194 imagemagick
195 (texlive-local-tree
196 (list texlive-collection-basic
197 texlive-pdflscape
198 texlive-pdfpages
199 texlive-subfigure
200 texlive-upquote))))
201 (home-page "https://mtfmapper.blogspot.com/")
202 (synopsis "MTF measurement tool")
203 (description
204 "This package provides a utility to produce @dfn{modulation transfer
205function} (MTF) maps of images. MTF is a measure of edge acuity. The program
206will automatically detect dark rectangular objects on light backgrounds, and
207extract MTF values on all edges. It can help to tune SLR autofocus. Features
208include:
209
210@itemize
211@item Automatically extracts dark (black) rectangular objects from images, and
212 measures the Modulation Transfer Function (MTF, a measure of image sharpness)
213 across the edges of the rectangles. Measurement is performed using the
214 \"slanted edge\" method, similar to ISO 12233.
215@item Using a special test chart (@file{.pdf} supplied), measure the point of
216 sharpest focus relative to a reference point, i.e., measure front- or
217 back-focus in DSLRs;
218@item Measure the MTF (sharpness) of your lens across the field of view;
219@item Works with many image formats, including JPEG and various raw formats;
220@item Provides feedback on chart orientation (for some chart types) helping
221 you to correctly set up the chart relative to the camera sensor;
222@item Use the GUI to visualize and compare MTF/SFR curves between different
223 images, or different edges within the same image.
224@end itemize
225")
226 (license license:bsd-2)))
227
228(define-public rapid-photo-downloader
229 (package
230 (name "rapid-photo-downloader")
231 (version "0.9.37b1")
232 (source
233 (origin
234 (method git-fetch)
235 (uri (git-reference
236 (url "https://github.com/damonlynch/rapid-photo-downloader")
237 (commit (string-append "v" version))))
238 (file-name (git-file-name name version))
239 (sha256
240 (base32 "0mh9mbzkncjlsshcmjkj6mwy3dyvbbwx4d6nsxanyva27y85ycbm"))))
241 (build-system pyproject-build-system)
242 (arguments
243 (list
244 #:imported-modules (append %qt-build-system-modules
245 %pyproject-build-system-modules)
246 #:modules '((guix build pyproject-build-system)
247 ((guix build qt-build-system) #:prefix qt:)
248 (guix build utils))
249 #:test-flags
250 #~(list
251 ;; XXX: KeyError: Preference key 'Extension' is invalid.
252 "-k" (string-join (list "not testLargePrefList"
253 "testPrefImageList"
254 "testPrefVideoList"
255 "testSequencesList"
256 "testBadDTConversion")
257 " and not ")
258 ;; XXX: Test data is corrupted, and substitute* doesn't work
259 ;; for binary data: ModuleNotFoundError: No module named 'viewutils'
260 "--ignore=test_proximity.py"
261 ;; XXX: No tests are collected here.
262 "--ignore=test_thumbnail.py")
263 #:phases
264 #~(modify-phases %standard-phases
265 (add-after 'unpack 'patch-libmediainfo
266 (lambda* (#:key inputs #:allow-other-keys)
267 (substitute* "raphodo/metadata/metadatavideo.py"
268 (("libmediainfo.so.0" lib)
269 (search-input-file inputs (string-append "lib/" lib))))))
270 (add-before 'check 'configure-check
271 (lambda _
272 (setenv "XDG_DATA_HOME" (getcwd))
273 (chdir "raphodo/tests")
274 (substitute* "test_generatenameconfig.py"
275 (("generatename\\.convert")
276 "raphodo.generatename.convert")
277 (("([^.])(generatenameconfig\\.)" _ before module)
278 (string-append before "raphodo." module))
279 (("import (generatename|generatenameconfig)" _ module)
280 (string-append "import raphodo." module)))
281 (substitute* "test_thumbnail.py"
282 (("from (cache|interprocess|rpdfile|utilities)" _ module)
283 (string-append "from raphodo." module)))))
284 (add-after 'wrap 'wrap-more
285 (lambda* (#:key inputs outputs #:allow-other-keys)
286 (wrap-program (string-append #$output
287 "/bin/rapid-photo-downloader")
288 `("PATH" prefix
289 (,(dirname (search-input-file inputs "bin/exiftool"))
290 ,(dirname (search-input-file inputs "bin/gsettings"))))
291 `("GI_TYPELIB_PATH" prefix
292 (,(getenv "GI_TYPELIB_PATH")))
293 `("GST_PLUGIN_SYSTEM_PATH" prefix
294 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
295 `("GUIX_PYTHONPATH" prefix
296 (,(getenv "GUIX_PYTHONPATH"))))))
297 (add-after 'wrap-more 'wrap-qt
298 (lambda args
299 (apply (assoc-ref qt:%standard-phases 'qt-wrap)
300 `(,@args #:qtbase #$(this-package-input "qtbase"))))))))
301 (native-inputs
302 (list file
303 intltool
304 gobject-introspection
305 python-hatchling
306 python-hatch-argparse-manpage
307 python-hatch-gettext
308 python-pytest))
309 (inputs
310 (list bash-minimal ;for wrap-program
311 gdk-pixbuf
312 gexiv2-0.14
313 `(,glib "bin") ;for gsettings
314 gst-libav
315 gst-plugins-base
316 gst-plugins-good
317 gstreamer
318 libgudev
319 libnotify
320 libmediainfo
321 udisks
322 python-babel
323 python-show-in-file-manager
324 python-pyqt
325 python-pygobject
326 python-gphoto2
327 python-pillow
328 python-pyzmq
329 python-tornado
330 python-psutil
331 python-arrow
332 python-easygui
333 python-colour
334 python-pymediainfo
335 python-sortedcontainers
336 python-tenacity
337 perl-image-exiftool
338 qtbase-5
339 qtsvg-5
340 qtwayland-5))
341 (home-page "https://github.com/damonlynch/rapid-photo-downloader")
342 (synopsis "Import photos and videos from cameras, phones and memory cards")
343 (description
344 "This package provides tools to import photos and videos from cameras,
345phones and memory cards and generate meaningful file and folder names.")
346 (license license:gpl2+)))
347
348(define-public libcamera-minimal
349 (package
350 (name "libcamera-minimal")
351 (version "0.7.2")
352 (source
353 (origin
354 (method git-fetch)
355 (uri
356 (git-reference
357 (url "https://git.libcamera.org/libcamera/libcamera.git")
358 (commit (string-append "v" version))))
359 (patches (search-patches
360 "libcamera-ipa_manager-disable-signature-verification.patch"))
361 (file-name (git-file-name "libcamera" version))
362 (sha256
363 (base32 "0s8ipm306p9lxk6pws8x44jih4g48yxilvr5z2ka5n337mwn84dy"))))
364 (build-system meson-build-system)
365 (arguments
366 (list #:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
367 #:configure-flags
368 #~(list "-Dudev=enabled"
369 "-Dv4l2=enabled"
370 "-Dtest=true"
371 #$@(if (target-x86-32?)
372 ;; Lower precision to the regular 64-bit IEEE
373 ;; floats, to avoid failures in the control_value
374 ;; and histogram tests that compare floats.
375 #~("-Dcpp_args=-msse2 -mfpmath=sse")
376 #~()))
377 #:phases
378 #~(modify-phases %standard-phases
379 (add-after 'unpack 'disable-gstreamer-tests
380 ;; these require /dev/udmabuf
381 (lambda _
382 (substitute* "test/meson.build"
383 (("subdir\\('gstreamer'\\)") ""))))
384 #$@(if (target-aarch64?)
385 #~((add-after 'unpack 'disable-problematic-tests
386 (lambda _
387 ;; The 'log_process' test fails on aarch64-linux with a
388 ;; SIGinvalid error (see:
389 ;; https://bugs.libcamera.org/show_bug.cgi?id=173).
390 (substitute* "test/log/meson.build"
391 ((".*'name': 'log_process'.*")
392 ""))
393 ;; The 'file' test fails on aarch64-linux with SIGinvalid.
394 (substitute* "test/meson.build"
395 ((".*'name': 'file'.*")
396 "")))))
397 #~()))))
398 (native-inputs
399 (list pkg-config
400 python-wrapper
401 python-pyyaml
402 python-packaging))
403 (inputs
404 (append
405 (list eudev
406 glib
407 gstreamer
408 gst-plugins-base
409 libjpeg-turbo
410 libyaml
411 libyuv
412 pybind11-2
413 python-jinja2
414 python-ply)
415 ;; libpisp is only needed for the rpi/pisp pipeline on ARM.
416 (if (target-arm?)
417 (list libpisp)
418 '())))
419 (synopsis "Camera stack and framework")
420 (description "LibCamera is a complex camera support library for GNU+Linux,
421Android, and ChromeOS.")
422 (home-page "https://libcamera.org/")
423 (license license:lgpl2.1+)))
424
425;; Drop the documentation and the sample utilities.
426;; The README.rst gives a nice list of what packages are required.
427(define-public libcamera
428 (package/inherit libcamera-minimal
429 (name "libcamera")
430 (outputs '("out" "doc" "gst" "tools"))
431 (arguments
432 (substitute-keyword-arguments (package-arguments libcamera-minimal)
433 ((#:configure-flags flags #~'())
434 #~(cons (string-append "-Dbindir=" #$output:tools "/bin")
435 #$flags))
436 ((#:phases phases #~%standard-phases)
437 #~(modify-phases #$phases
438 (add-after 'unpack 'set-sphinx-theme
439 ;; sphinx_book_theme requires node for packaging
440 ;; use the default sphinx theme instead
441 (lambda _
442 (substitute* "Documentation/conf.py.in"
443 (("sphinx_book_theme") "alabaster"))))
444 (add-after 'install 'move-doc-and-gst
445 (lambda _
446 (mkdir-p (string-append #$output:doc "/share"))
447 (rename-file (string-append #$output "/share/doc")
448 (string-append #$output:doc "/share/doc"))
449 (mkdir-p (string-append #$output:gst "/lib"))
450 (rename-file
451 (string-append #$output "/lib/gstreamer-1.0")
452 (string-append #$output:gst "/lib/gstreamer-1.0"))))))))
453 (native-inputs
454 (modify-inputs (package-native-inputs libcamera-minimal)
455 (append googletest
456 doxygen
457 graphviz
458 python-sphinx
459 python-sphinxcontrib-doxylink)))
460 (inputs
461 (modify-inputs (package-inputs libcamera-minimal)
462 (append libevent libtiff qtbase)))))
463
464(define-public libraw
465 (package
466 (name "libraw")
467 (version "0.22.1")
468 (source (origin
469 (method url-fetch)
470 (uri (string-append "https://www.libraw.org/data/LibRaw-"
471 version ".tar.gz"))
472 (sha256
473 (base32
474 "11nprxm63dqfhlfdfsngjw6rvd67h05lwfkrjcfr1qh94i7dr2d7"))))
475 (build-system gnu-build-system)
476 (native-inputs
477 (list pkg-config))
478 (inputs
479 (list libjpeg-turbo ;for lossy DNGs and old Kodak cameras
480 zlib))
481 (propagated-inputs
482 (list lcms)) ;for color profiles
483 (home-page "https://www.libraw.org")
484 (synopsis "Raw image decoder")
485 (description
486 "LibRaw is a library for reading RAW files obtained from digital photo
487cameras (CRW/CR2, NEF, RAF, DNG, and others).")
488 ;; LibRaw is distributed under both LGPL2.1 and CDDL 1.0. From the README:
489 ;; "You may use one of these licensing modes and switch between them. If
490 ;; you modify LibRaw source and made your changes public, you should accept
491 ;; both two licensing modes for your changes/additions."
492 (license (list license:lgpl2.1 license:cddl1.0))))
493
494(define-public libexif
495 (package
496 (name "libexif")
497 (version "0.6.24")
498 (source (origin
499 (method git-fetch)
500 (uri (git-reference
501 (url "https://github.com/libexif/libexif.git")
502 (commit (string-append "v" version))))
503 (file-name (git-file-name name version))
504 (sha256
505 (base32
506 "0zi5vvb0khlzc6xyfayk6mjx5lgkrj8r7s8lfv4j7wkcgndjga0j"))))
507 (build-system gnu-build-system)
508 (native-inputs (list autoconf automake gettext-minimal libtool))
509 (home-page "https://github.com/libexif/libexif")
510 (synopsis "Read and manipulate EXIF data in digital photographs")
511 (description
512 "The libexif C library allows applications to read, edit, and save EXIF
513data as produced by digital cameras.")
514 (license license:lgpl2.1+)))
515
516(define-public libgphoto2
517 (package
518 (name "libgphoto2")
519 (version "2.5.30")
520 (source (origin
521 (method url-fetch)
522 (uri (string-append "mirror://sourceforge/gphoto/libgphoto/"
523 version "/libgphoto2-" version ".tar.bz2"))
524 (sha256
525 (base32
526 "1d0g3ixxfz3sfm5rzibydqd9ccflls86pq0ls48zfp5dqvda2qgf"))))
527 (build-system gnu-build-system)
528 (arguments
529 (list #:phases
530 #~(modify-phases %standard-phases
531 (add-before 'configure 'relax-gcc-14-strictness
532 ;; Required on i686, but not x86_64.
533 (lambda _
534 (setenv "CFLAGS"
535 (string-append
536 "-g -O2 "
537 "-Wno-incompatible-pointer-types")))))))
538 (native-inputs (list pkg-config))
539 (inputs
540 (list libjpeg-turbo libltdl libusb libxml2))
541 (propagated-inputs
542 (list ;; The .pc refers to libexif.
543 libexif))
544 (home-page "http://www.gphoto.org/proj/libgphoto2/")
545 (synopsis "Accessing digital cameras")
546 (description
547 "This is the library backend for gphoto2. It contains the code for PTP,
548MTP, and other vendor specific protocols for controlling and transferring data
549from digital cameras.")
550
551 ;; 'COPYING' says LGPLv2.1+, but in practices files are under LGPLv2+.
552 (license license:lgpl2.1+)))
553
554(define-public gphoto2
555 (package
556 (name "gphoto2")
557 (version "2.5.28")
558 (source (origin
559 (method url-fetch)
560 (uri (string-append "mirror://sourceforge/gphoto/gphoto/" version
561 "/gphoto2-" version ".tar.bz2"))
562 (sha256
563 (base32
564 "0xbki37q9ja34igidr2vj0ps1lp7sfz4xpsmh8h9x89dy76qsr1a"))))
565 (build-system gnu-build-system)
566 (native-inputs
567 (list pkg-config))
568 (inputs
569 (list readline libjpeg-turbo popt libexif libgphoto2))
570 (arguments
571 '(#:phases
572 (modify-phases %standard-phases
573 (add-before 'check 'pre-check
574 (lambda* (#:key inputs #:allow-other-keys)
575 (substitute* (find-files "tests/data" "\\.param$")
576 (("/usr/bin/env")
577 (which "env"))))))
578 ;; FIXME: There is 1 test failure, most likely related to the build
579 ;; environment.
580 #:tests? #f))
581 (home-page "http://www.gphoto.org/")
582 (synopsis "Command-line tools to access digital cameras")
583 (description
584 "Gphoto2 is a set of command line utilities for manipulating a large
585number of different digital cameras. Through libgphoto2, it supports PTP,
586MTP, and much more.")
587
588 ;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+.
589 (license license:gpl2+)))
590
591;; Note: See <https://metacpan.org/pod/Image::ExifTool> for the latest
592;; release. The versions at <https://www.sno.phy.queensu.ca/~phil/exiftool/>
593;; are not meant for production use according to the Changes file.
594(define-public perl-image-exiftool
595 (package
596 (name "perl-image-exiftool")
597 (version "13.55")
598 (source
599 (origin
600 (method url-fetch)
601 (uri (list
602 (string-append "mirror://cpan/authors/id/E/EX/EXIFTOOL/"
603 "Image-ExifTool-" version ".tar.gz")
604 ;; New releases may take a while to hit CPAN.
605 (string-append "https://www.sno.phy.queensu.ca/~phil/exiftool/"
606 "Image-ExifTool-" version ".tar.gz")))
607 (sha256
608 (base32
609 "0rv6hiqd44npnjzcn5ig5d0rnpgbzkdp5bbi526561nl9b9q2k2z"))))
610 (build-system perl-build-system)
611 (arguments
612 (list #:phases
613 #~(modify-phases %standard-phases
614 (add-after 'install 'post-install
615 (lambda* (#:key outputs #:allow-other-keys)
616 ;; Make sure the 'exiftool' commands finds the library.
617 ;; XXX: Shouldn't it be handled by PERL-BUILD-SYSTEM?
618 (let* ((pm (find-files #$output "^ExifTool\\.pm$"))
619 (lib (dirname (dirname (car pm)))))
620 (wrap-program (string-append #$output "/bin/exiftool")
621 `("PERL5LIB" prefix (,lib)))))))))
622 (inputs (list bash-minimal))
623 (home-page "https://metacpan.org/release/Image-ExifTool")
624 (synopsis "Program and Perl library to manipulate EXIF and other metadata")
625 (description "This package provides the @code{exiftool} command and the
626@code{Image::ExifTool} Perl library to manipulate EXIF tags of digital images
627and a wide variety of other metadata.")
628 (license license:perl-license)))
629
630(define-public libpano13
631 (package
632 (name "libpano13")
633 (version "2.9.23")
634 (source (origin
635 (method url-fetch)
636 (uri (string-append "mirror://sourceforge/panotools/libpano13/"
637 "libpano13-" (first
638 (string-split version #\_))
639 "/libpano13-" version ".tar.gz"))
640 (sha256
641 (base32
642 "0a7a2mccz9zgmbi41kp57p555171vdyy8591jqs99hqlgb9pdh77"))))
643 (build-system cmake-build-system)
644 (native-inputs
645 (list perl)) ; for pod2man
646 (inputs
647 (list libjpeg-turbo libpng libtiff zlib))
648 (home-page "https://panotools.sourceforge.net/")
649 (synopsis "Library for panoramic images")
650 (description
651 "The libpano13 package contains the backend library written by the
652Panorama Tools project for building panoramic images from a set of
653overlapping images, as well as some command line tools.")
654 (license license:gpl2+)))
655
656(define-public enblend-enfuse
657 (package
658 (name "enblend-enfuse")
659 (version "4.2")
660 (source (origin
661 (method url-fetch)
662 (uri (string-append "mirror://sourceforge/enblend/"
663 name "/"
664 name "-" (version-major+minor version) "/"
665 name "-" version ".tar.gz"))
666 (sha256
667 (base32
668 "0j5x011ilalb47ssah50ag0a4phgh1b0wdgxdbbp1gcyjcjf60w7"))
669 (patches
670 ;; TODO: Remove when updating.
671 ;; Fixed upstream with a98e00eed893f62dd8349fc2894abca3aff4b33a.
672 (search-patches "enblend-enfuse-reproducible.patch"))
673 (modules '((guix build utils)))
674 (snippet
675 ;; TODO: Remove when updating.
676 ;; Fixed upstream with 81e25afe71146aaaf5058c604034f35d57e3be9d.
677 #~(substitute* "src/minimizer.cc"
678 (("^#include <gsl/gsl_errno\\.h>" all)
679 (string-append all "\n#include <limits>"))))))
680 (build-system gnu-build-system)
681 (native-inputs
682 (list pkg-config
683 perl
684 perl-timedate
685 help2man
686 ;; For building the documentation.
687 gnuplot
688 graphviz-minimal ; for 'dot'
689 font-ghostscript
690 imagemagick/stable
691 (librsvg-for-system)
692 m4
693 perl-readonly
694 texlive-texloganalyser
695 (texlive-local-tree
696 (list texlive-bold-extra
697 texlive-cm-mf-extra-bold
698 texlive-comment
699 texlive-float
700 texlive-enumitem
701 texlive-mdwtools
702 texlive-hyphenat
703 texlive-index
704 texlive-listings
705 texlive-microtype
706 texlive-etoolbox ;used but not propagated by microtype
707 texlive-nag
708 texlive-ragged2e
709 texlive-shorttoc
710 texlive-bigfoot
711 texlive-xstring))
712 hevea))
713 (inputs
714 (list boost
715 gsl
716 lcms
717 libjpeg-turbo
718 libpng
719 libtiff
720 openexr
721 vigra
722 zlib))
723 (arguments
724 (list
725 #:configure-flags #~(list "--enable-openmp")
726 #:phases
727 #~(modify-phases %standard-phases
728 (add-before 'build 'fontconfig-cache
729 (lambda _
730 (setenv "XDG_CACHE_HOME" (mkdtemp "/tmp/cache-XXXXXX"))))
731 ;; XXX: There's some extreme sillyness when building the
732 ;; documentation. It gets rebuilt thrice, during build, check and
733 ;; install, possibly due to the effects of the invocation of
734 ;; UPDATED_ON in doc/Makefile.
735 ;; Reported: <URL:https://bugs.launchpad.net/enblend/+bug/2036319>
736 (add-after 'configure 'exclude-doc-from-check
737 (lambda _
738 (substitute* "doc/Makefile"
739 (("^(check:).+$" _ rule)
740 (string-append rule "\n")))))
741 ;; XXX: Skip building the docs since they're rebuilt again
742 ;; during install.
743 (replace 'build
744 (lambda args
745 (with-directory-excursion "src"
746 (apply (assoc-ref %standard-phases 'build) args))))
747 ;; XXX: Save another doc rebuild when installing.
748 (replace 'install
749 ;; Intercept and insert a make-flag for this phase only.
750 (lambda* (#:key make-flags #:allow-other-keys)
751 (apply invoke "make" "install"
752 (cons "MAYBE_DOC=" make-flags))))
753 ;; XXX: 'make install' doesn't install the docs.
754 (add-after 'install 'install-doc
755 (lambda* (#:key make-flags #:allow-other-keys)
756 ;; Install examples first, for which the 'install' rule works.
757 (with-directory-excursion "doc/examples"
758 (apply invoke "make" "install" make-flags))
759 ;; The docs have to be installed with specific rules.
760 (with-directory-excursion "doc"
761 (apply invoke "make"
762 "install-ps-local"
763 "install-html-local"
764 "install-dvi-local"
765 ;; Do not overwhelm the console by printing the source
766 ;; to stdout.
767 (cons "V=0" make-flags))))))))
768 (outputs '("out" "doc"))
769 (home-page "https://enblend.sourceforge.net/")
770 (synopsis "Tools for combining and blending images")
771 (description
772 "Enblend blends away the seams in a panoramic image mosaic using a
773multi-resolution spline. Enfuse merges different exposures of the same
774scene to produce an image that looks much like a tone-mapped image.")
775 (license license:gpl2+)))
776
777(define-public lensfun
778 (package
779 (name "lensfun")
780 (version "0.3.4")
781 (source
782 (origin
783 (method git-fetch)
784 (uri (git-reference
785 (url "https://github.com/lensfun/lensfun")
786 (commit (string-append "v" version))))
787 (file-name (git-file-name name version))
788 (sha256
789 (base32 "1lwf3cwldvh9qfmh3w7nqqildfmxx2i5f5bn0vr8y6qc5kh7a1s9"))))
790 (build-system cmake-build-system)
791 (arguments
792 (list
793 #:imported-modules `(,@%cmake-build-system-modules
794 ,@%pyproject-build-system-modules)
795 #:modules '((guix build cmake-build-system)
796 ((guix build pyproject-build-system) #:prefix py:)
797 (guix build utils))
798 #:configure-flags
799 (if (any (cute string-prefix? <> (or (%current-system)
800 (%current-target-system)))
801 '("x86_64" "i686"))
802 ;; SSE and SSE2 are supported only on Intel processors.
803 #~'()
804 #~'("-DBUILD_FOR_SSE=OFF" "-DBUILD_FOR_SSE2=OFF"))
805 #:tests? #f ; There are no tests to run.
806 #:phases
807 #~(modify-phases %standard-phases
808 (add-after 'unpack 'fix-egg
809 (lambda _
810 (substitute* "apps/CMakeLists.txt"
811 ;; Prevent creation of Python egg.
812 (("\\$\\{SETUP_PY\\} install")
813 "${SETUP_PY} install --single-version-externally-managed --root=/"))))
814 (add-after 'install 'python-wrap
815 (lambda* (#:key inputs outputs #:allow-other-keys)
816 (for-each (lambda (program)
817 (wrap-program (search-input-file outputs program)
818 `("GUIX_PYTHONPATH" ":" prefix
819 (,(getenv "GUIX_PYTHONPATH")
820 ,(py:site-packages inputs outputs)))))
821 (list "bin/lensfun-update-data"
822 "bin/lensfun-add-adapter")))))))
823 (native-inputs
824 (list pkg-config))
825 (inputs
826 (list bash-minimal glib python python-setuptools))
827 (home-page "https://lensfun.github.io/")
828 (synopsis "Library to correct optical lens defects with a lens database")
829 (description "Digital photographs are not ideal. Of course, the better is
830your camera, the better the results will be, but in any case if you look
831carefully at shots taken even by the most expensive cameras equipped with the
832most expensive lenses you will see various artifacts. It is very hard to make
833ideal cameras, because there are a lot of factors that affect the final image
834quality, and at some point camera and lens designers have to trade one factor
835for another to achieve the optimal image quality, within the given design
836restrictions and budget. But we all want ideal shots, don't we? So that's
837what's Lensfun is all about: rectifying the defects introduced by your
838photographic equipment.")
839 ;; The libraries are licensed under the LGPL3, the programs are
840 ;; licensed GPL3, and the database is license CC-BY-SA 3.0. See the
841 ;; README.md file for this clarification.
842 (license (list license:lgpl3 license:gpl3 license:cc-by-sa3.0))))
843
844(define-public darktable
845 (package
846 (name "darktable")
847 (version "5.6.1")
848 (source
849 (origin
850 (method url-fetch)
851 (uri (string-append
852 "https://github.com/darktable-org/darktable/releases/"
853 "download/release-" version "/darktable-" version ".tar.xz"))
854 (sha256
855 (base32 "0dnwavvzj3h619gc1ayrwa6dbhclcfsw8dj09qj9ls0big4lmf78"))))
856 (build-system cmake-build-system)
857 (arguments
858 (list
859 #:configure-flags
860 #~(list "-DBINARY_PACKAGE_BUILD=On"
861 "-DDONT_USE_INTERNAL_LIBRAW=On")
862 #:phases
863 #~(modify-phases %standard-phases
864 (add-after 'unpack 'libOpenCL-path
865 (lambda* (#:key inputs #:allow-other-keys)
866 ;; Statically link to libOpenCL.
867 (substitute* "./src/common/dlopencl.c"
868 (("\"libOpenCL\"")
869 (string-append "\""
870 (search-input-file inputs "/lib/libOpenCL.so")
871 "\"")))))
872 (add-after 'install 'wrap-program
873 (lambda _
874 (wrap-program (string-append #$output "/bin/darktable")
875 ;; For GtkFileChooserDialog.
876 `("GSETTINGS_SCHEMA_DIR" =
877 (,(string-append #$(this-package-input "gtk+")
878 "/share/glib-2.0/schemas")))))))))
879 (native-inputs
880 (list cmocka
881 desktop-file-utils
882 ;; XXX: Need to explicitly specify gcc-14 here or else the build
883 ;; fails with missing Graphite/isl support in gcc for unknown
884 ;; reasons.
885 gcc-14
886 `(,glib "bin")
887 gobject-introspection
888 intltool
889 llvm-13
890 opencl-headers
891 perl
892 pkg-config
893 po4a
894 python-wrapper
895 ruby))
896 (inputs
897 (list bash-minimal
898 cairo
899 colord-gtk ;optional, for color profile support
900 cups ;optional, for printing support
901 curl
902 dbus-glib
903 exiv2
904 gmic ;optional, for HaldcLUT support
905 graphicsmagick
906 gsettings-desktop-schemas
907 gtk+
908 imath
909 iso-codes/pinned ;optional, for language names in the preferences
910 json-glib
911 lcms
912 lensfun ;optional, for the lens distortion plugin
913 libavif ;optional, for AVIF support
914 libgphoto2 ;optional, for camera tethering
915 libheif
916 libjpeg-turbo
917 libjxl ;optional, for JPEG-XL support
918 libomp-13
919 libpng
920 libraw
921 libsecret ;optional, for storing passwords
922 libsoup-minimal-2 ;optional, for osm-gps-map
923 (librsvg-for-system)
924 libtiff
925 libwebp ;optional, for WebP support
926 libxml2
927 libxslt
928 lua-5.4 ;optional, for plugins
929 openexr ;optional, for EXR import/export
930 openjpeg ;optional, for JPEG2000 export
931 osm-gps-map ;optional, for geotagging view
932 portmidi ;optional, for hardware MIDI input devices
933 potrace
934 pugixml
935 python-jsonschema
936 sdl2
937 sqlite))
938 (propagated-inputs
939 (list opencl-icd-loader)) ;optional, for OpenCL support
940 (home-page "https://www.darktable.org")
941 (synopsis "Virtual lighttable and darkroom for photographers")
942 (description "Darktable is a photography workflow application and RAW
943developer. It manages your digital negatives in a database, lets you view
944them through a zoomable lighttable and enables you to develop raw images
945and enhance them.")
946 ;; See src/is_supported_platform.h for supported platforms.
947 (supported-systems '("x86_64-linux" "aarch64-linux" "powerpc64le-linux"
948 "riscv64-linux"))
949 (properties
950 '((release-monitoring-url . "https://www.darktable.org/install/")))
951 (license (list license:gpl3+ ;Darktable itself
952 license:lgpl2.1+)))) ;Rawspeed library
953
954;; There has been no release nor any tag yet, so we take an arbitrary commit.
955(define-public ansel
956 (let ((commit "b51cfa38c41abe9933b40e1583807b105c5933c1")
957 (revision "1"))
958 (package
959 (name "ansel")
960 (version (git-version "0.0.0" revision commit))
961 (source
962 (origin
963 (method git-fetch)
964 (uri (git-reference
965 (url "https://github.com/aurelienpierreeng/ansel")
966 (commit commit)
967 (recursive? #t)))
968 (file-name (git-file-name name version))
969 (sha256
970 (base32 "0f2m8qlmfaw9afs3b2bpk3s40wmgqzaf36szcz10c38dm3lhnhqh"))
971 (modules '((guix build utils)))
972 (snippet '(for-each delete-file-recursively
973 '("src/external/LibRaw"
974 "src/external/OpenCL"
975 "src/external/lua"
976 "doc/doxygen-awesome-css")))))
977 (build-system cmake-build-system)
978 (arguments
979 (list
980 #:tests? #f ;Tests are only examples
981 #:configure-flags
982 #~(list "-DUSE_BUNDLED_LIBRAW=OFF"
983 "-DBINARY_PACKAGE_BUILD=ON")
984 #:build-type "Release" ;Rawspeed fails on default 'RelWithDebInfo'
985 #:phases
986 #~(modify-phases %standard-phases
987 (add-after 'unpack 'libOpenCL-path
988 (lambda* (#:key inputs #:allow-other-keys)
989 ;; Statically link to libOpenCL.
990 (substitute* "./src/common/dlopencl.c"
991 (("\"libOpenCL\"")
992 (string-append "\""
993 (search-input-file inputs "/lib/libOpenCL.so")
994 "\""))))))))
995 (native-inputs
996 (list cmocka
997 desktop-file-utils
998 ;; With the default GCC configuration fails with: Unsupported
999 ;; libstdc++ version: 11. Updated to gcc-14 for ABI
1000 ;; compatibility with libheif/openexr.
1001 gcc-14
1002 `(,glib "bin")
1003 gobject-introspection
1004 intltool
1005 llvm-13 ;optional
1006 opencl-headers
1007 perl
1008 pkg-config
1009 po4a))
1010 (inputs
1011 (list bash-minimal
1012 cairo
1013 colord-gtk ;optional, for color profile support
1014 cups ;optional, for printing support
1015 curl
1016 exiv2
1017 gmic ;optional, for HaldcLUT support
1018 graphicsmagick ;optional
1019 gtk+
1020 imath
1021 iso-codes/pinned ;optional, for language names in the preferences
1022 jasper ;optional, for JPEG-2000 support
1023 json-glib
1024 lcms
1025 lensfun ;optional, for the lens distortion plugin
1026 libavif ;optional, for AVIF support
1027 libjpeg-turbo
1028 libraw
1029 (librsvg-for-system)
1030 libsecret ;optional, for storing passwords
1031 libsoup-minimal-2 ;optional, for osm-gps-map
1032 libwebp ;optional, for WebP support
1033 libxml2 ;optional, for cameras.xml validation
1034 libxslt
1035 libheif
1036 lua-5.4 ;optional, for plugins
1037 opencl-icd-loader ;optional, for OpenCL support
1038 openexr ;optional, for EXR import/export
1039 openjpeg ;optional, for JPEG2000 export
1040 osm-gps-map ;optional, for geotagging view
1041 pugixml
1042 python-jsonschema
1043 sqlite))
1044 (home-page "https://ansel.photos/")
1045 (synopsis "Virtual lighttable and darkroom for photographers")
1046 (description
1047 "Ansel is an photo-editing software for digital artists, designed to
1048help you achieve your own interpretation of raw digital photographs.")
1049 ;; See src/is_supported_platform.h for supported platforms.
1050 (supported-systems '("x86_64-linux" "aarch64-linux" "powerpc64le-linux"))
1051 (license license:gpl3+))))
1052
1053(define-public photoflare
1054 (package
1055 (name "photoflare")
1056 (version "1.6.10")
1057 (source
1058 (origin
1059 (method git-fetch)
1060 (uri (git-reference
1061 (url "https://github.com/photoflare/photoflare")
1062 (commit (string-append "v" version))))
1063 (file-name (git-file-name name version))
1064 (sha256
1065 (base32 "1sm4m9nga1lyqycgqbh08cib5dg4fnrz9qkrliycr3dbisy360lm"))))
1066 (build-system gnu-build-system)
1067 (arguments
1068 '(#:tests? #f ;no tests
1069 #:phases
1070 (modify-phases %standard-phases
1071 (replace 'configure
1072 (lambda* (#:key inputs outputs #:allow-other-keys)
1073 (let ((magickpp (assoc-ref inputs "graphicsmagick"))
1074 (out (assoc-ref outputs "out")))
1075 (invoke "qmake"
1076 (string-append "INCLUDEPATH += " magickpp
1077 "/include/GraphicsMagick")
1078 (string-append "PREFIX=" out)
1079 "Photoflare.pro")))))))
1080 (native-inputs
1081 (list pkg-config qttools-5))
1082 (inputs
1083 (list graphicsmagick libomp-13 qtbase-5))
1084 (home-page "https://photoflare.io")
1085 (synopsis "Quick, simple but powerful image editor")
1086 (description "Photoflare is a cross-platform image editor with an aim
1087to balance between powerful features and a very friendly graphical user
1088interface. It suits a wide variety of different tasks and users who value a
1089more nimble workflow. Features include basic image editing capabilities,
1090paint brushes, image filters, colour adjustments and more advanced features
1091such as Batch image processing.")
1092 (license license:gpl3+)))
1093
1094(define-public entangle
1095 (package
1096 (name "entangle")
1097 (version "3.0") ; delete the 'build-with-meson-0.60 phase when updating
1098 (source
1099 (origin
1100 (method git-fetch)
1101 (uri (git-reference
1102 (url "https://gitlab.com/entangle/entangle")
1103 (commit (string-append "v" version))))
1104 (file-name (git-file-name name version))
1105 (sha256
1106 (base32 "1pdmgxjdb3xlcqsaz7l8qzj5f7g7nwzhsrgid8929bm36d49cgc7"))))
1107 (build-system meson-build-system)
1108 (arguments
1109 (list
1110 #:glib-or-gtk? #t
1111 #:phases
1112 #~(modify-phases %standard-phases
1113 (add-after 'unpack 'build-with-meson-0.60
1114 ;; Work around ‘ERROR: Function does not take positional arguments.’.
1115 (lambda _
1116 (substitute* "src/meson.build"
1117 (("^i18n\\.merge_file.*" match)
1118 (string-append match " data_dirs:")))))
1119 (add-after 'unpack 'skip-gtk-update-icon-cache
1120 ;; Don't create 'icon-theme.cache'.
1121 (lambda _
1122 (substitute* "meson_post_install.py"
1123 (("gtk-update-icon-cache") "true"))))
1124 (add-after 'install 'wrap-gi-python
1125 ;; Make GTK find files needed by plugins.
1126 (lambda* (#:key inputs #:allow-other-keys)
1127 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))
1128 (python-path (getenv "GUIX_PYTHONPATH")))
1129 (wrap-program (string-append #$output "/bin/entangle")
1130 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
1131 `("GUIX_PYTHONPATH" ":" prefix (,python-path)))))))))
1132 (native-inputs
1133 (list cmake-minimal
1134 gettext-minimal
1135 `(,glib "bin")
1136 gobject-introspection
1137 gtk-doc/stable
1138 itstool
1139 libxml2
1140 perl
1141 pkg-config))
1142 (inputs
1143 (list bash-minimal
1144 gdk-pixbuf
1145 gexiv2-0.14
1146 gst-plugins-base
1147 gstreamer
1148 gtk+
1149 lcms
1150 libgphoto2
1151 libgudev
1152 libpeas
1153 libraw
1154 python
1155 python-pygobject))
1156 (home-page "https://entangle-photo.org/")
1157 (synopsis "Camera control and capture")
1158 (description
1159 "Entangle is an application which uses GTK and libgphoto2 to provide a
1160graphical interface for tethered photography with digital cameras. It
1161includes control over camera shooting and configuration settings and 'hands
1162off' shooting directly from the controlling computer.")
1163 (license license:gpl3+)))
1164
1165(define-public hugin
1166 (package
1167 (name "hugin")
1168 (version "2025.0.1")
1169 (source (origin
1170 (method url-fetch)
1171 (uri (string-append "mirror://sourceforge/hugin/hugin/hugin-"
1172 (version-major+minor version)
1173 "/hugin-" version ".tar.bz2"))
1174 (sha256
1175 (base32
1176 "0ydb28wj9jxmrini64sm7n42i4iqi2yg9yhnz33qr158lqrypy3w"))))
1177 (build-system cmake-build-system)
1178 (native-inputs
1179 (list gettext-minimal pkg-config))
1180 (inputs
1181 (list boost-1.83
1182 enblend-enfuse
1183 exiv2
1184 fftw
1185 flann
1186 freeglut
1187 glew
1188 lcms
1189 libjpeg-turbo
1190 libpano13
1191 libpng
1192 libtiff
1193 libxi
1194 libxmu
1195 mesa
1196 openexr
1197 sqlite
1198 vigra
1199 wxwidgets
1200 zlib))
1201 (arguments
1202 (list
1203 #:tests? #f ; no check target
1204 #:configure-flags
1205 #~(list
1206 ;; Disable installation of the Python scripting interface.
1207 ;; It would require the additional inputs python and swig.
1208 ;; Installation would need to be tweaked, as it tries to install
1209 ;; into the python directory.
1210 "-DBUILD_HSI=OFF")
1211 #:phases
1212 #~(modify-phases %standard-phases
1213 (add-before 'configure 'substitute
1214 (lambda _
1215 (substitute* "src/hugin1/base_wx/StitchingExecutor.cpp"
1216 (("wxT\\(\"enblend\"\\)")
1217 (string-append "wxT(\"" (which "enblend") "\")"))
1218 (("wxT\\(\"enfuse\"\\)")
1219 (string-append "wxT(\"" (which "enfuse") "\")"))))))))
1220 (home-page "https://hugin.sourceforge.net/")
1221 (synopsis "Panorama photo stitcher")
1222 (description
1223 "Hugin is an easy to use panoramic imaging toolchain with a graphical
1224user interface. It can be used to assemble a mosaic of photographs into
1225a complete panorama and stitch any series of overlapping pictures.")
1226 (license license:gpl2+)))
1227
1228(define-public rawtherapee
1229 (package
1230 (name "rawtherapee")
1231 (version "5.13")
1232 (source (origin
1233 (method url-fetch)
1234 (uri (string-append "https://github.com/RawTherapee/RawTherapee/"
1235 "releases/download/" version "/"
1236 "rawtherapee-" version ".tar.xz"))
1237 (sha256
1238 (base32
1239 "1gvp7vkhwwcl65fpj2fjn70yjndc3k912jx92562gq8p315zzg93"))))
1240 (build-system cmake-build-system)
1241 (arguments
1242 (list
1243 #:tests? #f ; no test suite
1244 #:build-type "release"
1245 #:configure-flags
1246 #~(list (string-append "-DLENSFUNDBDIR="
1247 #$(this-package-input "lensfun")
1248 "/share/lensfun")
1249 ;; Don't optimize the build for the host machine. See the file
1250 ;; 'ProcessorTargets.cmake' in the source distribution for more
1251 ;; information.
1252 "-DPROC_TARGET_NUMBER=1"
1253 ;; These flags are recommended by upstream for distributed packages.
1254 ;; See the file 'RELEASE_NOTES.txt' in the source distribution.
1255 "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
1256 "-DCMAKE_C_FLAGS=-O3 -fPIC"
1257 "-DCACHE_NAME_SUFFIX=\"\""
1258 "-DWITH_JXL=ON"
1259 "-DWITH_SIMDE=ON"
1260 "-DWITH_SYSTEM_LIBRAW=ON"
1261 "-DWITH_SYSTEM_FMT=ON")))
1262 (native-inputs
1263 (list pkg-config))
1264 (inputs
1265 (list expat
1266 exiv2
1267 fmt
1268 fftwf
1269 glib
1270 glibmm
1271 gtk+
1272 gtkmm-3
1273 lcms
1274 lensfun
1275 libcanberra
1276 libiptcdata
1277 libjpeg-turbo
1278 libjxl
1279 libpng
1280 (librsvg-for-system)
1281 libraw
1282 libsigc++
1283 libtiff
1284 simde
1285 zlib))
1286 (home-page "https://rawtherapee.com")
1287 (synopsis "Raw image developing and processing")
1288 (description "RawTherapee is a raw image processing suite. It comprises a
1289subset of image editing operations specifically aimed at non-destructive raw
1290photo post-production and is primarily focused on improving a photographer's
1291workflow by facilitating the handling of large numbers of images. Most raw
1292formats are supported, including Pentax Pixel Shift, Canon Dual-Pixel, and those
1293from Foveon and X-Trans sensors.")
1294 (license license:gpl3+)))
1295
1296(define-public librtprocess
1297 (package
1298 (name "librtprocess")
1299 (version "0.12.0")
1300 (source (origin
1301 (method git-fetch)
1302 (uri (git-reference
1303 (url "https://github.com/CarVac/librtprocess")
1304 (commit version)))
1305 (sha256
1306 (base32
1307 "0v0zwbdbc1fn7iy6wi0m6zgb86qdx1ijnv548d0ydbr8cm4klnpz"))
1308 (file-name (git-file-name name version))))
1309 (build-system cmake-build-system)
1310 (arguments
1311 ;; No tests
1312 (list #:tests? #f))
1313 (home-page "https://github.com/CarVac/librtprocess")
1314 (synopsis "Highly optimized library for processing RAW images")
1315 (description
1316 "This package provides RawTherapee's highly optimized RAW processing routines.")
1317 (license license:gpl3+)))