michael.hudson@canonical.com edf0acbeac
Add Python boot configuration package
Add architecture-specific boot configurators that translate the
debian-cd boot shell scripts (boot-amd64, boot-arm64, boot-ppc64el,
boot-riscv64, boot-s390x) into Python.

The package uses a class hierarchy:
- BaseBootConfigurator: abstract base with common functionality
- GrubBootConfigurator: shared GRUB config generation
- UEFIBootConfigurator: UEFI-specific shim/ESP handling
- Architecture classes: AMD64, ARM64, PPC64EL, RISCV64, S390X

A factory function make_boot_configurator_for_arch() creates the
appropriate configurator for each architecture.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:13 +13:00

44 lines
1.4 KiB
Python

"""Boot configuration package for ISO builder.
This package contains architecture-specific boot configurators for building
bootable ISOs for different architectures.
"""
import pathlib
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ..apt_state import AptStateManager
from ..builder import Logger
from .base import BaseBootConfigurator
def make_boot_configurator_for_arch(
arch: str,
logger: "Logger",
apt_state: "AptStateManager",
iso_root: pathlib.Path,
) -> "BaseBootConfigurator":
"""Factory function to create boot configurator for a specific architecture."""
from .amd64 import AMD64BootConfigurator
from .arm64 import ARM64BootConfigurator
from .ppc64el import PPC64ELBootConfigurator
from .riscv64 import RISCV64BootConfigurator
from .s390x import S390XBootConfigurator
if arch == "amd64":
return AMD64BootConfigurator(logger, apt_state, iso_root)
elif arch == "arm64":
return ARM64BootConfigurator(logger, apt_state, iso_root)
elif arch == "ppc64el":
return PPC64ELBootConfigurator(logger, apt_state, iso_root)
elif arch == "riscv64":
return RISCV64BootConfigurator(logger, apt_state, iso_root)
elif arch == "s390x":
return S390XBootConfigurator(logger, apt_state, iso_root)
else:
raise ValueError(f"Unsupported architecture: {arch}")
__all__ = ["make_boot_configurator_for_arch"]