Subject: bug#66014: Unable to use UUIDs to construct RAID array in mapped-devices

From: Ludovic Courtès <[email-masked]>
Date: Mon, 18 Sep 2023 23:47:10 +0200

Hi,

Csepp <[email-masked]> skribis:

> Lars Rustand <[email-masked]> writes:

[...]

>> But this one fails:
>>
>>   (mapped-devices
>>     (list
>>       (mapped-device
>>         (source (list (uuid "a07c54da-eb61-4135-86b8-8791e863e46a") (uuid "c40026af-ace9-47fc-9d3f-4b8d6a2219cb")))
>>         (target "/dev/md0")
>>         (type raid-device-mapping))))
>>
>> The error message I get is guix system: error: #<<uuid> type: dce bv: #vu8(160 124 84 218 235 97 65 53 134 184 135 145 232 99 228 106)>: invalid G-expression input
>>
>> [[End of PGP Signed Part]]
>
> Would it be possible to use /dev/disk/by-uuid paths instead of uuid
> objects for these?

Depends: /dev/disk/by-uuid is populated by eudev, which is not running
at the time initrd code runs; IOW it’s OK to use /dev/disk/by-uuid if
and only if the mapped device is not “needed for boot”.

> I think this big "typeof" based dynamic dispatch that we're using in
> Scheme is erm, not very robust, to put it mildly.

Yeah, it’s not great.  What would you suggest?

Ludo’.