unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
@ 2023-01-18 14:23 Yasushi SHOJI
  2023-01-18 14:39 ` Robert Pluim
  0 siblings, 1 reply; 12+ messages in thread
From: Yasushi SHOJI @ 2023-01-18 14:23 UTC (permalink / raw)
  To: emacs-devel

Hi,

I'm getting the following message with the emacs-29 branch when I
magit-section-toggle on a modified file on a Magit buffer to show the
difference.

    let*: Symbol’s function definition is void: \(setf\ compat-alist-get\)

I've bisected Emacs and it shows that the following change is
the one to cause this.

> commit fb87d5008e2 (HEAD)
> Author: Philip Kaludercic <philipk@posteo.net>
> Date:   Thu Aug 11 13:35:47 2022 +0200
>
>     * package.el (package--get-activatable-pkg): Prefer source packages

But I'm not sure why.  Does anyone see this?

I'm building Emacs with the following command:
/autogen.sh && ./configure --without-native-compilation --with-pgtk
--with-tree-sitter && make -j src lisp

Magit 20230116.2312 [>= 3.3.0.50-git], Git 2.39.0, Emacs 29.0.50, gnu/linux

Best
-- 
        yashi



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 14:23 emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit Yasushi SHOJI
@ 2023-01-18 14:39 ` Robert Pluim
  2023-01-18 15:48   ` Tassilo Horn
  0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2023-01-18 14:39 UTC (permalink / raw)
  To: Yasushi SHOJI; +Cc: emacs-devel

>>>>> On Wed, 18 Jan 2023 23:23:59 +0900, Yasushi SHOJI <yasushi.shoji@gmail.com> said:

    Yasushi> Hi,
    Yasushi> I'm getting the following message with the emacs-29 branch when I
    Yasushi> magit-section-toggle on a modified file on a Magit buffer to show the
    Yasushi> difference.

    Yasushi>     let*: Symbol’s function definition is void: \(setf\ compat-alist-get\)

`compat-alist-get' should only be used by emacs-25 and emacs-26. I
suspect something somewhere has not been set up properly, probably
some code compiled by an earlier version of emacs needs to be
recompiled.

1. Do you have the full backtrace? You may need to so `M-x
toggle-debug-on-error' first.
2. Can you reproduce in 'emacs -Q'?

Robert
-- 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 14:39 ` Robert Pluim
@ 2023-01-18 15:48   ` Tassilo Horn
  2023-01-18 16:59     ` Robert Pluim
                       ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Tassilo Horn @ 2023-01-18 15:48 UTC (permalink / raw)
  To: Robert Pluim; +Cc: Yasushi SHOJI, emacs-devel

Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Wed, 18 Jan 2023 23:23:59 +0900, Yasushi SHOJI
> <yasushi.shoji@gmail.com> said:
>
>     Yasushi> Hi,
>     Yasushi> I'm getting the following message with the emacs-29 branch when I
>     Yasushi> magit-section-toggle on a modified file on a Magit buffer to show
>     Yasushi> the
>     Yasushi> difference.
>
>     Yasushi>     let*: Symbol’s function definition is void: \(setf\
>     Yasushi> compat-alist-get\)
>
> `compat-alist-get' should only be used by emacs-25 and emacs-26. I
> suspect something somewhere has not been set up properly, probably
> some code compiled by an earlier version of emacs needs to be
> recompiled.

See https://github.com/magit/magit/issues/4836.

Basically, there has been a compat (the package) change where after
updating the compat package, one has to re-install magit (and other
packages) using that new compat version.  That is required because some
macro has been changed.

Bye,
Tassilo



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 15:48   ` Tassilo Horn
@ 2023-01-18 16:59     ` Robert Pluim
  2023-01-18 17:36       ` Eli Zaretskii
  2023-01-18 18:39       ` Tassilo Horn
  2023-01-18 18:54     ` Arash Esbati
  2023-01-19  0:34     ` Yasushi SHOJI
  2 siblings, 2 replies; 12+ messages in thread
From: Robert Pluim @ 2023-01-18 16:59 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Yasushi SHOJI, emacs-devel

>>>>> On Wed, 18 Jan 2023 16:48:28 +0100, Tassilo Horn <tsdh@gnu.org> said:

    Tassilo> Robert Pluim <rpluim@gmail.com> writes:
    >>>>>>> On Wed, 18 Jan 2023 23:23:59 +0900, Yasushi SHOJI
    >> <yasushi.shoji@gmail.com> said:
    >> 
    Yasushi> Hi,
    Yasushi> I'm getting the following message with the emacs-29 branch when I
    Yasushi> magit-section-toggle on a modified file on a Magit buffer to show
    Yasushi> the
    Yasushi> difference.
    >> 
    Yasushi> let*: Symbol’s function definition is void: \(setf\
    Yasushi> compat-alist-get\)
    >> 
    >> `compat-alist-get' should only be used by emacs-25 and emacs-26. I
    >> suspect something somewhere has not been set up properly, probably
    >> some code compiled by an earlier version of emacs needs to be
    >> recompiled.

    Tassilo> See https://github.com/magit/magit/issues/4836.

Oops. Breaking compatibility in a package called `compat' is a bit of
a no-no :-)

    Tassilo> Basically, there has been a compat (the package) change where after
    Tassilo> updating the compat package, one has to re-install magit (and other
    Tassilo> packages) using that new compat version.  That is required because some
    Tassilo> macro has been changed.

Thanks for that info, I guess that means this isnʼt an Emacs bug.

Robert
-- 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 16:59     ` Robert Pluim
@ 2023-01-18 17:36       ` Eli Zaretskii
  2023-01-18 18:25         ` [External] : " Drew Adams
  2023-01-18 18:39       ` Tassilo Horn
  1 sibling, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2023-01-18 17:36 UTC (permalink / raw)
  To: Robert Pluim; +Cc: tsdh, yasushi.shoji, emacs-devel

> From: Robert Pluim <rpluim@gmail.com>
> Cc: Yasushi SHOJI <yasushi.shoji@gmail.com>,  emacs-devel@gnu.org
> Date: Wed, 18 Jan 2023 17:59:13 +0100
> 
> Oops. Breaking compatibility in a package called `compat' is a bit of
> a no-no :-)

No problem if we also introduce a new compat-compat package.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [External] : Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 17:36       ` Eli Zaretskii
@ 2023-01-18 18:25         ` Drew Adams
  0 siblings, 0 replies; 12+ messages in thread
From: Drew Adams @ 2023-01-18 18:25 UTC (permalink / raw)
  To: Eli Zaretskii, Robert Pluim
  Cc: tsdh@gnu.org, yasushi.shoji@gmail.com, emacs-devel@gnu.org

> No problem if we also introduce a new compat-compat package.

compattycake-compattycake

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 16:59     ` Robert Pluim
  2023-01-18 17:36       ` Eli Zaretskii
@ 2023-01-18 18:39       ` Tassilo Horn
  2023-01-19  8:50         ` Robert Pluim
  2023-01-25 17:17         ` Stefan Monnier
  1 sibling, 2 replies; 12+ messages in thread
From: Tassilo Horn @ 2023-01-18 18:39 UTC (permalink / raw)
  To: Robert Pluim; +Cc: Yasushi SHOJI, emacs-devel

Robert Pluim <rpluim@gmail.com> writes:

>     Tassilo> See https://github.com/magit/magit/issues/4836.
>
> Oops. Breaking compatibility in a package called `compat' is a bit of
> a no-no :-)

That's funny but I think we should make clear there's no sarcasm in that
statement.  What I've understood from the various bug reports is that
David Mendler has explained why that change is for the better in the
long term and he coordinated carefully with authors of packages using
the compat library.

The result of that coordination was that when API-breaking compat
appeared, those packages had the required changes in place and required
the new compat version.  On package update, first the new compat was
installed, then the packages using the compat library.

However, it seems like when a package gets updated, it's not reloaded
and thusly the packages using the compat library where compiled with the
old compat version and that's why those errors popped up.

>     Tassilo> Basically, there has been a compat (the package) change
>     Tassilo> where after updating the compat package, one has to
>     Tassilo> re-install magit (and other packages) using that new
>     Tassilo> compat version.  That is required because some macro has
>     Tassilo> been changed.
>
> Thanks for that info, I guess that means this isnʼt an Emacs bug.

Decide for yourself.  I feel it could be an emacs bug.

Bye,
Tassilo



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 15:48   ` Tassilo Horn
  2023-01-18 16:59     ` Robert Pluim
@ 2023-01-18 18:54     ` Arash Esbati
  2023-01-19  0:34     ` Yasushi SHOJI
  2 siblings, 0 replies; 12+ messages in thread
From: Arash Esbati @ 2023-01-18 18:54 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Robert Pluim, Yasushi SHOJI, emacs-devel

Tassilo Horn <tsdh@gnu.org> writes:

> Basically, there has been a compat (the package) change where after
> updating the compat package, one has to re-install magit (and other
> packages) using that new compat version.  That is required because some
> macro has been changed.

compat should provide `package-recompile' and `package-recompile-all'
;-)

Best, Arash



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 15:48   ` Tassilo Horn
  2023-01-18 16:59     ` Robert Pluim
  2023-01-18 18:54     ` Arash Esbati
@ 2023-01-19  0:34     ` Yasushi SHOJI
  2 siblings, 0 replies; 12+ messages in thread
From: Yasushi SHOJI @ 2023-01-19  0:34 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Robert Pluim, emacs-devel

Hi,

On Thu, Jan 19, 2023 at 12:51 AM Tassilo Horn <tsdh@gnu.org> wrote:
>
> Robert Pluim <rpluim@gmail.com> writes:
>
> >>>>>> On Wed, 18 Jan 2023 23:23:59 +0900, Yasushi SHOJI
> > <yasushi.shoji@gmail.com> said:
> >
> >     Yasushi> Hi,
> >     Yasushi> I'm getting the following message with the emacs-29 branch when I
> >     Yasushi> magit-section-toggle on a modified file on a Magit buffer to show
> >     Yasushi> the
> >     Yasushi> difference.
> >
> >     Yasushi>     let*: Symbol’s function definition is void: \(setf\
> >     Yasushi> compat-alist-get\)
> >
> > `compat-alist-get' should only be used by emacs-25 and emacs-26. I
> > suspect something somewhere has not been set up properly, probably
> > some code compiled by an earlier version of emacs needs to be
> > recompiled.
>
> See https://github.com/magit/magit/issues/4836.

Thank you both.  It turns out that I had two versions of the
magit-section package.
I didn't notice that the function is provided by a separate package.

Removing the old one fixed it.

Best,
-- 
               yashi



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 18:39       ` Tassilo Horn
@ 2023-01-19  8:50         ` Robert Pluim
  2023-01-19  9:57           ` Tassilo Horn
  2023-01-25 17:17         ` Stefan Monnier
  1 sibling, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2023-01-19  8:50 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Yasushi SHOJI, emacs-devel

>>>>> On Wed, 18 Jan 2023 19:39:54 +0100, Tassilo Horn <tsdh@gnu.org> said:

    Tassilo> The result of that coordination was that when API-breaking compat
    Tassilo> appeared, those packages had the required changes in place and required
    Tassilo> the new compat version.  On package update, first the new compat was
    Tassilo> installed, then the packages using the compat library.

    Tassilo> However, it seems like when a package gets updated, it's not reloaded
    Tassilo> and thusly the packages using the compat library where compiled with the
    Tassilo> old compat version and that's why those errors popped up.

    Tassilo> Basically, there has been a compat (the package) change
    Tassilo> where after updating the compat package, one has to
    Tassilo> re-install magit (and other packages) using that new
    Tassilo> compat version.  That is required because some macro has
    Tassilo> been changed.

That could or could not be an Emacs bug. I guess weʼd need a recipe
from 'emacs -Q' to be sure.

Robert
-- 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-19  8:50         ` Robert Pluim
@ 2023-01-19  9:57           ` Tassilo Horn
  0 siblings, 0 replies; 12+ messages in thread
From: Tassilo Horn @ 2023-01-19  9:57 UTC (permalink / raw)
  To: Robert Pluim; +Cc: Yasushi SHOJI, emacs-devel

Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Wed, 18 Jan 2023 19:39:54 +0100, Tassilo Horn <tsdh@gnu.org> said:
>
>     Tassilo> The result of that coordination was that when API-breaking compat
>     Tassilo> appeared, those packages had the required changes in place and
>     Tassilo> required
>     Tassilo> the new compat version.  On package update, first the new compat
>     Tassilo> was
>     Tassilo> installed, then the packages using the compat library.
>
>     Tassilo> However, it seems like when a package gets updated, it's not
>     Tassilo> reloaded
>     Tassilo> and thusly the packages using the compat library where compiled
>     Tassilo> with the
>     Tassilo> old compat version and that's why those errors popped up.
>
>     Tassilo> Basically, there has been a compat (the package) change
>     Tassilo> where after updating the compat package, one has to
>     Tassilo> re-install magit (and other packages) using that new
>     Tassilo> compat version.  That is required because some macro has
>     Tassilo> been changed.
>
> That could or could not be an Emacs bug. I guess weʼd need a recipe
> from 'emacs -Q' to be sure.

How would one create a recipe with emacs -Q when one is interested in
package updates?  I guess one would rather use emacs -q in a testuser
account with no ~/.emacs.

I think what one has to do would create fake packages

  macro-1.0
  use-macro-1.0 requires macro-1.0

and install use-macro-1.0, macro-1.0 as a dependency.  Then make a
breaking change in macro leading to macro-2.0 required by use-macro-2.0
which will error if use-macro-2.0 was compiled with macro-1.0 instead of
2.0.

Bye,
Tassilo



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit
  2023-01-18 18:39       ` Tassilo Horn
  2023-01-19  8:50         ` Robert Pluim
@ 2023-01-25 17:17         ` Stefan Monnier
  1 sibling, 0 replies; 12+ messages in thread
From: Stefan Monnier @ 2023-01-25 17:17 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Robert Pluim, Yasushi SHOJI, emacs-devel

> However, it seems like when a package gets updated, it's not reloaded

We have code in place that tries to make sure it is, but I suspect it's
not working as intended in all cases :-(


        Stefan




^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-01-25 17:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-18 14:23 emacs-29: let*: Symbol’s function definition is void: \(setf\ compat-alist-get\) with Magit Yasushi SHOJI
2023-01-18 14:39 ` Robert Pluim
2023-01-18 15:48   ` Tassilo Horn
2023-01-18 16:59     ` Robert Pluim
2023-01-18 17:36       ` Eli Zaretskii
2023-01-18 18:25         ` [External] : " Drew Adams
2023-01-18 18:39       ` Tassilo Horn
2023-01-19  8:50         ` Robert Pluim
2023-01-19  9:57           ` Tassilo Horn
2023-01-25 17:17         ` Stefan Monnier
2023-01-18 18:54     ` Arash Esbati
2023-01-19  0:34     ` Yasushi SHOJI

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).