Subject: bug#71941: Broken `map-derivation' procedure

From: Ludovic Courtès <[email-masked]>
Date: Tue, 25 Feb 2025 18:23:12 +0100

Hi Sergio,

Sergio Pastor Pérez <[email-masked]> skribis:

> The `map-derivation` procedure was trying to process directories as files.
> When a derivation had a 'module import' directory as input, it threw an
> exception since it tried to open it as a file.
>
> Change-Id: I9b766f9aaa03ea9307f73e8abb36bc347af4b5e6
> ---
>  guix/derivations.scm | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/guix/derivations.scm b/guix/derivations.scm
> index bef98cd26a..9c019a35bb 100644
> --- a/guix/derivations.scm
> +++ b/guix/derivations.scm
> @@ -1074,8 +1074,10 @@ (define* (map-derivation store drv mapping
>                                      ((_ . replacement)
>                                       replacement)
>                                      (#f
> -                                     (substitute-file source
> -                                                      initial replacements))))
> +                                     (if (file-is-directory? source)
> +                                         source
> +                                         (substitute-file source
> +                                                          initial replacements)))))

Could you add a unit test for this specific case?

Bonus points if you come up with a commit log that follows our
conventions.  :-)  (I can do it on your behalf if you’re not sure.)

Thanks,
Ludo’.