summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/emacs-xyz.scm144
-rw-r--r--gnu/packages/patches/emacs-magit-log-format-author-margin.patch72
3 files changed, 63 insertions, 154 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 6be47b9a9a..80cefe5b63 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -887,7 +887,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
   %D%/packages/patches/emacs-libgit-use-system-libgit2.patch    \
-  %D%/packages/patches/emacs-magit-log-format-author-margin.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
   %D%/packages/patches/emacs-telega-test-env.patch		\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e6cbd44453..cb699c0197 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -395,12 +395,11 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
       (license license:gpl3+))))
 
 (define-public emacs-magit
-  ;; `magit-setup-buffer' macro introduced in c761d28d and required in
-  ;; `emacs-forge'.
-  (let ((commit "c761d28d49e5238037512b898db0ec9b40d85770"))
+  ;; There hasn't been an official release since 2018-11-16.
+  (let ((commit "d05545ec2fd7edf915eaf1b9c15c785bb08975cc"))
     (package
       (name "emacs-magit")
-      (version (git-version "2.90.1" "3" commit))
+      (version (git-version "2.90.1" "4" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -409,93 +408,76 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "16qx0404l05q1m6w7y5j8ck1z5nfmpinm00w0p2yh1hn5zzwy6dd"))
-                ;; FIXME: emacs-forge uses a function defined in this patch,
-                ;; which is newer than the current commit.
-                (patches
-                 (search-patches
-                  "emacs-magit-log-format-author-margin.patch"))
-                (modules '((guix build utils)))
-                (snippet
-                 '(begin
-                    ;; Fix syntax error
-                    (substitute* "lisp/magit-extras.el"
-                      (("rev\\)\\)\\)\\)\\)\\)") "rev)))))"))
-                    #t))))
-      (build-system gnu-build-system)
-      (native-inputs `(("texinfo" ,texinfo)
-                       ("emacs" ,emacs-minimal)))
-      (inputs
-       `(("git" ,git)
-         ("perl" ,perl)))
-      (propagated-inputs
-       `(("dash" ,emacs-dash)
-         ("with-editor" ,emacs-with-editor)
-         ("transient" ,emacs-transient)))
+                  "11aqyy4r9hrdi9nlypd70hn8384b6q89c7xavgv8c5q7f2g5z9qg"))))
+      (build-system emacs-build-system)
       (arguments
-       `(#:modules ((guix build gnu-build-system)
-                    (guix build utils)
-                    (guix build emacs-utils))
-         #:imported-modules (,@%gnu-build-system-modules
-                             (guix build emacs-utils))
-         #:test-target "test"
-         #:tests? #f                   ; tests are not included in the release
-         #:make-flags
-         (list (string-append "PREFIX=" %output)
-               ;; Don't put .el files in a sub-directory.
-               (string-append "lispdir=" %output "/share/emacs/site-lisp"))
+       `(#:emacs ,emacs-no-x            ;module support is required
+         #:tests? #t
+         #:test-command '("make" "test")
          #:phases
          (modify-phases %standard-phases
-           (add-after 'unpack 'patch
+           (add-after 'unpack 'build-info-manual
              (lambda _
-               (chmod "lisp/magit-extras.el" #o644)
-               (emacs-batch-edit-file "lisp/magit-extras.el"
-                 `(progn (progn
-                          (goto-char (point-min))
-                          (re-search-forward "(defun magit-copy-buffer-revision ()")
-                          (forward-sexp 2)
-                          (kill-sexp)
-                          (insert ,(format #f "~S"
-                                           '(if (use-region-p)
-                                                (copy-region-as-kill nil nil 'region)
-                                                (when-let ((rev (cl-case major-mode
-                                                                         ((magit-cherry-mode
-                                                                           magit-log-select-mode
-                                                                           magit-reflog-mode
-                                                                           magit-refs-mode
-                                                                           magit-revision-mode
-                                                                           magit-stash-mode
-                                                                           magit-stashes-mode)
-                                                                          (car magit-refresh-args))
-                                                                         ((magit-diff-mode magit-log-mode)
-                                                                          (let ((r (caar magit-refresh-args)))
-                                                                            (if (string-match "\\.\\.\\.?\\(.+\\)" r)
-                                                                                (match-string 1 r)
-                                                                                r)))
-                                                                         (magit-status-mode "HEAD"))))
-                                                          (when (magit-commit-p rev)
-                                                            (setq rev (magit-rev-parse rev))
-                                                            (push (list rev default-directory) magit-revision-stack)
-                                                            (kill-new (message "%s" rev))))))))
-                         (basic-save-buffer)))
+               (invoke "make" "info")
+               ;; Copy info files to the lisp directory, which acts as
+               ;; the root of the project for the emacs-build-system.
+               (for-each (lambda (f)
+                           (install-file f "lisp"))
+                         (find-files "Documentation" "\\.info$"))
+               (chdir "lisp")
                #t))
-           (delete 'configure)
-           (add-before
-               'build 'patch-exec-paths
+           (add-after 'build-info-manual 'set-magit-version
+             (lambda _
+               (make-file-writable "magit.el")
+               (emacs-substitute-variables "magit.el"
+                 ("magit-version" ,version))
+               #t))
+           (add-after 'set-magit-version 'patch-exec-paths
              (lambda* (#:key inputs #:allow-other-keys)
                (let ((perl (assoc-ref inputs "perl")))
-                 (make-file-writable "lisp/magit-sequence.el")
-                 (emacs-substitute-variables "lisp/magit-sequence.el"
+                 (make-file-writable "magit-sequence.el")
+                 (emacs-substitute-variables "magit-sequence.el"
                    ("magit-perl-executable" (string-append perl "/bin/perl")))
-                 #t))))))
+                 #t)))
+           (add-before 'check 'configure-git
+             (lambda _
+               ;; Otherwise some tests fail with error "unable to auto-detect
+               ;; email address".
+               (setenv "HOME" (getcwd))
+               (invoke "git" "config" "--global" "user.name" "toto")
+               (invoke "git" "config" "--global" "user.email"
+                       "toto@toto.com")))
+           (add-after 'configure-git 'disable-tramp-test
+             (lambda _
+               ;; There is an issue causing TRAMP to fail in the build
+               ;; environment.  Setting the tramp-remote-shell parameter of
+               ;; the sudo-method to the file name of the shell didn't help.
+               (chdir "..")
+               (substitute* "t/magit-tests.el"
+                 (("^\\(ert-deftest magit-toplevel:tramp.*" all)
+                  (string-append all "  (skip-unless nil)")))
+               #t))
+           (add-before 'install 'enter-lisp-directory
+             (lambda _
+               (chdir "lisp")
+               #t)))))
+      (native-inputs
+       `(("texinfo" ,texinfo)))
+      (inputs
+       `(("git" ,git)
+         ("perl" ,perl)))
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-libgit" ,emacs-libgit)
+         ("emacs-transient" ,emacs-transient)
+         ("emacs-with-editor" ,emacs-with-editor)))
       (home-page "https://magit.vc/")
       (synopsis "Emacs interface for the Git version control system")
-      (description
-       "With Magit, you can inspect and modify your Git repositories with Emacs.
-You can review and commit the changes you have made to the tracked files, for
-example, and you can browse the history of past changes.  There is support for
-cherry picking, reverting, merging, rebasing, and other common Git
-operations.")
+      (description "With Magit, you can inspect and modify your Git
+repositories with Emacs.  You can review and commit the changes you have made
+to the tracked files, for example, and you can browse the history of past
+changes.  There is support for cherry picking, reverting, merging, rebasing,
+and other common Git operations.")
       (license license:gpl3+))))
 
 (define-public emacs-magit-svn
diff --git a/gnu/packages/patches/emacs-magit-log-format-author-margin.patch b/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
deleted file mode 100644
index fc52157a32..0000000000
--- a/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 94914ca4690c0cff12d600a0c8ba6bfb3fb38dc5 Mon Sep 17 00:00:00 2001
-From: Jonas Bernoulli <jonas@bernoul.li>
-Date: Tue, 25 Jun 2019 21:44:32 +0200
-Subject: [PATCH] magit-log-format-author-margin: New function
-
-Split it from `magit-log-format-margin'.
----
- lisp/magit-log.el | 48 +++++++++++++++++++++++++----------------------
- 1 file changed, 26 insertions(+), 22 deletions(-)
-
-diff --git a/lisp/magit-log.el b/lisp/magit-log.el
-index c8e6ef63..c0a79b19 100644
---- a/lisp/magit-log.el
-+++ b/lisp/magit-log.el
-@@ -1374,28 +1374,32 @@ The shortstat style is experimental and rather slow."
-   (when-let ((option (magit-margin-option)))
-     (if magit-log-margin-show-shortstat
-         (magit-log-format-shortstat-margin rev)
--      (pcase-let ((`(,_ ,style ,width ,details ,details-width)
--                   (or magit-buffer-margin
--                       (symbol-value option))))
--        (magit-make-margin-overlay
--         (concat (and details
--                      (concat (propertize (truncate-string-to-width
--                                           (or author "")
--                                           details-width
--                                           nil ?\s (make-string 1 magit-ellipsis))
--                                          'face 'magit-log-author)
--                              " "))
--                 (propertize
--                  (if (stringp style)
--                      (format-time-string
--                       style
--                       (seconds-to-time (string-to-number date)))
--                    (pcase-let* ((abbr (eq style 'age-abbreviated))
--                                 (`(,cnt ,unit) (magit--age date abbr)))
--                      (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
--                                      (- width (if details (1+ details-width) 0)))
--                              cnt unit)))
--                  'face 'magit-log-date)))))))
-+      (magit-log-format-author-margin author date))))
-+
-+(defun magit-log-format-author-margin (author date &optional previous-line)
-+  (pcase-let ((`(,_ ,style ,width ,details ,details-width)
-+               (or magit-buffer-margin
-+                   (symbol-value option))))
-+    (magit-make-margin-overlay
-+     (concat (and details
-+                  (concat (propertize (truncate-string-to-width
-+                                       (or author "")
-+                                       details-width
-+                                       nil ?\s (make-string 1 magit-ellipsis))
-+                                      'face 'magit-log-author)
-+                          " "))
-+             (propertize
-+              (if (stringp style)
-+                  (format-time-string
-+                   style
-+                   (seconds-to-time (string-to-number date)))
-+                (pcase-let* ((abbr (eq style 'age-abbreviated))
-+                             (`(,cnt ,unit) (magit--age date abbr)))
-+                  (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
-+                                  (- width (if details (1+ details-width) 0)))
-+                          cnt unit)))
-+              'face 'magit-log-date))
-+     previous-line)))
- 
- (defun magit-log-format-shortstat-margin (rev)
-   (magit-make-margin-overlay
--- 
-2.23.0
-