blob: 24a0aab071d5d72ad0adf3ff5115fd5fa727a384 [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Python Types for Assembly Configuration Files
This module contains Python classes for working with files that have the same
schema as `//src/developer/ffx/plugins/assembly`.
"""
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Set, TypeVar
import serialization
__all__ = ["ImageAssemblyConfig", "KernelInfo"]
from .common import FileEntry, FilePath
ExtendsImageAssemblyConfig = TypeVar(
"ExtendsImageAssemblyConfig", bound="ImageAssemblyConfig"
)
@dataclass
class KernelInfo:
"""Information about the kernel"""
path: Optional[FilePath] = None
args: Set[str] = field(default_factory=set)
@dataclass
class BoardDriverArguments:
vendor_id: int
product_id: int
name: str
revision: int
@dataclass
@serialization.serialize_json
class ImageAssemblyConfig:
"""The input configuration for the Image Assembly Operation
This describes all the packages, bootfs files, kernel args, kernel, etc.
that are to be combined into a complete set of assembled product images.
"""
base: Set[FilePath] = field(default_factory=set)
cache: Set[FilePath] = field(default_factory=set)
on_demand: Set[FilePath] = field(default_factory=set)
system: Set[FilePath] = field(default_factory=set)
kernel: KernelInfo = field(default_factory=KernelInfo)
qemu_kernel: Optional[FilePath] = None
boot_args: Set[str] = field(default_factory=set)
bootfs_files: Set[FileEntry] = field(default_factory=set)
bootfs_packages: Set[FilePath] = field(default_factory=set)
board_driver_arguments: Optional[BoardDriverArguments] = None
devicetree: Optional[FilePath] = None
# TODO: Flesh out the images_config with the actual types, if it's needed.
images_config: Dict[str, List[str]] = field(default_factory=dict)
def __repr__(self) -> str:
"""Serialize to a JSON string"""
return serialization.json_dumps(self, indent=2)