Subject: bug#45308: Unexpected fail with build transformation --with-commit

From: Ludovic Courtès <[email-masked]>
Date: Fri, 18 Dec 2020 18:21:07 +0100

Hi!

zimoun <[email-masked]> skribis:

>            1 (copy-file "bin/emacs-git.2ea3466" "bin/emacs")
> In ice-9/boot-9.scm:
>   1669:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> In procedure copy-file: No such file or directory
> builder for `/gnu/store/h7s176h5d0fqjzz0ac4pdvzb7rb0dm9i-emacs-next-git.2ea3466.drv' failed with exit
> code 1

This comes from this phase in the ‘emacs’ package:

--8<---------------cut here---------------start------------->8---
             (with-directory-excursion (assoc-ref outputs "out")
               (copy-file (string-append
                           "bin/emacs-"
                           ,(let ((this-version (package-version this-package)))
                              (or (false-if-exception
                                   (version-major+minor+point this-version))
                                  (version-major+minor this-version))))
                          "bin/emacs")
               #t)
--8<---------------cut here---------------end--------------->8---

When using ‘--with-commit’, the ‘version’ field you end up with is
‘git.2ea3466’ as shown above, and so the trick above that constructs the
file name from the ‘version’ field no longer works.

Probably, instead of constructing the ‘emacs-X.Y’ file name like this,
we should instead use ‘scandir’ or ‘find-files’ and pick
‘bin/emacs-[0-9]+.[0-9]+’.

HTH!

Ludo’.