summary refs log tree commit diff
path: root/gnu/packages/image-viewers.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/image-viewers.scm')
-rw-r--r--gnu/packages/image-viewers.scm289
1 files changed, 87 insertions, 202 deletions
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 6ab6cf3307..1db169535e 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2021 dissent <disseminatedissent@protonmail.com>
+;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -97,7 +98,7 @@
 (define-public ytfzf
   (package
     (name "ytfzf")
-    (version "1.2.0")
+    (version "2.3")
     (home-page "https://github.com/pystardust/ytfzf")
     (source
      (origin
@@ -108,128 +109,32 @@
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00d416qb4109pm77ikhnmds8qng90ni2jan9kdnxz7b6sh5f61nz"))
-       (patches
-        (search-patches
-         ;; Pre-requisite for 'patch-script' phase.
-         "ytfzf-programs.patch"
-         ;; Disables self-update.
-         "ytfzf-updates.patch"))))
+        (base32 "01prcg6gfwy1r49v92pkzxay9iadqqhpaxvn8jmij2jm5l50iynd"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ;no test suite
-       #:modules
-       ((guix build gnu-build-system)
-        (guix build utils)
-        (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-script
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bash (assoc-ref inputs "bash"))
-                    (catimg (assoc-ref inputs "catimg"))
-                    (chafa (assoc-ref inputs "chafa"))
-                    (coreutils (assoc-ref inputs "coreutils"))
-                    (curl (assoc-ref inputs "curl"))
-                    (dmenu (assoc-ref inputs "dmenu"))
-                    (fzf (assoc-ref inputs "fzf"))
-                    (gawk (assoc-ref inputs "gawk"))
-                    (grep (assoc-ref inputs "grep"))
-                    (jp2a (assoc-ref inputs "jp2a"))
-                    (jq (assoc-ref inputs "jq"))
-                    (libnotify (assoc-ref inputs "libnotify"))
-                    (mpv (assoc-ref inputs "mpv"))
-                    (ncurses (assoc-ref inputs "ncurses"))
-                    (python-ueberzug (assoc-ref inputs "python-ueberzug"))
-                    (sed (assoc-ref inputs "sed"))
-                    (util-linux (assoc-ref inputs "util-linux"))
-                    (youtube-dl (assoc-ref inputs "youtube-dl")))
-               ;; Use correct $PREFIX path.
-               (substitute* "Makefile"
-                 (("/usr/bin")
-                  (string-append out "/bin")))
-               ;; Use absolute path for referenced programs.
-               (substitute* "ytfzf"
-                 (("@awk@")
-                  (string-append gawk "/bin/awk"))
-                 (("@cat@")
-                  (string-append coreutils "/bin/cat"))
-                 (("@catimg@")
-                  (string-append catimg "/bin/catimg"))
-                 (("@chafa@")
-                  (string-append chafa "/bin/chafa"))
-                 (("@chmod@")
-                  (string-append coreutils "/bin/chmod"))
-                 (("@column@")
-                  (string-append util-linux "/bin/column"))
-                 (("@cp@")
-                  (string-append coreutils "/bin/cp"))
-                 (("@cut@")
-                  (string-append coreutils "/bin/cut"))
-                 (("@curl@")
-                  (string-append curl "/bin/curl"))
-                 (("@date@")
-                  (string-append coreutils "/bin/date"))
-                 (("@dmenu@")
-                  (string-append dmenu "/bin/dmenu"))
-                 (("@fzf@")
-                  (string-append fzf "/bin/fzf"))
-                 (("@grep@")
-                  (string-append grep "/bin/grep"))
-                 (("@head@")
-                  (string-append coreutils "/bin/head"))
-                 (("@jp2a@")
-                  (string-append jp2a "/bin/jp2a"))
-                 (("@jq@")
-                  (string-append jq "/bin/jq"))
-                 (("@mkdir@")
-                  (string-append coreutils "/bin/mkdir"))
-                 (("@mkfifo@")
-                  (string-append coreutils "/bin/mkfifo"))
-                 (("@mpv@")
-                  (string-append mpv "/bin/mpv"))
-                 (("@nohup@")
-                  (string-append coreutils "/bin/nohup"))
-                 (("@notify-send@")
-                  (string-append libnotify "/bin/notify-send"))
-                 (("@rm@")
-                  (string-append coreutils "/bin/rm"))
-                 (("@sed@")
-                  (string-append sed "/bin/sed"))
-                 (("@seq@")
-                  (string-append coreutils "/bin/seq"))
-                 (("@setsid@")
-                  (string-append util-linux "/bin/setsid"))
-                 (("@sh@")
-                  (string-append bash "/bin/sh"))
-                 (("@sleep@")
-                  (string-append coreutils "/bin/sleep"))
-                 (("@sort@")
-                  (string-append coreutils "/bin/sort"))
-                 (("@tput@")
-                  (string-append ncurses "/bin/tput"))
-                 (("@tr@")
-                  (string-append coreutils "/bin/tr"))
-                 (("@ueberzug@")
-                  (string-append python-ueberzug "/bin/ueberzug"))
-                 (("@uname@")
-                  (string-append coreutils "/bin/uname"))
-                 (("@uniq@")
-                  (string-append coreutils "/bin/uniq"))
-                 (("@wc@")
-                  (string-append coreutils "/bin/wc"))
-                 (("@youtube-dl@")
-                  (string-append youtube-dl "/bin/youtube-dl"))))
-             (substitute* "ytfzf"
-               ;; Generate temporary files in the user-specific path,
-               ;; to avoid issues in multi-user systems.
-               (("/tmp/ytfzf")
-                "$HOME/.cache/ytfzf")
-               ;; Report errors to Guix.
-               (("report at: https://github.com/pystardust/ytfzf")
-                "report at: https://issues.guix.gnu.org"))))
-         (delete 'configure))))         ;no configure script
+     (list
+      #:tests? #f                       ;no test suite
+      #:make-flags
+      #~(list (string-append "PREFIX=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-after 'install 'install-addons
+            (lambda _
+              (invoke "make" "addons"
+                      (string-append "PREFIX=" #$output))))
+          (add-after 'install 'wrap-program
+            (lambda* (#:key inputs #:allow-other-keys)
+              (wrap-program (string-append #$output "/bin/ytfzf")
+                `("PATH" ":" prefix
+                  ,(map (lambda (input)
+                          (string-append (assoc-ref inputs input) "/bin"))
+                        '("bash" "catimg" "chafa" "coreutils" "curl"
+                          "dmenu" "fzf" "gawk" "grep" "jp2a" "jq"
+                          "libnotify" "mpv" "ncurses" "python-ueberzug"
+                          "sed" "util-linux" "youtube-dl")))
+                `("YTFZF_SYSTEM_ADDON_DIR" ":" =
+                  ,(list (string-append #$output "/share/ytfzf/addons")))))))))
     (inputs
      (list bash
            catimg
@@ -662,91 +567,71 @@ imaging.  It supports several HDR and LDR image formats, and it can:
 
 ;; CBR and RAR are currently unsupported, due to non-free dependencies.
 (define-public mcomix
-  ;; Official mcomix hasn't been updated since 2016, it's broken with
-  ;; python-pillow 6+ and only supports Python 2.  We use fork instead.
-  (let ((commit "fea55a7a9369569eefed72209eed830409c4af98"))
-    (package
-      (name "mcomix")
-      (version (git-version "1.2.1" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/multiSnow/mcomix3")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "05zl0dkjwbdcm2zlk4nz9w33amlqj8pbf32a8ymshc2356fqhhi5"))))
-      (build-system python-build-system)
-      (inputs
-       (list p7zip python-pillow python-pygobject python-pycairo))
-      (arguments
-       `(#:tests? #f                    ; FIXME: How do we run tests?
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'configure
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((p7zip (assoc-ref inputs "p7zip")))
-                 ;; insert absolute path to 7z executable
-                 (substitute* "mcomix/mcomix/archive/sevenzip_external.py"
-                   (("_7z_executable = -1")
-                    (string-append "_7z_executable = u'" p7zip "/bin/7z'"))))
-               #t))
-           (replace 'build
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (pyver ,(version-major+minor (package-version python)))
-                      (lib (string-append out "/lib/python" pyver)))
-                 (invoke (which "python") "installer.py" "--srcdir=mcomix"
-                         (string-append "--target=" lib))
-                 (rename-file (string-append lib "/mcomix")
-                              (string-append lib "/site-packages"))
-                 #t)))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (share (string-append out "/share"))
-                      (bin (string-append out "/bin"))
-                      (pyver ,(version-major+minor (package-version python)))
-                      (lib (string-append out "/lib/python" pyver "/site-packages")))
-                 (mkdir-p bin)
-                 (rename-file (string-append lib "/mcomixstarter.py")
-                              (string-append bin "/mcomix"))
-                 (rename-file (string-append lib "/comicthumb.py")
-                              (string-append bin "/comicthumb"))
-                 (install-file "mime/mcomix.desktop"
-                               (string-append share "/applications"))
-                 (install-file "mime/mcomix.appdata.xml"
-                               (string-append share "/metainfo"))
-                 (install-file "mime/mcomix.xml"
-                               (string-append share "/mime/packages"))
-                 (install-file "mime/comicthumb.thumbnailer"
-                               (string-append share "/thumbnailers"))
-                 (install-file "man/mcomix.1" (string-append share "/man/man1"))
-                 (install-file "man/comicthumb.1" (string-append share "/man/man1"))
-                 (for-each
-                  (lambda (size)
-                    (install-file
-                     (format #f "mcomix/mcomix/images/~sx~s/mcomix.png" size size)
-                     (format #f "~a/icons/hicolor/~sx~s/apps/" share size size))
-                    (for-each
-                     (lambda (ext)
-                       (install-file
-                        (format #f "mime/icons/~sx~s/application-x-~a.png" size size ext)
-                        (format #f "~a/icons/hicolor/~sx~s/mimetypes/"
-                                share size size)))
-                     '("cb7" "cbr" "cbt" "cbz")))
-                  '(16 22 24 32 48))
-                 #t))))))
-      (home-page "https://sourceforge.net/p/mcomix/wiki/Home/")
-      (synopsis "Image viewer for comics")
-      (description "MComix is a customizable image viewer that specializes as
+  (package
+    (name "mcomix")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/mcomix/MComix-" version "/"
+                           "mcomix-" version ".tar.gz"))
+       (sha256
+        (base32
+         "187ca815vxb2in1ryvfiaf1zapi0bc9jxdac3c1bky0kr6x7xyap"))))
+    (build-system python-build-system)
+    (inputs
+     (list p7zip python python-pillow python-pygobject python-pycairo gtk+))
+    (arguments
+     (list
+      #:imported-modules `(,@%python-build-system-modules
+                           (guix build glib-or-gtk-build-system))
+      #:modules '((guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "mcomix/archive/sevenzip_external.py"
+                ;; Ensure that 7z is found by hardcoding its absolute path.
+                (("_7z_executable = -1")
+                 (format #f "_7z_executable = ~s"
+                         (search-input-file inputs "/bin/7z"))))
+              (substitute* "mcomix/image_tools.py"
+                (("assert name not in supported_formats_gdk")
+                 "if name in supported_formats_gdk: continue"))))
+         (add-after 'install 'install-data
+           (lambda* (#:key outputs #:allow-other-keys)
+             (with-directory-excursion "mcomix"
+               (for-each
+                (lambda (subdir)
+                  (copy-recursively
+                   subdir
+                   (string-append
+                    (assoc-ref outputs "out")
+                    "/lib/python"
+                    #$(version-major+minor
+                       (package-version (this-package-input "python")))
+                    "/site-packages/mcomix/" subdir)))
+                '("images" "messages")))))
+         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+         (add-after 'wrap 'gi-wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (for-each
+                (lambda (prog)
+                  (wrap-program prog
+                    `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))
+                (list (string-append bin "/mcomix")))))))))
+    (home-page "https://sourceforge.net/p/mcomix/wiki/Home/")
+    (synopsis "Image viewer for comics")
+    (description "MComix is a customizable image viewer that specializes as
 a comic and manga reader.  It supports a variety of container formats
 including CBZ, CB7, CBT, LHA.
 
 For PDF support, install the @emph{mupdf} package.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public qview
   (package