Subject: Re: bug#51270: 28.0.50; xref core package 1.3.0 published, breaks etags

From: Dmitry Gutov <[email-masked]>
Date: Tue, 19 Oct 2021 00:40:44 +0300

On 19.10.2021 00:12, Ingo Lohmar wrote:
> On Mon, Oct 18 2021 23:38 (+0300), Dmitry Gutov wrote:
> 
>>> The breakage happens because xref 1.3.0 has been published on GNU ELPA
>>> https://elpa.gnu.org/packages/ (although the details page shows 1.2.2 as
>>> the latest version, don't know why).  I am using the "eglot" package,
>>> which requires xref (at a lower minimum version), and when upgrading
>>> packages this morning, I got xref 1.3.0.
>>
>> Which version of Emacs are you using? I understand Emacs 26 might have a
>> problem with :noinline instructions in the new struct definitions.
> 
> I am using the feature/pgtk branch, which is currently based on an older
> master (roughly 3m ago) it seems.

Ah, that's what it is!

>> But as for loading eieio and defining the xref-location class, the
>> top-level version check at the beginning of xref.el should supposedly
>> help. It looks like:
>>
>> (eval-and-compile
>>     (when (version< emacs-version "28")
>>       ;; etags.el in Emacs 26 and 27 uses EIEIO, and its location type
>>       ;; inherits from `xref-location'.
>>       (require 'eieio)
>>       (with-no-warnings
>>         (defclass xref-location () ()
>>           :documentation "..."))))
> 
> Ah, I did not look at the 1.3.0 file.  So the above will help for all
> released emacs versions, but will just not run for a non-recent master
> of Emacs 28, get it.

Yes, an update to a more recent emacs-28 should fix it. pgtk is indeed a 
fair bit out of date.

Perhaps we could compare the version more finely to "28.0.60", to cut 
off most older builds. That 3 month old version advertises itself as 
"28.0.50", right?

> I don't have a backtrace yet, but can provide one if it's helpful for
> related questions.  I guess I will just manually move xref-1.3.0 out of
> the way until I can update to a newer Emacs master (which will then
> include the coordinated xref/etags changes).

Sounds good. And pgtk might as well do a merge from master (it won't be 
in Emacs 28 apparently).