Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 903147 - app-editors/emacs-29.0.9999-r1: 20emacs-29-vcs-gentoo.el makes Emacs unable to locate ELPA packages' Info manuals
Summary: app-editors/emacs-29.0.9999-r1: 20emacs-29-vcs-gentoo.el makes Emacs unable t...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: GNU Emacs project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-27 01:44 UTC by Jorge
Modified: 2023-03-28 13:01 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
Output of ~emerge --info~ (emerge-info.txt,7.74 KB, text/plain)
2023-03-27 01:44 UTC, Jorge
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jorge 2023-03-27 01:44:37 UTC
Created attachment 859051 [details]
Output of ~emerge --info~

Hi.  Under normal circumstances, GNU Emacs adds to the variable Info-directory-list the directory (as a string) of each ELPA package that ships an Info manual.  For example, GNU Vertico 1.2 ships an Info manual, so Emacs adds the element "/home/jorge/.config/emacs/elpa/vertico-1.2" to Info-directory-list.

This does not work on Gentoo with =app-editors/emacs-29.0.9999-r1.  I noticed the problem does not occur when Emacs is invoked with the --no-site-file command-line flag.  Then I looked into ~/usr/share/emacs/site-lisp/site-gentoo.el~ and noticed this code:

#+begin_src emacs-lisp
  (let ((path (getenv "INFOPATH"))
        (dir "/usr/share/info/emacs-29-vcs")
        (re "\\`/usr/share\\>"))
    (and path
         ;; move Emacs Info dir before anything else in /usr/share
         (let* ((p (cons nil (split-string path ":" t))) (q p))
           (while (and (cdr q) (not (string-match re (cadr q))))
             (setq q (cdr q)))
           (setcdr q (cons dir (delete dir (cdr q))))
           (setq Info-directory-list (prune-directory-list (cdr p))))))
#+end_src

I have then worked around the bug by commenting-out the above excerpt.  But the commentary of site-gentoo.el says:

#+begin_src emacs-lisp
  ;;; Commentary:
  ;; Automatically generated by elisp-common.eclass
  ;; DO NOT EDIT THIS FILE
#+end_src

I strongly suspect Portage will later clobber site-gentoo.el but I intend to simply repeat this workaround each time Portage clobbers it.

Regards
Comment 1 Ulrich Müller gentoo-dev 2023-03-27 05:50:38 UTC
Not an eclass problem. The code originates from 20emacs-30-vcs-gentoo.el which is installed by app-editors/emacs itself. elisp-common.eclass merely reads all the snippets from usr/share/emacs/site-lisp/site-gentoo.d/ and collects them in site-gentoo.el.

Could you test if the following change fixes the problem for you? In the code block below ";;; emacs-29-vcs site-lisp configuration", replace the line:

	   (setq Info-directory-list (prune-directory-list (cdr p)))))))

by:

	   (setenv "INFOPATH" (string-join (prune-directory-list (cdr p)) ":"))))))

For testing, it's probably easiest to edit /usr/share/emacs/site-lisp/site-gentoo.el (even if it says "DO NOT EDIT"). You may have to disable read-only-mode for the file with "C-u 0 C-x C-q".
Comment 2 Ulrich Müller gentoo-dev 2023-03-27 05:52:24 UTC
(In reply to Ulrich Müller from comment #1)
> [...] 20emacs-30-vcs-gentoo.el [...]

This should read 20emacs-29-vcs-gentoo.el.
Comment 3 Jorge 2023-03-28 12:42:32 UTC
(In reply to Ulrich Müller from comment #1)
> Could you test if the following change fixes the problem for you?

Yes, it fixed my problem.  I have applied it yesterday morning and have restarted Emacs at least twice after that; and Emacs is indeed able to find ELPA packages' Info manuals.

Now, outside Emacs, environment variable INFOPATH is "/home/jorge/.guix-profile/share/info:/home/jorge/.config/guix/current/share/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/12/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.39/info:/usr/share/info:/usr/share/info/emacs-29-vcs"

And inside Emacs, the variable is:

"/home/jorge/.guix-profile/share/info:/home/jorge/.config/guix/current/share/info:/usr/share/info/emacs-29-vcs:/usr/share/gcc-data/x86_64-pc-linux-gnu/12/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.39/info:/usr/share/info"

Emacs variable Info-directory-list is:

("/home/jorge/.config/emacs/elpa/jinx-0.3" "/home/jorge/.config/emacs/elpa/w3m-20230324.125" "/home/jorge/.config/emacs/elpa/org-modern-0.9" "/home/jorge/.config/emacs/elpa/vertico-1.2" "/home/jorge/.config/emacs/elpa/guix-20230309.955" "/home/jorge/.config/emacs/elpa/auctex-13.1.10" "/home/jorge/.config/emacs/elpa/modus-themes-4.1.1" "/home/jorge/.config/emacs/elpa/corfu-0.35" "/home/jorge/.config/emacs/elpa/marginalia-1.1" "/home/jorge/.config/emacs/elpa/cape-0.13" "/home/jorge/.config/emacs/elpa/osm-0.10" "/home/jorge/.config/emacs/elpa/embark-0.21.1" "/home/jorge/.config/emacs/elpa/use-package-2.4.5" "/home/jorge/.config/emacs/elpa/ebdb-0.8.17" "/home/jorge/.config/emacs/elpa/geiser-0.28.2" "/home/jorge/.config/emacs/elpa/magit-popup-20200719.1015" "/home/jorge/.config/emacs/elpa/orderless-1.0" "/home/jorge/.config/emacs/elpa/debbugs-0.35" "/home/jorge/.config/emacs/elpa/bbdb-vcard-20210325.2208" "/home/jorge/.config/emacs/elpa/bbdb-3.2.2.2" "/home/jorge/.config/emacs/elpa/lin-1.0.0" "/home/jorge/.config/emacs/elpa/org-remark-1.0.5" "/home/jorge/.config/emacs/elpa/consult-0.33" "/home/jorge/.config/emacs/elpa/compat-29.1.4.1" "/home/jorge/.config/emacs/elpa/elfeed-score-20220702.1548" "/home/jorge/.config/emacs/elpa/magit-3.3.0" "/home/jorge/.config/emacs/elpa/magit-section-3.3.0" "/home/jorge/.config/emacs/elpa/with-editor-3.2.0" "/home/jorge/.config/emacs/elpa/emms-14" "/home/jorge/.config/emacs/elpa/dash-2.19.1" "/home/jorge/.guix-profile/share/info" "/home/jorge/.config/guix/current/share/info" "/usr/share/gcc-data/x86_64-pc-linux-gnu/12/info" "/usr/share/binutils-data/x86_64-pc-linux-gnu/2.39/info" "/usr/share/info" "/usr/share/info/emacs-29-vcs")

Thank you!
Comment 4 Larry the Git Cow gentoo-dev 2023-03-28 13:01:35 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ba7cc5e2b5850273eebdeb893e879099a8cef646

commit ba7cc5e2b5850273eebdeb893e879099a8cef646
Author:     Ulrich Müller <ulm@gentoo.org>
AuthorDate: 2023-03-28 12:55:43 +0000
Commit:     Ulrich Müller <ulm@gentoo.org>
CommitDate: 2023-03-28 12:55:43 +0000

    app-editors/emacs: Set INFOPATH env variable in site-init file
    
    ... and leave the Info-directory-list variable alone.
    
    Closes: https://bugs.gentoo.org/903147
    Signed-off-by: Ulrich Müller <ulm@gentoo.org>

 app-editors/emacs/emacs-25.3-r17.ebuild            | 353 ++++++++++++++
 app-editors/emacs/emacs-26.3-r14.ebuild            | 374 +++++++++++++++
 app-editors/emacs/emacs-27.2-r12.ebuild            | 437 +++++++++++++++++
 app-editors/emacs/emacs-28.2-r7.ebuild             | 516 +++++++++++++++++++++
 ...cs-28.3_rc1.ebuild => emacs-28.3_rc1-r1.ebuild} |   3 +-
 app-editors/emacs/emacs-29.0.9999-r1.ebuild        |   3 +-
 app-editors/emacs/emacs-30.0.9999.ebuild           |   3 +-
 7 files changed, 1686 insertions(+), 3 deletions(-)