78 lines
3.3 KiB
Markdown
78 lines
3.3 KiB
Markdown
# Component catalog
|
|
|
|
`components.toml` in UniXNU records the maintained components. Profiles select
|
|
canonical IDs through `[components] include`. The resolver adds dependencies
|
|
and orders their build commands before their consumers.
|
|
|
|
|
|
## Find and select an implementation
|
|
|
|
1. Find the capability in the [driver adaptation checklist](/porting/drivers).
|
|
2. Search `components.toml` for its ID, then read the implementation and its board dependencies.
|
|
3. Compare hardware and OS ABI inputs; use the linked adaptation procedure to fill missing board hooks.
|
|
4. Select it in the device profile, add the required archive/integration step and inspect the result:
|
|
|
|
```sh
|
|
./unixnu status --json
|
|
```
|
|
|
|
Continue with [Building](/building) after the dependencies and source revisions match the intended port.
|
|
|
|
|
|
## Fields
|
|
|
|
| Field | Meaning |
|
|
| --- | --- |
|
|
| `id` | Canonical component ID |
|
|
| `kind`, `path` | Module kind and checkout path |
|
|
| `repository`, `revision` | Source repository and pinned revision |
|
|
| `legacy_name` | Accepted official compatibility name |
|
|
| `function` | Capability provided by the component |
|
|
| `scope` | Implementation scope |
|
|
| `hardware` | Required controllers, protocols, or GPU family |
|
|
| `os_abi` | XNU or userland ABI requirements |
|
|
| `board_dependencies` | Firmware, wiring, memory, or policy inputs |
|
|
| `verified_devices` | Devices with recorded hardware results |
|
|
| `dependencies` | Component IDs built first |
|
|
| `build_stage` | Kernel, payload, firmware, prelink, or embedded integration |
|
|
| `build` | Build command arguments |
|
|
| `outputs` | Paths produced in the target tree |
|
|
| `runtime_identifiers` | Source filenames, classes, bundle/plugin IDs, symbols, protocols |
|
|
|
|
Implementation scope and hardware verification are separate fields. Adreno740
|
|
implements the A740 GPU interface used by SM8550. sheng is its recorded device
|
|
verification target. AdrenoMetal provides the Metal frontend through metal2vulkan
|
|
and Turnip, with dependencies on the kernel interface and OS ABI.
|
|
|
|
## Selection
|
|
|
|
```toml
|
|
[components]
|
|
include = ["ArmDTPlatform", "ArmCpu", "Adreno740", "AdrenoMetal", "GopFramebuffer"]
|
|
```
|
|
|
|
Kernel-stage recipes run in dependency order. `[kernel] archives` can place `component:<ID>` markers among auxiliary commands. Payload, firmware, prelink, and embedded entries describe their corresponding integration stages.
|
|
|
|
The device's `include` array replaces the inherited array. List the required
|
|
selection in full; dependencies are added by the resolver. Inspect the resolved
|
|
selection, source revisions, local overrides, and build order:
|
|
|
|
```sh
|
|
./unixnu status --json -D ../UniXNU-sheng
|
|
```
|
|
|
|
Search this catalog, the [component pages](/drivers/repositories), the README,
|
|
and source before implementing a capability. Match interfaces, hardware scope,
|
|
OS requirements, and board inputs.
|
|
|
|
## Source identity
|
|
|
|
Official compatibility names resolve using the repository identity recorded in
|
|
the catalog. For example, the official `UniXNU/NativeAdreno` source resolves to
|
|
`Adreno740`. A source such as `another-owner/NativeAdreno` retains its own
|
|
identity and selection. Check the remote and revision before editing a feed.
|
|
|
|
The [migration table](/porting/migration#component-names) lists accepted names.
|
|
Source filenames and runtime identifiers keep the values used by their ABI.
|
|
For example, the `AdrenoMetal` component stages `NativeAdrenoMetal` plugin files.
|