Subject: bug#44196: [PATCH v6 3/4] system: Do not depend on locale folder generated by

From: Ludovic Courtès <[email-masked]>
Date: Sat, 31 Oct 2020 22:44:53 +0100

¡Hola!

Miguel Ángel Arruga Vivas <[email-masked]> skribis:

> From 5886bdf74bda59649b3d17b691132d9d030e0fb4 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
>  <[email-masked]>
> Date: Sat, 24 Oct 2020 20:36:21 +0200
> Subject: [PATCH] system: Do not depend on locale folder generated by
>  grub-install.
>
> * gnu/bootloader/grub.scm (define-module): Use (guix packages).
> (grub-locale-folder): New computed folder.
> (grub-configuration-file)[locale-config]: Use grub-locale-folder only when a
> locale is needed.

[...]

> +(define (grub-locale-folder grub)
> +  "Generate a folder with the locales from GRUB."

s/folder/directory/  :-)

> +  (define builder
> +    #~(begin
> +        (use-modules (ice-9 ftw))
> +        (let ((locale (string-append #$grub "/share/locale"))
> +              (out    #$output))
> +          (mkdir out)
> +          (chdir out)
> +          (for-each (lambda (lang)
> +                      (let ((file (string-append locale "/" lang
> +                                                 "/LC_MESSAGES/grub.mo"))
> +                            (dest (string-append lang ".mo")))
> +                        (when (file-exists? file)
> +                          (copy-file file dest))))
> +                    (scandir locale)))))
> +  (computed-file "grub-boot-locale" builder))

Maybe just “grub-locales”?

> +    (let* ((entry (first all-entries))
> +           (device (menu-entry-device entry))
> +           (mount-point (menu-entry-device-mount-point entry))
> +           (bootloader (bootloader-configuration-bootloader config))
> +           (grub (bootloader-package bootloader))
> +           (locale-dir (normalize-file (grub-locale-folder grub)
> +                                       mount-point
> +                                       store-directory-prefix)))

Nitpick: maybe s/locale-dir/locales/

> +      #~(let ((locale #$(and locale
> +                             (locale-definition-source
> +                              (locale-name->definition locale))))
> +              (locale-dir #$(and locale locale-dir)))
> +          (when locale
> +            (format port "\
>  # Localization configuration.
> -if search --file --set boot_partition /grub/grub.cfg; then
> -    set locale_dir=(${boot_partition})/grub/locale
> -else
> -    set locale_dir=/boot/grub/locale
> -fi
> -set lang=~a~%" locale))))
> +~asearch --file --set ~a/[email-masked]
> +set locale_dir=~a
> +set lang=~a~%"

Otherwise LGTM, thanks!

Ludo’.