gnu: libdvdcss: Update to 1.4.3.
[jackhill/guix/guix.git] / gnu / packages / mc.scm
index 6e3747c..7369dcf 100644 (file)
@@ -1,5 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages check)
-  #:use-module (gnu packages perl))
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages compression))
 
 (define-public mc
   (package
     (name "mc")
-    (version "4.8.11")
+    (version "4.8.26")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://ftp.midnight-commander.org/mc-"
+      (uri (string-append "https://ftp.midnight-commander.org/mc-"
                           version ".tar.xz"))
       (sha256
-       (base32
-        "0flrw5pq2mg2d39bh6dllndhpcfppjza6g70p4ry2wcx9y2flxqq"))
-      (patches (list (search-patch "mc-fix-ncurses-build.patch")))))
+       (base32 "09vc2vf6k12a8k5gdss6hcskwfcbyalrkhn65nidkwlm0p2svpn6"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("perl" ,perl)))
               ("ncurses" ,ncurses)
               ("libssh2" ,libssh2)
               ("glib" ,glib)
-              ("check" ,check)))
+              ("check" ,check)
+              ("unzip" ,unzip)))
     (arguments
      `(#:configure-flags
-       '("--with-screen=ncurses" "--enable-aspell")))
-    (home-page "http://www.midnight-commander.org")
+       '("--with-screen=ncurses" "--enable-aspell")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-FHS-file-names
+           (lambda _
+             ;; Patch files to refer to executables in the store or $PATH.
+             (substitute* "misc/mcedit.menu.in"
+               (("#! /bin/sh") (string-append "#!" (which "sh")))
+               (("/bin/bash") (which "bash")))
+             (substitute* "misc/ext.d/misc.sh.in"
+               (("/bin/cat") "cat"))
+             (substitute* (list "lib/utilunix.c"
+                                "src/usermenu.c"
+                                "src/vfs/fish/fish.c"
+                                "tests/src/vfs/extfs/helpers-list/Makefile.in")
+               (("/bin/sh") (which "sh")))
+             (substitute* "src/filemanager/ext.c"
+               (("/bin/rm") "rm")
+               (("/bin/sh") (which "sh")))
+
+             ;; There are other /bin/<shell>s hard-coded in this file, but they
+             ;; are never tried after bash (mc's first choice) is found.
+             (substitute* "lib/shell.c"
+               (("/bin/bash") (which "bash")))
+             #t))
+         (add-before 'check 'fix-tests
+           (lambda _
+             ;; Don't expect a UID or GID of ‘0’ in the build environment.
+             (with-directory-excursion "tests/src/vfs/extfs/helpers-list/data"
+               (substitute* (list "rpm.custom.output"
+                                  "rpm.glib.output")
+                 (("      0        0") "<<uid>>  <<gid>>")))
+             ;; XXX ERROR:mc_realpath.c:99:realpath_test: assertion failed
+             ;; (resolved_path == data->expected_string): ("" == "/usr/bin")
+             (substitute* "tests/lib/mc_realpath.c"
+               (("/usr/bin") "/")
+               (("usr/bin") "/"))
+             #t)))))
+    (home-page "https://www.midnight-commander.org")
     (synopsis "Graphical file manager")
     (description
      "GNU Midnight Commander is a command-line file manager laid out in a
@@ -63,4 +103,4 @@ copying and moving, Midnight Commander also supports viewing the contents of
 RPM package files and other archives and managing files on other computers via
 FTP or FISH.  It also includes a powerful text editor for opening text
 files.")
-    (license gpl2)))
+    (license gpl3+)))