Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / gimp.scm
index 38343f2..70bc8db 100644 (file)
@@ -1,8 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +24,7 @@
 (define-module (gnu packages gimp)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
 (define-public babl
   (package
     (name "babl")
-    (version "0.1.46")
+    (version "0.1.66")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://download.gimp.org/pub/babl/"
                                         (version-major+minor version)
                                         "/babl-" version ".tar.bz2")
-                         (string-append "http://ftp.gtk.org/pub/babl/"
+                         (string-append "https://ftp.gtk.org/pub/babl/"
                                         (version-major+minor version)
                                         "/babl-" version ".tar.bz2")
                          (string-append "ftp://ftp.gtk.org/pub/babl/"
@@ -60,7 +63,7 @@
                                         "/babl-" version ".tar.bz2")))
               (sha256
                (base32
-                "0nwyhvfca6m35wjcccvwca7fcihzgdfyc012qi703y5d3cxl1hmv"))))
+                "0qx1dwbinxihwl2lmxi60qiqi402jlrdcnixx14kk6j88n9xi79n"))))
     (build-system gnu-build-system)
     (home-page "http://gegl.org/babl/")
     (synopsis "Image pixel format conversion library")
@@ -77,15 +80,15 @@ provided, as well as a framework to add new color models and data types.")
 (define-public gegl
   (package
     (name "gegl")
-    (version "0.4.0")
+    (version "0.4.16")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "https://download.gimp.org/pub/gegl/"
                                         (string-take version 3)
-                                        "/" name "-" version ".tar.bz2")))
+                                        "/gegl-" version ".tar.bz2")))
               (sha256
                (base32
-                "1ighk4z8nlqrzyj8w97s140hzj59564l3xv6fpzbr97m1zx2nkfh"))))
+                "0njydcr6qdmfzh4fxx544681qxdpf7y6b2f47jcypn810dlxy4h1"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("LDFLAGS=-lm")))
@@ -98,7 +101,7 @@ provided, as well as a framework to add new color models and data types.")
      `(("cairo" ,cairo)
        ("pango" ,pango)
        ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-8)))
+       ("libjpeg" ,libjpeg)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")             ; for gtester
@@ -115,27 +118,25 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.8.22")
+    (version "2.10.12")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.gimp.org/pub/gimp/v"
+              (uri (string-append "https://download.gimp.org/pub/gimp/v"
                                   (version-major+minor version)
                                   "/gimp-" version ".tar.bz2"))
-              (patches (search-patches "gimp-CVE-2017-17784.patch"
-                                       "gimp-CVE-2017-17785.patch"
-                                       "gimp-CVE-2017-17786.patch"
-                                       "gimp-CVE-2017-17787.patch"
-                                       "gimp-CVE-2017-17789.patch"))
               (sha256
                (base32
-                "12k3lp938qdc9cqj29scg55f3bb8iav2fysd29w0s49bqmfa71wi"))))
+                "0wdcr8d2ink4swn5r4v13bsiya6s3xm4ya97sdbhs4l40y7bb03x"))))
     (build-system gnu-build-system)
     (outputs '("out"
-               "doc"))                            ;5 MiB of gtk-doc HTML
+               "doc"))                            ; 9 MiB of gtk-doc HTML
     (arguments
-     '(#:configure-flags (list (string-append "--with-html-dir="
-                                              (assoc-ref %outputs "doc")
-                                              "/share/gtk-doc/html"))
+     '(#:configure-flags
+       (list (string-append "--with-html-dir="
+                            (assoc-ref %outputs "doc")
+                            "/share/gtk-doc/html")
+             ;; ./configure requests not to annoy upstream with packaging bugs.
+             "--with-bug-report-url=https://bugs.gnu.org/guix")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'install-sitecustomize.py
@@ -155,21 +156,27 @@ buffers.")
     (inputs
      `(("babl" ,babl)
        ("glib" ,glib)
+       ("glib-networking" ,glib-networking)
        ("libtiff" ,libtiff)
-       ("libjpeg" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("atk" ,atk)
+       ("gexiv2" ,gexiv2)
        ("gtk+" ,gtk+-2)
+       ("libmypaint" ,libmypaint)
+       ("mypaint-brushes" ,mypaint-brushes)
        ("exif" ,libexif)                ; optional, EXIF + XMP support
        ("lcms" ,lcms)                   ; optional, color management
        ("librsvg" ,librsvg)             ; optional, SVG support
        ("poppler" ,poppler)             ; optional, PDF support
+       ("poppler-data" ,poppler-data)
        ("python" ,python-2)             ; optional, Python support
        ("python2-pygtk" ,python2-pygtk) ; optional, Python support
        ("gegl" ,gegl)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("glib:bin" ,glib "bin") ; for glib-compile-resources and gdbus-codegen
+       ("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
-    (home-page "http://gimp.org")
+    (home-page "https://www.gimp.org")
     (synopsis "GNU Image Manipulation Program")
     (description
      "GIMP is an application for image manipulation tasks such as photo
@@ -194,7 +201,18 @@ that is extensible via a plugin system.")
      `(#:tests? #f ;no tests
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
+         ;; FIXME: The gegl package only installs "gegl-0.4.pc", but
+         ;; "gimp-2.0.pc" requires "gegl-0.3.pc", so we just copy it.
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "tmppkgconfig")
+             (copy-file (string-append (assoc-ref inputs "gegl")
+                                       "/lib/pkgconfig/gegl-0.4.pc")
+                        "tmppkgconfig/gegl-0.3.pc")
+             (setenv "PKG_CONFIG_PATH"
+                     (string-append "tmppkgconfig:"
+                                    (or (getenv "PKG_CONFIG_PATH") "")))
+             #t))
          (add-after 'unpack 'set-prefix
            (lambda* (#:key outputs #:allow-other-keys)
              ;; gimptool-2.0 does not allow us to install to any target
@@ -213,6 +231,7 @@ that is extensible via a plugin system.")
        ("gimp" ,gimp)
        ;; needed by gimp-2.0.pc
        ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gegl" ,gegl)
        ("cairo" ,cairo)
        ("glib" ,glib)
        ;; needed by gimpui-2.0.pc
@@ -261,19 +280,24 @@ brushstrokes which is used by MyPaint and GIMP.")
     (name "mypaint-brushes")
     (version "1.3.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/Jehan/mypaint-brushes/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Jehan/mypaint-brushes.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "055j2rgkav2024zl6y5hxb2ra0vbx58607d6sz7ml2351r1bcjvh"))))
+                "1iz89z6v2mp8j1lrf942k561s8311i3s34ap36wh4rybb2lq15m0"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda _ (invoke "sh" "./autogen.sh"))))))
+         (add-after 'unpack 'relax-dependency-version
+           (lambda _
+             (substitute* "autogen.sh"
+               (("automake-1.13") "automake")
+               (("aclocal-1.13") "aclocal"))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
@@ -282,3 +306,67 @@ brushstrokes which is used by MyPaint and GIMP.")
 MyPaint.")
     (home-page "https://github.com/Jehan/mypaint-brushes")
     (license license:cc0)))
+
+(define-public gimp-resynthesizer
+  ;; GIMP does not respect any plugin search path environment variable, so after
+  ;; installation users have to edit their GIMP settings to include
+  ;; "$HOME/.guix-profile/lib/gimp/2.0/plug-ins/" in
+  ;; “Edit->Preferences->Folders->Plug Ins”.
+  (package
+    (name "gimp-resynthesizer")
+    (version "2.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/bootchk/resynthesizer/archive/v"
+                          version ".tar.gz"))
+       (sha256
+        (base32
+         "0l3404w6rqny7h3djskxf149gzx6x4qhndgbh3403c9lbh4pi1kr"))
+       (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (arguments
+     `( ;; Turn off tests to avoid:
+       ;; make[1]: *** No rule to make target '../src/resynth-gui.c', needed by 'resynthesizer.pot'.  Stop.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+        (add-after 'unpack 'set-env
+          (lambda _
+            (setenv "CONFIG_SHELL" (which "sh"))
+            #t))
+        (add-after 'configure 'set-prefix
+           ;; Install plugin under $prefix, not under GIMP's libdir.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out")
+                                          "/lib/gimp/"
+                                          ,(version-major
+                                            (package-version gimp))
+                                          ".0")))
+               (substitute* (list "src/resynthesizer/Makefile"
+                                 "src/resynthesizer-gui/Makefile")
+                (("GIMP_LIBDIR = .*")
+                  (string-append "GIMP_LIBDIR = " target "\n")))
+               (mkdir-p target)
+               #t))))))
+    (native-inputs
+     `(("autoconf" ,autoconf-wrapper)
+       ("automake" ,automake)
+       ("glib" ,glib "bin")                       ; glib-gettextize
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gimp" ,gimp)
+       ("gdk-pixbuf" ,gdk-pixbuf)                 ; needed by gimp-2.0.pc
+       ("cairo" ,cairo)
+       ("gegl" ,gegl)
+       ("gtk+" ,gtk+-2)                           ; needed by gimpui-2.0.pc
+       ("glib" ,glib)))
+    (home-page "https://github.com/bootchk/resynthesizer")
+    (synopsis "GIMP plugins for texture synthesis")
+    (description
+     "This package provides resynthesizer plugins for GIMP, which encompasses
+tools for healing selections (content-aware fill), enlarging the canvas and
+healing the border, increasing the resolution while adding detail, and
+transferring the style of an image.")
+    (license license:gpl3+)))