Subject: [bug#68709] [PATCH] gnu: emacs-citar: Fix autoloads and restore tests

From: Nicolas Graves <[email-masked]>
Date: Sat, 27 Jan 2024 13:20:20 +0100

Just to let you know, on my side I had written this patch to provide a
more general solution, I don't know if setting a particular emacs
package is a good solution in the long run.

>From d8cbd304da0e4a9a073a213002c9876fe3011fe3 Mon Sep 17 00:00:00 2001
From: Nicolas Graves <[email-masked]>
Date: Wed, 15 Nov 2023 08:48:44 +0100
Subject: [PATCH] emacs-build-system: cl-defstruct autoloads.

Change-Id: If46b1d44fcc7f93da58de2573e1515a702c4dd52
---
 guix/build/emacs-utils.scm | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8e12b5b6d4..b7820d6390 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <[email-masked]>
 ;;; Copyright © 2019 Liliana Marie Prikler <[email-masked]>
 ;;; Copyright © 2022 Fredrik Salomonsson <[email-masked]>
+;;; Copyright © 2023 Nicolas Graves <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -119,7 +120,14 @@ (define (emacs-generate-autoloads name directory)
                    ((fboundp 'make-directory-autoloads)
                     ;; Emacs 28
                     (make-directory-autoloads ,directory ,file))
-                   (t (update-directory-autoloads ,directory))))))
+                   (t (update-directory-autoloads ,directory)))
+                  (when (file-exists-p ,file)
+                    (with-temp-buffer
+                     (insert-file-contents ,file)
+                     (when (search-forward "(cl-defstruct" nil t)
+                       (beginning-of-line)
+                       (insert "(require 'cl-lib)\n")
+                       (write-region (point-min) (point-max) ,file)))))))
     (emacs-batch-eval expr #:dynamic? #t)))
 
 (define* (emacs-byte-compile-directory dir)
-- 
2.41.0

I'm deleting it from my local guix, feel free to rework on it if useful.

Nicolas

On 2024-01-26 19:49, Andrew Tropin via Guix-patches via wrote:

> On 2024-01-24 22:34, Edward Wilson wrote:
>
>> The default build-system emacs doesn't properly expand cl-lib macros when
>> compiling autoloads. This patch changes the `#:emacs` build argument, fixing a
>> present bug (reproducible by requiring citar-autoloads in a minimal
>> environment). This change also allows the validation of compiled autoloads to
>> succeed, hence the test phase is restored.
>>
>> * gnu/packages/emacs-xyz.scm (emacs-citar): Change build-system emacs and
>> restore tests
>>
>> Change-Id: Id56de922e5220383f8c5015a01e39b4aa2ea8cfb
>> ---
>>  gnu/packages/emacs-xyz.scm | 6 ++----
>>  1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
>> index ad8c72e97d..b8c97d1767 100644
>> --- a/gnu/packages/emacs-xyz.scm
>> +++ b/gnu/packages/emacs-xyz.scm
>> @@ -23633,6 +23633,7 @@ (define-public emacs-citar
>>      (build-system emacs-build-system)
>>      (arguments
>>       (list
>> +      #:emacs emacs-no-x
>>        #:tests? #true
>>        #:test-command #~(list "emacs" "--batch" "-L" "."
>>                               "-l" "test/citar-test.el"
>> @@ -23642,10 +23643,7 @@ (define-public emacs-citar
>>        #:phases #~(modify-phases %standard-phases
>>                     (add-before 'build 'set-home
>>                       (lambda _
>> -                       (setenv "HOME" "/tmp")))
>> -                   ;; XXX: The following phase reports bogus errors. Suppress
>> -                   ;; it for now.
>> -                   (delete 'validate-compiled-autoloads))))
>> +                       (setenv "HOME" "/tmp"))))))
>>      (propagated-inputs (list emacs-auctex
>>                               emacs-citeproc-el
>>                               emacs-embark
>>
>> base-commit: ffc5fefce370f5fc01091869e13fdf525be1e0c0
>
> Hi Edward!
>
> Thank you very much for the fix, added a trailing dot to commit message
> and pushed as
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=8ae8b9804f

-- 
Best regards,
Nicolas Graves