Subject: [bug#65717] [PATCH] gnu: Add emacs-latex-extra.

From: Sergiu Ivanov <[email-masked]>
Date: Mon, 04 Sep 2023 22:16:27 +0200

Hello Nicolas,

Thank you very much for your feedback.

Nicolas Goaziou <[email-masked]> [2023-09-03T21:44:49+0200]:
> Hello,
>
> Sergiu Ivanov <[email-masked]> writes:
>
>> Subject: [PATCH] gnu: Add emacs-latex-extra.
>
> Thank you.
>
> Some comments follow.
>
>> +      (build-system emacs-build-system)
>> +      (arguments
>> +       `(#:phases (modify-phases %standard-phases
>> +                    (add-before 'build 'set-home
>> +                      (lambda _
>> +                        (setenv "HOME"
>> +                                (getcwd)))))))
>
> Why is it needed ?

If I don't explicitly set $HOME, the build fails with

Debugger entered--Lisp error: (file-missing "Setting current directory" "No such file or directory" "/homeless-shelter/")
  call-process("sh" nil t nil "-c" "evince --help")
  call-process-shell-command("evince --help" nil t)
  shell-command("evince --help" t)
  shell-command-to-string("evince --help")
  TeX-view-program-select-evince("gnome" "evince")
  ...

> Also, upstream provides tests. Could you run them?

I tried adding the following to the arguments list:

#:tests? #t
#:test-command '("make" "test")

and the build now fails with this error:

starting phase `check'
echo "hi " /tmp/guix-build-emacs-latex-extra-1.14-0.a81e758.drv-0/source && \
emacs -Q --batch -L "auctex-11.87.7/" -L "tests/auctex-11.87.7/" -l "auctex-autoloads.el"   -L . -L .. -L tests/ --eval \
    "(progn                                \
      (unless (fboundp 'function-put) (defalias 'function-put #'(lambda (f prop value) (put f prop value)))) \
      (defun define-error (name message &optional parent) (unless parent (setq parent 'error)) (let ((conditions (if (consp parent) (apply #'nconc (mapcar (lambda (parent) (cons parent (or (get parent 'error-conditions) (error \"Unknown signal %s\" parent)))) parent)) (cons parent (get parent 'error-conditions))))) (put name 'error-conditions (delete-dups (copy-sequence (cons name conditions)))) (when message (put name 'error-message message)))) \
      (setq byte-compile-error-on-warn t)  \
      (batch-byte-compile))" *.el
hi  /tmp/guix-build-emacs-latex-extra-1.14-0.a81e758.drv-0/source
Eager macro-expansion failure: (error "Package cl is deprecated")
Eager macro-expansion failure: (error "Package cl is deprecated")

In toplevel form:
latex-extra.el:130:1: Error: Package cl is deprecated
make: *** [Makefile:25: build] Error 1
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("test" "-j" "8") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `check' failed after 0.1 seconds

I hunted around emacs-xyz.scm and tried using ert-runner, which
complained that the tests are in the wrong directory, since it expects
apparently the tests to be under test/ and not tests/, as in the case of
latex-extra.  Still, by looking at how the test target is defined in the
Makefile of latex-extra, I think that this is not the problem.  On the
other hand, I don't believe that package cl being deprecated is the
problem either, since that is normally a warning and not an error.

Do you have any ideas as to how to debug this kind of issues?

FWIW, I am already using the draft version of this package out of my
private channel, and it works nicely, so this problem seems to be
specific for the tests.

>> +      (inputs (list emacs-auctex))
>
> Usually, inputs are propagated, although it doesn't make a difference
> for Emacs.

I changed this to propagated-inputs.

>> +      (home-page "https://github.com/Malabarba/latex-extra")
>> +      (synopsis "Usability improvements for latex-mode")
>
> Nitpick: "latex-mode" -> "LaTeX mode"

Fixed.

>> +      (description
>> +       "Latex-extra defines extra commands and keys for LaTeX-mode, as well
>> +as brings user experience improvements.")
>
> Nitpick: "LaTeX-mode" -> "LaTeX mode"

Fixed as well.

-
Sergiu
>From c8fe800f453c139177dcfb28bbe59b1cd362a902 Mon Sep 17 00:00:00 2001
From: Sergiu Ivanov <[email-masked]>
Date: Sun, 3 Sep 2023 19:29:03 +0200
Subject: [PATCH] gnu: Add emacs-latex-extra.

* gnu/packages/emacs-xyz.scm (emacs-latex-extra): New variable.
---
 gnu/packages/emacs-xyz.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index dc2998a217..6815d8410f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -132,6 +132,7 @@
 ;;; Copyright © 2023 Fabio Natali <[email-masked]>
 ;;; Copyright © 2023 Arnaud Lechevallier <[email-masked]>
 ;;; Copyright © 2023 Ahmad Draidi <[email-masked]>
+;;; Copyright © 2023 Sergiu Ivanov <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -4067,6 +4068,36 @@ (define-public emacs-auctex
 or XEmacs.")
     (license license:gpl3+)))
 
+(define-public emacs-latex-extra
+  (let ((commit "a81e7588448f85c5fcc3f3fc71cf957d0928a656")
+        (revision "0"))
+    (package
+      (name "emacs-latex-extra")
+      (version (git-version "1.14" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/Malabarba/latex-extra")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0sajg5vmygnkcnmkrpf8r7c4b8v95hgsv1y6pz868jpznmldnxkb"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (add-before 'build 'set-home
+                      (lambda _
+                        (setenv "HOME"
+                                (getcwd)))))))
+      (propagated-inputs (list emacs-auctex))
+      (home-page "https://github.com/Malabarba/latex-extra")
+      (synopsis "Usability improvements for LaTeX mode")
+      (description
+       "Latex-extra defines extra commands and keys for LaTeX mode, as well
+as brings user experience improvements.")
+      (license license:gpl3+))))
+
 (define-public emacs-autothemer
   (let ((commit "8f72afc6dba5ad7cc3a201a084fd20571f945d2e")) ;version bump
     (package
-- 
2.41.0