Subject: [PATCH 1/2] gnu: mcomix: Update to 2.0.1.

From: Liliana Marie Prikler <[email-masked]>
Date: Fri, 25 Mar 2022 21:37:01 +0100

* gnu/packages/image-viewers.scm (mcomix): Update to 2.0.1.
[source]: Use sourceforge once again.
[inputs]: Add ‘python’.
[arguments]: Convert to a list of G-Expressions.
<#:tests?>: Drop.
<#:phases>: Rename ‘configure’ to ‘patch-sources’.  Also fix an assertion
error in "mcomix/image_tools.py".
No longer replace ‘build’ or ‘install’.  Add ‘install-data’ phase after
‘install’.  Use (this-package-input) to refer to the python input.
---
 gnu/packages/image-viewers.scm | 123 +++++++++++----------------------
 1 file changed, 42 insertions(+), 81 deletions(-)

diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 6ab6cf3307..1c325cd8a7 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -662,91 +662,52 @@ (define-public luminance-hdr
 
 ;; 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))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((p7zip (assoc-ref inputs "p7zip")))
+                ;; insert absolute path to 7z executable
+                (substitute* "mcomix/archive/sevenzip_external.py"
+                  (("_7z_executable = -1")
+                   (string-append "_7z_executable = u'" p7zip "/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)
+             (copy-recursively
+              "mcomix/images"
+              (string-append (assoc-ref outputs "out")
+                             "/lib/python"
+                             #$(version-major+minor
+                                (package-version (this-package-input "python")))
+                             "/site-packages/mcomix/images")))))))
+    (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
-- 
2.34.0