Subject: Re: Emacs 29.4 emergency bugfix release

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 23 Jun 2024 10:39:18 +0200

Am Samstag, dem 22.06.2024 um 19:52 -0500 schrieb Adam Porter:
> Hello,
> 
> Today an emergency bugfix release was made of Emacs v29.4.  It fixes
> an important security vulnerability.
Note: Security bugs should go to guix-security instead.  But thanks for
pointing out the new Emacs release, I've pushed an update. (Thus
marking this done)

> FWIW, I had hoped that I could install it by running:
> 
>    guix install --with-version=emacs=29.4 emacs
> 
> But that fails the validate-comp-integrity phase, showing that all of
> its tests fail, with every function being loaded in byte-compiled
> form instead of native-compiled.
Ah, yes, that is not something you can do with --with-version, as it
disregards our patches and everything.

> And despite my best efforts at comparing the emacs.git tags for 29.3
> and 29.4 to look for any relevant changes, and digging through the
> relevant source code, and scanning through the build logs, I can't
> find a cause for this problem.
> 
> Is this failure expected?  If so, is it something unique to the Emacs
> packaging, and could it be fixed?  (Before Emacs 28 was released, I
> was able to use a similar "--with-commit" option to build and install
> what was then the emacs-next package to get native-compilation
> support, keeping it updated with Emacs's master branch at the time. 
> It would be helpful if that could still be used by users rather than
> having to wait for an update to the package definition, especially in
> a case like this.)
I understand your pain, but I doubt there is a reasonable fix to this.
Perhaps the check should honour tests?, but then you'd disable all the
other tests as well as part of the build.  Maybe a --without-phase
option to the Guix CLI would be better?

As for how to work around this, you can do a more elaborate package
definition:

  (package
    (inherit emacs)
    (version NEW_VERSION)
    (source (origin (inherit (package-source emacs))
                    (uri NEW_URI))))

This should automatically apply our patches.  Or, you can locally run
`guix refresh -u emacs'.

Cheers