On 12/22/22 09:00, Laszlo Ersek wrote:
On 12/21/22 17:38, Andrey Drobyshev wrote:
> This patch is merely a refactoring and does not introduce any changes in
> behaviour. It's used as a prelude for the next patch which prioritizes
> BIOS boot partition when searching for the right firmware.
>
> Co-authored-by: Laszlo Ersek <lersek(a)redhat.com>
> Signed-off-by: Andrey Drobyshev <andrey.drobyshev(a)virtuozzo.com>
> ---
> convert/inspect_source.ml | 24 ++++++++++++++----------
> 1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/convert/inspect_source.ml b/convert/inspect_source.ml
> index 056d0bca..42a26f68 100644
> --- a/convert/inspect_source.ml
> +++ b/convert/inspect_source.ml
> @@ -225,26 +225,30 @@ and list_applications g root = function
> * Otherwise, [BIOS] is returned.
> *)
> and get_firmware_bootable_device g =
> - let rec uefi_ESP_guid = "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
> - and is_uefi_ESP dev part =
> - let partnum = g#part_to_partnum part in
> - g#part_get_gpt_type dev partnum = uefi_ESP_guid
> - and parttype_is_gpt dev =
> + let parttype_is_gpt dev =
> try g#part_get_parttype dev = "gpt"
> with G.Error msg as exn ->
> (* If it's _not_ "unrecognised disk label" then re-raise it.
*)
> if g#last_errno () <> G.Errno.errno_EINVAL then raise exn;
> debug "%s (ignored)" msg;
> false
> - and is_uefi_bootable_part part =
> + in
> + let accumulate_partition esp_parts part =
> let dev = g#part_to_dev part in
> - parttype_is_gpt dev && is_uefi_ESP dev part
> + if parttype_is_gpt dev then
> + let partnum = g#part_to_partnum part in
> + let part_type_guid = g#part_get_gpt_type dev partnum in
> + match part_type_guid with
> + (* EFI system partition *)
> + | "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" -> part :: esp_parts
> + | _ -> esp_parts
> + else esp_parts
> in
>
> - let partitions = Array.to_list (g#list_partitions ()) in
> - let partitions = List.filter is_uefi_bootable_part partitions in
> + let esp_partitions =
> + Array.fold_left accumulate_partition [] (g#list_partitions ()) in
>
> - match partitions with
> + match esp_partitions with
> | [] -> I_BIOS
> | partitions -> I_UEFI partitions
>
I've replaced "List.fold_left" with "Array.fold_left" in the
commit
message (subject line).
Of course, just couldn't stop thinking about lists (:
Thanks!
Merged as commit d04b9a05b2a5.
Laszlo