gnu: pigx-chipseq: Update to 0.0.10.
[jackhill/guix/guix.git] / gnu / packages / photo.scm
CommitLineData
9208d0c1 1;;; GNU Guix --- Functional package management for GNU
4e9dfe39 2;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
d9cef612 3;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
1d093724 4;;; Copyright © 2015, 2017 Andreas Enge <andreas@enge.fr>
4dbef239 5;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
c49840f8 6;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
84f5e437 7;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
13d9794d 8;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
9208d0c1
LC
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages photo)
0e6412c1 26 #:use-module (guix build-system cmake)
9208d0c1 27 #:use-module (guix build-system gnu)
b138ec94 28 #:use-module (guix build-system perl)
f0644195
AE
29 #:use-module (guix download)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (guix packages)
8957241d 32 #:use-module (guix utils)
ce16d312 33 #:use-module (gnu packages)
1d093724 34 #:use-module (gnu packages algebra)
9208d0c1 35 #:use-module (gnu packages autotools)
f0644195 36 #:use-module (gnu packages base)
8957241d 37 #:use-module (gnu packages boost)
0e6412c1 38 #:use-module (gnu packages compression)
91a9c65c
RJ
39 #:use-module (gnu packages curl)
40 #:use-module (gnu packages databases)
1d093724 41 #:use-module (gnu packages gettext)
8957241d
AE
42 #:use-module (gnu packages ghostscript)
43 #:use-module (gnu packages gl)
91a9c65c 44 #:use-module (gnu packages gnome)
c49840f8 45 #:use-module (gnu packages glib)
8957241d 46 #:use-module (gnu packages graphics)
91a9c65c 47 #:use-module (gnu packages gtk)
0e6412c1 48 #:use-module (gnu packages image)
8957241d 49 #:use-module (gnu packages imagemagick)
13d9794d 50 #:use-module (gnu packages libcanberra)
f0644195 51 #:use-module (gnu packages libusb)
91a9c65c 52 #:use-module (gnu packages llvm)
d16479c5 53 #:use-module (gnu packages man)
8957241d 54 #:use-module (gnu packages maths)
b138ec94 55 #:use-module (gnu packages perl)
f0644195
AE
56 #:use-module (gnu packages pkg-config)
57 #:use-module (gnu packages popt)
91a9c65c 58 #:use-module (gnu packages python)
8957241d 59 #:use-module (gnu packages readline)
8f9ac901 60 #:use-module (gnu packages tex)
8957241d 61 #:use-module (gnu packages web)
1d093724 62 #:use-module (gnu packages wxwidgets)
8957241d 63 #:use-module (gnu packages xfig)
1d093724 64 #:use-module (gnu packages xorg)
4dbef239 65 #:use-module (gnu packages xml)
4e9dfe39 66 #:use-module ((srfi srfi-1) #:hide (zip))
4dbef239 67 #:use-module (srfi srfi-26))
9208d0c1 68
d9cef612
RW
69(define-public libraw
70 (package
71 (name "libraw")
e8ee100e 72 (version "0.18.8")
d9cef612
RW
73 (source (origin
74 (method url-fetch)
fe535d81 75 (uri (string-append "https://www.libraw.org/data/LibRaw-"
d9cef612
RW
76 version ".tar.gz"))
77 (sha256
78 (base32
e8ee100e 79 "1qi0fkw2zmd0yplrf79z7lgpz0hxl45dj5rdgpaj7283jzys9b2n"))))
d9cef612 80 (build-system gnu-build-system)
fe535d81 81 (home-page "https://www.libraw.org")
d9cef612
RW
82 (synopsis "Raw image decoder")
83 (description
84 "LibRaw is a library for reading RAW files obtained from digital photo
85cameras (CRW/CR2, NEF, RAF, DNG, and others).")
341f4965 86 (license license:lgpl2.1+)))
d9cef612 87
9208d0c1
LC
88(define-public libexif
89 (package
90 (name "libexif")
91 (version "0.6.21")
92 (source (origin
93 (method url-fetch)
de67e922
LF
94 (uri (string-append "mirror://sourceforge/libexif/libexif/"
95 version "/libexif-" version ".tar.bz2"))
ccb5cac1
LF
96 (patches (search-patches "libexif-CVE-2016-6328.patch"
97 "libexif-CVE-2017-7544.patch"))
9208d0c1
LC
98 (sha256
99 (base32
100 "06nlsibr3ylfwp28w8f5466l6drgrnydgxrm4jmxzrmk5svaxk8n"))))
101 (build-system gnu-build-system)
102 (home-page "http://libexif.sourceforge.net/")
103 (synopsis "Read and manipulate EXIF data in digital photographs")
104 (description
105 "The libexif C library allows applications to read, edit, and save EXIF
106data as produced by digital cameras.")
341f4965 107 (license license:lgpl2.1+)))
9208d0c1
LC
108
109(define-public libgphoto2
110 (package
111 (name "libgphoto2")
84f5e437 112 (version "2.5.16")
9208d0c1
LC
113 (source (origin
114 (method url-fetch)
de67e922
LF
115 (uri (string-append "mirror://sourceforge/gphoto/libgphoto/"
116 version "/libgphoto2-" version ".tar.bz2"))
9208d0c1
LC
117 (sha256
118 (base32
84f5e437 119 "01i95av28d0szyvx6l2gjv039r3205wjwjr91nfimq132rnl2mz7"))))
9208d0c1
LC
120 (build-system gnu-build-system)
121 (native-inputs `(("pkg-config" ,pkg-config)))
122 (inputs
7e49a851 123 `(("libjpeg-turbo" ,libjpeg-turbo)
3246cc91 124 ("libltdl" ,libltdl)
d32f4800
TGR
125 ("libusb" ,libusb)
126 ("libxml2" ,libxml2)))
9208d0c1
LC
127 (propagated-inputs
128 `(;; The .pc refers to libexif.
129 ("libexif" ,libexif)))
130 (home-page "http://www.gphoto.org/proj/libgphoto2/")
131 (synopsis "Accessing digital cameras")
132 (description
133 "This is the library backend for gphoto2. It contains the code for PTP,
134MTP, and other vendor specific protocols for controlling and transferring data
135from digital cameras.")
136
137 ;; 'COPYING' says LGPLv2.1+, but in practices files are under LGPLv2+.
341f4965 138 (license license:lgpl2.1+)))
9208d0c1
LC
139
140(define-public gphoto2
141 (package
142 (name "gphoto2")
a0bb98c3 143 (version "2.5.15")
9208d0c1
LC
144 (source (origin
145 (method url-fetch)
de67e922
LF
146 (uri (string-append "mirror://sourceforge/gphoto/gphoto/" version
147 "/gphoto2-" version ".tar.bz2"))
9208d0c1
LC
148 (sha256
149 (base32
a0bb98c3 150 "0xsa12k5fz49v8y4h3zahzr427a3ylxaf0k7hybrkp43g4i1lmxf"))))
9208d0c1
LC
151 (build-system gnu-build-system)
152 (native-inputs
153 `(("pkg-config" ,pkg-config)))
154 (inputs
155 `(("readline" ,readline)
7e49a851 156 ("libjpeg-turbo" ,libjpeg-turbo)
9208d0c1
LC
157 ("popt" ,popt)
158 ("libexif" ,libexif)
159 ("libgphoto2" ,libgphoto2)))
160 (arguments
dc1d3cde
KK
161 '(#:phases
162 (modify-phases %standard-phases
163 (add-before 'check 'pre-check
164 (lambda* (#:key inputs #:allow-other-keys)
165 (substitute* (find-files "tests/data" "\\.param$")
166 (("/usr/bin/env")
167 (which "env")))
168 #t)))
9208d0c1 169
a0bb98c3 170 ;; FIXME: There is 1 test failure, most likely related to the build
9208d0c1
LC
171 ;; environment.
172 #:tests? #f))
173
174 (home-page "http://www.gphoto.org/")
175 (synopsis "Command-line tools to access digital cameras")
176 (description
177 "Gphoto2 is a set of command line utilities for manipulating a large
178number of different digital cameras. Through libgphoto2, it supports PTP,
179MTP, and much more.")
180
181 ;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+.
341f4965 182 (license license:gpl2+)))
b138ec94
LC
183
184(define-public perl-image-exiftool
185 (package
186 (name "perl-image-exiftool")
33717a17 187 (version "10.55")
b138ec94
LC
188 (source (origin
189 (method url-fetch)
190 (uri (string-append
191 "mirror://cpan/authors/id/E/EX/EXIFTOOL/Image-ExifTool-"
192 version ".tar.gz"))
193 (sha256
194 (base32
33717a17 195 "0z8zwjjfvyllnhsafhddbybywpgqv0pl1dbn1g034cs27yj836q2"))))
b138ec94
LC
196 (build-system perl-build-system)
197 (arguments
33717a17
LF
198 '(#:phases
199 (modify-phases %standard-phases
200 (add-after 'install 'post-install
201 (lambda* (#:key outputs #:allow-other-keys)
202 ;; Make sure the 'exiftool' commands finds the library.
203 ;; XXX: Shouldn't it be handled by PERL-BUILD-SYSTEM?
204 (let* ((out (assoc-ref outputs "out"))
205 (pm (find-files out "^ExifTool\\.pm$"))
206 (lib (dirname (dirname (car pm)))))
207 (wrap-program (string-append out "/bin/exiftool")
208 `("PERL5LIB" prefix (,lib)))))))))
67abcc05 209 (home-page "http://search.cpan.org/dist/Image-ExifTool")
ae6591ef
LF
210 (synopsis "Program and Perl library to manipulate EXIF and other metadata")
211 (description "This package provides the @code{exiftool} command and the
212@code{Image::ExifTool} Perl library to manipulate EXIF tags of digital images
213and a wide variety of other metadata.")
2f3108ad 214 (license license:perl-license)))
0e6412c1
AE
215
216(define-public libpano13
217 (package
218 (name "libpano13")
219 (version "2.9.19")
220 (source (origin
221 (method url-fetch)
222 (uri (string-append "mirror://sourceforge/panotools/libpano13/"
223 "libpano13-" version "/"
224 "libpano13-" version ".tar.gz"))
225 (sha256
226 (base32
227 "1a4m3plmfcrrplqs9zfzhc5apibn10m5sajpizm1sd3q74w5fwq3"))))
228 (build-system cmake-build-system)
229 (inputs
230 `(("libjpeg" ,libjpeg)
231 ("libpng" ,libpng)
232 ("libtiff" ,libtiff)
233 ("zlib" ,zlib)))
234 (home-page "http://panotools.sourceforge.net/")
235 (synopsis "Library for panoramic images")
236 (description
237 "The libpano13 package contains the backend library written by the
238Panorama Tools project for building panoramic images from a set of
239overlapping images, as well as some command line tools.")
240 (license license:gpl2+)))
8957241d
AE
241
242(define-public enblend-enfuse
243 (package
244 (name "enblend-enfuse")
d16479c5 245 (version "4.2")
8957241d
AE
246 (source (origin
247 (method url-fetch)
248 (uri (string-append "mirror://sourceforge/enblend/"
249 name "/"
250 name "-" (version-major+minor version) "/"
251 name "-" version ".tar.gz"))
252 (sha256
253 (base32
d16479c5 254 "0j5x011ilalb47ssah50ag0a4phgh1b0wdgxdbbp1gcyjcjf60w7"))))
8957241d
AE
255 (build-system gnu-build-system)
256 (native-inputs
257 `(("pkg-config" ,pkg-config)
258 ("perl" ,perl)
259 ("perl-timedate" ,perl-timedate)
260 ;; for building the documentation
261 ("gnuplot" ,gnuplot)
d16479c5 262 ("help2man" ,help2man)
8957241d
AE
263 ("imagemagick" ,imagemagick)
264 ("libxml2" ,libxml2)
84de27c8 265 ("texlive-minimal" ,texlive-tiny)
8957241d
AE
266 ("tidy" ,tidy)
267 ("transfig" ,transfig)))
268 (inputs
269 `(("boost" ,boost)
270 ("gsl" ,gsl)
271 ("lcms" ,lcms)
272 ("libjpeg" ,libjpeg)
273 ("libpng" ,libpng)
274 ("libtiff" ,libtiff)
275 ("openexr" ,openexr)
276 ("vigra" ,vigra)
277 ("zlib" ,zlib)))
278 (arguments
279 `(#:configure-flags `("--enable-openmp")))
280 (home-page "http://enblend.sourceforge.net/")
281 (synopsis "Tools for combining and blending images")
282 (description
283 "Enblend blends away the seams in a panoramic image mosaic using a
284multi-resolution spline. Enfuse merges different exposures of the same
285scene to produce an image that looks much like a tone-mapped image.")
286 (license license:gpl2+)))
c49840f8
RJ
287
288(define-public lensfun
289 (package
290 (name "lensfun")
291 (version "0.3.2")
292 (source (origin
293 (method url-fetch)
294 (uri (string-append
295 "mirror://sourceforge/lensfun/"
296 version "/lensfun-" version ".tar.gz"))
297 (sha256
298 (base32
299 "0cfk8jjhs9nbfjfdy98plrj9ayi59aph0nx6ppslgjhlcvacm2xf"))))
300 (build-system cmake-build-system)
4dbef239
EF
301 (arguments
302 `(,@(if (any (cute string-prefix? <> (or (%current-system)
303 (%current-target-system)))
304 '("x86_64" "i686"))
305 ;; SSE and SSE2 are supported only on Intel processors.
306 '()
307 '(#:configure-flags '("-DBUILD_FOR_SSE=OFF" "-DBUILD_FOR_SSE2=OFF")))
308 #:tests? #f)) ; There are no tests to run.
c49840f8
RJ
309 (native-inputs
310 `(("pkg-config" ,pkg-config)))
311 (inputs
312 `(("glib" ,glib)))
313 (home-page "https://sourceforge.net/projects/lensfun/")
314 (synopsis "Library to correct optical lens defects with a lens database")
315 (description "Digital photographs are not ideal. Of course, the better is
316your camera, the better the results will be, but in any case if you look
317carefully at shots taken even by the most expensive cameras equipped with the
318most expensive lenses you will see various artifacts. It is very hard to make
319ideal cameras, because there are a lot of factors that affect the final image
320quality, and at some point camera and lens designers have to trade one factor
321for another to achieve the optimal image quality, within the given design
322restrictions and budget. But we all want ideal shots, don't we? So that's
323what's Lensfun is all about: rectifying the defects introduced by your
324photographic equipment.")
325 ;; The libraries are licensed under the LGPL3, the programs are
326 ;; licensed GPL3, and the database is license CC-BY-SA 3.0. See the
327 ;; README.md file for this clarification.
328 (license (list license:lgpl3 license:gpl3 license:cc-by-sa3.0))))
91a9c65c
RJ
329
330(define-public darktable
331 (package
332 (name "darktable")
71536279 333 (version "2.4.0")
91a9c65c
RJ
334 (source (origin
335 (method url-fetch)
336 (uri (string-append
337 "https://github.com/darktable-org/darktable/releases/"
338 "download/release-"
339 version "/darktable-" version ".tar.xz"))
340 (sha256
341 (base32
71536279 342 "0y0q7a7k09sbg05k5xl1lz8n2ak1v8yarfv222ksvmbrxs53hdwx"))))
91a9c65c
RJ
343 (build-system cmake-build-system)
344 (arguments
345 `(#:tests? #f ; There are no tests.
677bc34d 346 #:configure-flags '("-DBINARY_PACKAGE_BUILD=On")
91a9c65c
RJ
347 #:make-flags
348 (list
349 (string-append "CPATH=" (assoc-ref %build-inputs "ilmbase")
350 "/include/OpenEXR:" (or (getenv "CPATH") "")))
351 #:phases
352 (modify-phases %standard-phases
353 (add-before 'configure 'set-ldflags
354 (lambda* (#:key outputs #:allow-other-keys)
355 (setenv "LDFLAGS"
356 (string-append
357 "-Wl,-rpath="
358 (assoc-ref outputs "out") "/lib/darktable"))
359 #t)))))
360 (native-inputs
361 `(("llvm" ,llvm-3.9.1)
362 ("clang" ,clang-3.9.1)))
363 (inputs
364 `(("libxslt" ,libxslt)
365 ("libxml2" ,libxml2)
366 ("pugixml" ,pugixml)
367 ("gtk+" ,gtk+)
368 ("sqlite" ,sqlite)
369 ("libjpeg" ,libjpeg)
370 ("libpng" ,libpng)
371 ("cairo" ,cairo)
372 ("lcms" ,lcms)
373 ("exiv2" ,exiv2)
374 ("libtiff" ,libtiff)
375 ("curl" ,curl)
376 ("libgphoto2" ,libgphoto2)
377 ("dbus-glib" ,dbus-glib)
378 ("openexr" ,openexr)
379 ("ilmbase" ,ilmbase)
380 ("libsoup" ,libsoup)
381 ("python-jsonschema" ,python-jsonschema)
382 ("intltool" ,intltool)
383 ("perl" ,perl)
384 ("pkg-config" ,pkg-config)
385 ("libwebp" ,libwebp)
386 ("lensfun" ,lensfun)
387 ("librsvg" ,librsvg)
388 ("json-glib" ,json-glib)
389 ("freeimage" ,freeimage)))
390 (home-page "https://www.darktable.org")
391 (synopsis "Virtual lighttable and darkroom for photographers")
392 (description "Darktable is a photography workflow application and RAW
393developer. It manages your digital negatives in a database, lets you view
394them through a zoomable lighttable and enables you to develop raw images
395and enhance them.")
03b055a1
EF
396 ;; see src/is_supported_platform.h for supported platforms
397 (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
91a9c65c 398 (license license:gpl3+)))
1d093724
AE
399
400(define-public hugin
401 (package
402 (name "hugin")
403 (version "2016.2.0")
404 (source (origin
405 (method url-fetch)
406 (uri (string-append "mirror://sourceforge/hugin/hugin/hugin-"
407 (version-major+minor version)
408 "/hugin-" version ".tar.bz2"))
409 (sha256
410 (base32
411 "058zd63vx29yrx2pphbbll7kzcxkai22q26lpw13rn4lvp41pasl"))))
412 (build-system cmake-build-system)
413 (native-inputs
414 `(("gettext" ,gnu-gettext)
415 ("pkg-config" ,pkg-config)))
416 (inputs
417 `(("boost" ,boost)
418 ("enblend-enfuse" ,enblend-enfuse)
419 ("exiv2" ,exiv2)
420 ("fftw" ,fftw)
421 ("flann" ,flann)
422 ("freeglut" ,freeglut)
423 ("glew" ,glew)
424 ("lcms" ,lcms)
425 ("libjpeg" ,libjpeg)
426 ("libpano13" ,libpano13)
427 ("libpng" ,libpng)
428 ("libtiff" ,libtiff)
429 ("libxi" ,libxi)
430 ("libxmu" ,libxmu)
431 ("mesa" ,mesa)
432 ("openexr" ,openexr)
433 ("sqlite" ,sqlite)
434 ("vigra" ,vigra)
435 ("wxwidgets" ,wxwidgets)
436 ("zlib" ,zlib)))
437 (arguments
438 `(#:tests? #f ; no check target
439 #:configure-flags
440 (list
441 ;; The header files of ilmbase (propagated by openexr) are not found
442 ;; when included by the header files of openexr, and an explicit
443 ;; flag needs to be set.
444 (string-append "-DCMAKE_CXX_FLAGS=-I"
445 (assoc-ref %build-inputs "ilmbase")
446 "/include/OpenEXR")
447 ;; Disable installation of the Python scripting interface.
448 ;; It would require the additional inputs python and swig.
449 ;; Installation would need to be tweaked, as it tries to install
450 ;; into the python directory.
451 "-DBUILD_HSI=OFF")
452 #:phases
453 (modify-phases %standard-phases
454 (add-before 'configure 'substitute
455 (lambda _
456 (substitute* "src/hugin1/base_wx/StitchingExecutor.cpp"
457 (("wxT\\(\"enblend\"\\)")
458 (string-append "wxT(\"" (which "enblend") "\")"))
459 (("wxT\\(\"enfuse\"\\)")
460 (string-append "wxT(\"" (which "enfuse") "\")")))
461 #t)))))
462 (home-page "http://hugin.sourceforge.net/")
463 (synopsis "Panorama photo stitcher")
464 (description
465 "Hugin is an easy to use panoramic imaging toolchain with a graphical
466user interface. It can be used to assemble a mosaic of photographs into
467a complete panorama and stitch any series of overlapping pictures.")
468 (license license:gpl2+)))
469
13d9794d
LF
470(define-public rawtherapee
471 (package
472 (name "rawtherapee")
473 (version "5.3")
474 (source (origin
475 (method url-fetch)
476 (uri (string-append "http://rawtherapee.com/shared/source/"
477 "rawtherapee-" version ".tar.xz"))
478 (sha256
479 (base32
480 "1y1ygxqmqfp4zg8rcgrlfdc1597cyr5zqgp5zjpldhvwdfa9r5cp"))))
481 (build-system cmake-build-system)
482 (arguments
483 '(#:tests? #f ; no test suite
3def739d 484 #:build-type "release"
13d9794d
LF
485 #:configure-flags
486 (list (string-append "-DLENSFUNDBDIR="
487 (assoc-ref %build-inputs "lensfun")
488 "/share/lensfun")
13d9794d
LF
489 ; Don't optimize the build for the host machine. See the file
490 ; 'ProcessorTargets.cmake' in the source distribution for more
491 ; information.
492 "-DPROC_TARGET_NUMBER=1"
493 ; These flags are recommended by upstream for distributed packages.
494 ; See the file 'RELEASE_NOTES.txt' in the source distribution.
495 "-O3"
496 "-DCACHE_NAME_SUFFIX=\"\"")))
497 (native-inputs
498 `(("pkg-config" ,pkg-config)))
499 (inputs
500 `(("expat" ,expat)
501 ("fftw" ,fftwf)
502 ("glib" ,glib)
503 ("glibmm" ,glibmm)
504 ("gtk+" ,gtk+)
505 ("gtkmm" ,gtkmm)
506 ("lcms" ,lcms)
507 ("lensfun" ,lensfun)
508 ("libcanberra" ,libcanberra)
509 ("libiptcdata" ,libiptcdata)
510 ("libjpeg" ,libjpeg)
511 ("libpng" ,libpng)
512 ("libsigc++" ,libsigc++)
513 ("libtiff" ,libtiff)
514 ("zlib" ,zlib)))
515 (home-page "http://rawtherapee.com")
516 (synopsis "Raw image developing and processing")
517 (description "RawTherapee is a raw image processing suite. It comprises a
518subset of image editing operations specifically aimed at non-destructive raw
519photo post-production and is primarily focused on improving a photographer's
520workflow by facilitating the handling of large numbers of images. Most raw
521formats are supported, including Pentax Pixel Shift, Canon Dual-Pixel, and those
522from Foveon and X-Trans sensors.")
523 (license license:gpl3+)))