From: Philip Kaludercic <philipk@posteo.net>
To: Adam Porter <adam@alphapapa.net>
Cc: 65283@debbugs.gnu.org
Subject: bug#65283: 29.1; package-vc-install fails to install package "ement" because some dependencies installed by it are omitted from load-path
Date: Tue, 15 Aug 2023 21:52:11 +0000 [thread overview]
Message-ID: <878racj7n8.fsf@posteo.net> (raw)
In-Reply-To: <d38ad07e-b1b2-d997-dfcb-881408ad5c50@alphapapa.net> (Adam Porter's message of "Tue, 15 Aug 2023 15:47:51 -0500")
[-- Attachment #1: Type: text/plain, Size: 6779 bytes --]
Adam Porter <adam@alphapapa.net> writes:
> Hi Philip,
>
> On 8/15/23 15:11, Philip Kaludercic wrote:
>> Adam Porter <adam@alphapapa.net> writes:
>>
>>> On 8/14/23 03:13, Philip Kaludercic wrote:
>>>> Adam Porter <adam@alphapapa.net> 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 have been using the third approach (with the difference that I invoked
`package-vc-install' as a command using M-x), and it worked. When I use
your command, it doesn't -- so that is good from a reproducability
perspective.
> 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.
I wasn't implying that it was to blame, rather I just wanted to make
sure whether or not you were/weren't launching Emacs in an isolated
container.
> 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.
That is interesting,
> 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"
[...]
> So there appears to be a bug somewhere in the package-vc library.
With a slight modification of `package-vc-install-dependencies', we can
see in which order the dependencies are installed:
--8<---------------cut here---------------start------------->8---
(package-vc-install-dependencies (package-desc-reqs (cadr (assoc 'ement package-archive-contents))))
;=> (:to-install (svg-lib persist plz taxy taxy-magit-section) :missing nil)
; ^ mapc runs over this
--8<---------------cut here---------------end--------------->8---
This made me suspect that there might be a bug in that function, and
with these changes, the above command works (I can't test it because my
matrix account AFAIK isn't supported by Ement):
[-- Attachment #2: Type: text/plain, Size: 1085 bytes --]
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index db8b41aee6a..2da788ddeec 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -451,13 +451,11 @@ package-vc-install-dependencies
(desc (cadr (assoc package pac))))
(and desc (seq-some
(apply-partially #'depends-on-p target)
- (package-desc-reqs desc))))))
+ (mapcar #'car (package-desc-reqs desc)))))))
(dependent-order (a b)
(let ((desc-a (package-desc-name a))
(desc-b (package-desc-name b)))
- (or (not desc-a) (not desc-b)
- (not (depends-on-p desc-b desc-a))
- (depends-on-p desc-a desc-b)))))
+ (depends-on-p desc-a desc-b))))
(mapc #'search requirements)
(cl-callf sort to-install #'version-order)
(cl-callf seq-uniq to-install #'duplicate-p)
[-- Attachment #3: Type: text/plain, Size: 484 bytes --]
It boils down to a lack-of-type-safety kind of bug. It was comparing
'package-name with (package-name . "version string"), that always ends
up being nil.
Not sure about the change to `dependent-order', I'll have to think about
that in more detail tomorrow. Perhaps there is an all-together shorter
patch?
> 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
next prev parent reply other threads:[~2023-08-15 21:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-14 7:14 bug#65283: 29.1; package-vc-install fails to install package "ement" because some dependencies installed by it are omitted from load-path Adam Porter
2023-08-14 8:13 ` Philip Kaludercic
2023-08-14 17:28 ` Adam Porter
2023-08-15 20:11 ` Philip Kaludercic
2023-08-15 20:47 ` Adam Porter
2023-08-15 21:52 ` Philip Kaludercic [this message]
2023-08-17 13:53 ` Adam Porter
2023-08-17 14:08 ` Philip Kaludercic
2023-08-19 9:44 ` Philip Kaludercic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878racj7n8.fsf@posteo.net \
--to=philipk@posteo.net \
--cc=65283@debbugs.gnu.org \
--cc=adam@alphapapa.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.