| # 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) |