Subject: Re: emacs-orderless 1.0 shows as 0.8 due to incorrect value in package file

From: Hilton Chain <[email-masked]>
Date: Sat, 12 Aug 2023 23:57:43 +0800

Hi Piotr,

On Fri, 11 Aug 2023 04:18:57 +0800,
Piotr Kwieciński wrote:
>
> [1  <text/plain; UTF-8 (quoted-printable)>]
> [2  <text/html; UTF-8 (quoted-printable)>]
> I have the latest version of emacs-orderless installed on using guix and it shows:
>
>  Status: External in ‘/gnu/store/mp2ckcr7psy9myby262zqii36cd49yja-emacs-orderless-1.0/share/emacs/site-lisp/orderless-1.0/’ (unsigned).
> Version: 0.8
> Summary: Completion style for matching regexps in any order
>
> This is caused by an incorrect version of a package declared in orderless.el.

It seems that emacs-orderless in Guix wasn't really updated to 1.0,
only the version field was changed.

> I'm new to the ecosystem and I'm not familiar with the process of fixing this.
> The issue was fixed by the package maintainer in commit
> https://github.com/oantolin/orderless/commit/847694e78c12d903d5e3f6cb365a5d3b984db537
>
> Would replacing commit in the package definition be enough ? Swapping 004cee6b8e01f8eb0cb1c683d0a637b14890600f with
> 847694e78c12d903d5e3f6cb365a5d3b984db537

That's not enough, the hash in (sha256 (base32 [...])) needs changing
as well.

And when updating an untagged revision to a tagged release, we usually
drop the outer let form, and use the value from version field for
commit.

For example, the original definition:
--8<---------------cut here---------------start------------->8---
(define-public emacs-orderless
  (let ((commit [...]))
    (package
      (name "emacs-orderless")
      (version [...])
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/oantolin/orderless")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 [...]))))
      [...])))
--8<---------------cut here---------------end--------------->8---

would be changed to:
--8<---------------cut here---------------start------------->8---
(define-public emacs-orderless
  (package
    (name "emacs-orderless")
    (version "1.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/oantolin/orderless")
             (commit version)))           ; <- see here
       (file-name (git-file-name name version))
       (sha256
        (base32 [...]))))                 ; <- hash is changed as well
    [...]))
--8<---------------cut here---------------end--------------->8---

BTW the hash can be obtained with `guix hash' [1]:
--8<---------------cut here---------------start------------->8---
git clone https://[...] emacs-orderless

cd emacs-orderless
git checkout 1.0

guix hash -rx .
--8<---------------cut here---------------end--------------->8---

Would you like to get familiar with the process by going through the
way [2] to make your first contribution? ;)

I can send a patch if you prefer, and it may take a few days to get
the change into Guix.

Thanks

[1]: <https://guix.gnu.org/en/manual/devel/en/html_node/Invoking-guix-hash.html>
[2]: <https://guix.gnu.org/en/manual/devel/en/html_node/Contributing.html>

(Not sure why this issue isn't on the mailing list, but is available
in Debbugs.  Still under moderation?)