Subject: bug#76325: 30.0.93; package-vc-install fails with repositories that contain multiple single-file packages

From: Philip Kaludercic <[email-masked]>
Date: Sun, 16 Feb 2025 18:53:43 +0000

Armin Darvish <[email-masked]> writes:

> Hello,
>
> I have noticed that with vc repositories that contain multiple related single-file
> packages, package-vc-install creates looped self-dependency that can cause errors. 
>
> For example, trying to install the repository: 
> <https://github.com/armindarvish/consult-omni> 
> will result in "Lisp nesting exceeds ‘max-lisp-eval-depth’: 1601" error. This is 
> because currently package-vc-install tries to read all ".el" files in the root 
> directory to get the dependencies and build the "define-package" declaration in
> consult-omni-pkg.el. This is not compatible with repositories that have multiple
> single-file packages in the root directory. Instead, the dependencies should be 
> inferred from the main lisp file only. This will be safe with multi-file packages
> as well because the convention is to have the "Package-Requires:" header only in 
> the main lisp file and not the additional lisp files.

What version of Emacs are you using?  Installing your repository doesn't
raise any error when I try to do so.

> There are other packages that have multiple single-file packages as well, for 
> example, <https://github.com/oantolin/embark> includes embark and embark-consult in
> the root directory. Currently, installing embark with package-vc-install causes
> several different versions of embark being downlaoded because the dependencies are
> read from all of those files even though they are meant to be separate packages.

The issue we have to keep in mind is that since we add the repository
directly to `load-path', all the files can be used no matter what
"specific" file you might intend to use.  To retain usability and not
have unexpected function calls fail, we rather install all the
dependencies.  The recursion error above hints at some programming
issue, where we don't terminate properly.

>
> Best Regards,
> *Armin Darvish*
>
> --
> ------------------------------------------------------------------------
> [www.armindarvish.com]
>
>
> [www.armindarvish.com] <https://www.armindarvish.com/>