Subject: Re: bug#65283: 29.1; package-vc-install fails to install package "ement" because some dependencies installed by it are omitted from load-path

From: Adam Porter <[email-masked]>
Date: Tue, 15 Aug 2023 15:47:51 -0500

Hi Philip,

On 8/15/23 15:11, Philip Kaludercic wrote:
 > Adam Porter <[email-masked]> writes:
 >
 >> On 8/14/23 03:13, Philip Kaludercic wrote:
 >>> Adam Porter <[email-masked]> writes:
 >>>
 >>>> Hi,
 >>>>
 >>>> Wanting to test whether package-vc-install in Emacs 29.1 is now a
 >>>> suitable replacement for Quelpa for installing my Ement.el package 
from
 >>>> git, I started an instance of Emacs 29.1 in a clean configuration and
 >>>> evaluated:
 >
 > When you say clean configuration, do you mean that you invoked emacs
 > with -Q, or also --init-directory=[some fresh directory]?  I noticed
 > that you appear to be using Guix, so did you perhaps use a Guix
 > container shell?
I've tried three different ways now:

1. Using my with-emacs.sh script [0] (which was written for Emacs before 
the "--init-directory" option was added, but remains compatible with 
Emacs 29.1):

   with-emacs.sh -e emacs-29.1 -- --eval '(package-vc-install 
"https://github.com/alphapapa/ement.el")'

2. Using "-q --init-directory", i.e.

   emacs-29.1 -q --init-directory=$(mktemp -d) --eval 
'(package-vc-install "https://github.com/alphapapa/ement.el")'

3. Using "-Q --init-directory", i.e.

   emacs-29.1 -Q --init-directory=$(mktemp -d) --eval 
'(package-vc-install "https://github.com/alphapapa/ement.el")'

All three ways seem to produce the same problem with the same error 
messages and the same load-path missing taxy-magit-section's directory.

I do have Emacs 29.1 installed with Guix, on top of my Debian system. 
However, I've been using this setup for quite some time now, having also 
used Guix to install Emacs 27 and 28 previously, and I've never had this 
problem before.  So I don't think that Guix is related to the problem, 
although I can't say for certain.

Scouring the "*Messages*" buffer again, I noticed another series of 
messages:

   Checking /tmp/tmp.m5Cj6y1gaF/elpa/taxy-0.10.1/examples...
   Done (Total of 1 file compiled, 4 failed, 2 skipped in 2 directories)
   Contacting host: elpa.gnu.org:443
   Parsing tar file...done
   Extracting...done
     INFO     Scraping files for loaddefs...done
     GEN      taxy-magit-section-autoloads.el
   Unable to activate package ‘taxy-magit-section’.
   Required package ‘magit-section-3.2.1’ is unavailable
   Contacting host: elpa.gnu.org:443
   Parsing tar file...done
   Extracting...done
     INFO     Scraping files for loaddefs...done
     GEN      dash-autoloads.el
   Checking /tmp/tmp.m5Cj6y1gaF/elpa/dash-2.19.1... [2 times]

As you can see, it says that it can't activate taxy-magit-section 
because magit-section-3.2.1 is unavailable.  However, about 20 lines later:

   Checking /tmp/tmp.m5Cj6y1gaF/elpa/dash-2.19.1/doc...
   Done (Total of 2 files compiled, 2 skipped)
   Contacting host: elpa.nongnu.org:443
   Parsing tar file...done
   Extracting...done
     INFO     Scraping files for loaddefs...done
     GEN      magit-section-autoloads.el
   Checking /tmp/tmp.m5Cj6y1gaF/elpa/magit-section-3.3.0... [3 times]
   Compiling 
/tmp/tmp.m5Cj6y1gaF/elpa/magit-section-3.3.0/magit-section.el...done
   Wrote /tmp/tmp.m5Cj6y1gaF/elpa/magit-section-3.3.0/magit-section.elc
   Checking /tmp/tmp.m5Cj6y1gaF/elpa/magit-section-3.3.0...
   Done (Total of 1 file compiled, 2 skipped)
     INFO     Scraping files for loaddefs...done
     GEN      ement-autoloads.el

So it installs magit-section (at v3.3.0) two packages later.

The taxy-magit-section has these dependencies specified in 
"taxy-magit-section.el":

   ;; Package-Requires: ((emacs "26.3") (magit-section "3.2.1") (taxy 
"0.10"))

And, as listed in "C-h P taxy-magit-section RET":

   Package taxy-magit-section is dependency.

        Status: Installed in ‘taxy-magit-section-0.12.2/’.
       Version: 0.12.2
        Commit: 594531569c03206cbc83b74d679ffd0e93edb4d0
       Summary: View Taxy structs in a Magit Section buffer
      Requires: emacs-26.3, magit-section-3.2.1, taxy-0.10

So it seems that magit-section is being installed after 
taxy-magit-section rather than before, which seems to prevent Emacs from 
activating the taxy-magit-section package (and thereby adding it to 
load-path), which later causes the compilation of ement to fail since it 
can't find taxy-magit-section.

And all of this seems to be because the version number of magit-section 
is not being correctly recognized as a later version and thereby 
fulfilling the dependency--this even though it is being recognized as a 
dependency and installed by another part of the process.

Meanwhile, if I install using package-install with:

   emacs-29.1 --init-directory=$(mktemp -d) -q --eval "(package-install 
'ement)"

Then installation of all packages proceeds without error, and load-path 
shows:

     ("/tmp/tmp.19yxzzQiIk/elpa/ement-0.10" "
     /tmp/tmp.19yxzzQiIk/elpa/persist-0.5" "
     /tmp/tmp.19yxzzQiIk/elpa/plz-0.7" "
     /tmp/tmp.19yxzzQiIk/elpa/taxy-magit-section-0.12.2" "
     /tmp/tmp.19yxzzQiIk/elpa/magit-section-3.3.0" "
     /tmp/tmp.19yxzzQiIk/elpa/dash-2.19.1" "
     /tmp/tmp.19yxzzQiIk/elpa/taxy-0.10.1" "
     /tmp/tmp.19yxzzQiIk/elpa/svg-lib-0.2.7" "
     /tmp/tmp.19yxzzQiIk/elpa/transient-0.4.1" "
     /tmp/tmp.19yxzzQiIk/elpa/compat-29.1.4.2" "
     /home/me/.guix-profile/share/emacs/site-lisp" "
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/vc" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/use-package" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/url" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/textmodes" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/progmodes" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/play" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/org" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/nxml" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/net" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/mh-e" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/mail" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/leim" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/language" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/international" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/image" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/gnus" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/eshell" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/erc" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/emulation" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/emacs-lisp" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/cedet" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/calendar" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/calc" 
"
 
/gnu/store/c7vqk20kf6zw73klr8bacnh0gqahk5dd-emacs-29.1-29.1/share/emacs/29.1/lisp/obsolete")

So there appears to be a bug somewhere in the package-vc library.

I see that you tested with an Emacs 30.0.50 build.  Could you test with 
29.1, the version I'm using?

Thanks,
Adam

0: https://github.com/alphapapa/with-emacs.sh