Subject: Re: bug#37976: 27.0.50; Dependency reversal of seq-subseq and cl-subseq causes regression when using seq from ELPA

From: Stefan Monnier <[email-masked]>
Date: Wed, 13 Nov 2019 08:42:38 -0500

>> Why would they use "seq-subseq from MELPA" when they have the latest
>> seq.el built into their Emacs `master`?
> I am sorry to have written MELPA, but I meant ELPA.

[ ELPA is the whole infrastructure/protocol.  I'll assume you meant the
  GNU ELPA repository.  ]

Ah, much better.  We definitely want this case to work right.

> But is it that unlikely that you somehow would have the `seq` from ELPA
> on your `load-path`?

That would be a bug, yes.
How do you end up with ELPA's `seq` in your `load-path`: package.el
should not activate the `seq` package (because it should consider the
built-in one "at least as good").

>> Could we have some more data, such as which package (name and version)
>> pulls which version of `seq` (and how does it say "from MELPA")?
> In ELPA there are not that many packages that depend on seq, but there
> is for example `beacon` which depends on `(seq "2.14")`. In MELPA there
> is a lot, for example `org-drill` which also depends on `(seq "2.14")`.

Right.  I was worried about dependencies on MELPA's `seq` (assuming it
used a different versioning scheme, which would thus indeed wreak havoc
with package.el's attempt to compare the `seq` package's version with
the built-in one).

> I am using NixOS and I think this issue comes from nix and how it
> resolves packages. Nix will resolve Emacs package dependencies on a
> system level and make sure all of them are added to your `load-path`
> when launching Emacs. The unfortunate thing is that if a package depends
> on `seq`, it pulls the one from ELPA since it doesn't know about the
> built-in package in Emacs.

Sounds like a bug in the NixOS handling of Emacs's packages, then: they
should presumably be added to `package-directory-list` or
`package-user-dir` but not directly to `load-path`.

After all, adding them to `load-path` also breaks `package-load-list`
(since `package-load-list` lets you specify packages which shouldn't be
activated (aka put into your `load-path`) even though they're installed).

> Thank you for your reply and if you don't think anything needs to be
> done on Emacs/ELPA side, feel free to close this issue.

It does look like the problem is on NixOS's side, indeed.

        Stefan