Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dd29bc6
sdt_devices: add assist to generate SDT devices YAML for glob matching
Mar 2, 2026
4aa9e78
assists: activate overlay tree via lopper,activate in domain_access
Apr 21, 2026
f52a9a2
tree: extend lnodes() with __symbols__ fallback for DTB-loaded trees
Apr 21, 2026
db2eed3
tests: add TestOpenAMPPattern — sigils on real device nodes for per-d…
Apr 21, 2026
c4ef72b
overlay: preserve sigil overlay data across multi-pass lopper invocat…
Apr 22, 2026
d0bdf4c
assists: fix cpu_expand crash when cluster_node lookup fails
Apr 22, 2026
2fe3854
assists: fix xlnx_timer_expand to find timers not under /axi
Apr 22, 2026
6da43f5
tree: fall back to name search in _merge_node_into_tree when path absent
Apr 22, 2026
ecefca7
tests: add two-pass subprocess end-to-end tests for overlay preservation
Apr 22, 2026
68d5b55
lopper:assists: Add support to generate I3C node for Zephyr domain DTS
Apr 23, 2026
cc9fe87
tree: filter excluded props before fragment creation in fragment_add_…
Apr 28, 2026
bcdcb43
lopper: bump version to 1.4.1
Apr 29, 2026
c7d63d7
tree: fix EMPTY property merge when incoming value is a boolean or re…
Apr 29, 2026
9942a33
yaml: fix bool_as_int=False boolean-true encoding to produce empty fl…
Apr 29, 2026
89b5ad3
tests: add regression coverage for EMPTY property merge and YAML bool…
Apr 29, 2026
61b805a
openamp: xlnx: remove ranges property modification for reserved memor…
bentheredonethat Apr 29, 2026
ab7069f
yaml: fix boolean true always encoding as empty/flag DT property
Apr 30, 2026
7c23542
tests: add regression coverage for boolean true encoding in yaml to_t…
Apr 30, 2026
3f27fe5
lopper: assists: yaml_bindings: Add xlnx,vpss to HDMI 2.1 TXSS
gugulot May 1, 2026
5470eac
base: phandle_safe_name: replace all invalid label characters
Rajukumar45 May 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions docs/conditional-properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,90 @@ of the same source YAML.

---

## Multi-Pass Workflows

In many build pipelines the YAML-to-DTS translation and the domain processing
are separate lopper invocations. By default, lopper automatically preserves
sigil overlay data across exactly two passes:

**Pass 1 — YAML translation:**
```bash
lopper -f --permissive --enhanced \
-i base.yaml -i overrides.yaml \
system-top.dts intermediate.dts
```

Lopper embeds the condition registry as a `/__lopper-overlays__` node inside
`intermediate.dts`. No extra files or flags are needed.

**Pass 2 — domain processing:**
```bash
lopper -f --permissive \
intermediate.dts APU_Linux.dts \
-- domain_access -t /domains/APU_Linux
```

Lopper deserialises `/__lopper-overlays__` on load, making
`overlay_tree('linux')` available to `domain_access`. The node is removed
before `APU_Linux.dts` is written so the final output is clean.

### Preserving overlays across more than two passes

For pipelines with additional intermediate steps, pass `--emit-embedded-overlays`
to any non-final invocation to re-embed the overlay registry into that pass's
output:

```bash
lopper -f --permissive --emit-embedded-overlays \
intermediate.dts intermediate2.dts \
-- some_transform

lopper -f --permissive \
intermediate2.dts APU_Linux.dts \
-- domain_access -t /domains/APU_Linux
```

### Alternative: YAML sidecar

`--emit-overlay-sidecar` writes `<out>.overlays.yaml` alongside the output DTS.
Feed it with `-i` on subsequent passes. Unlike the embedded node, the sidecar
preserves merge schemes (`append`/`prepend`/`delete`) with full fidelity since
it round-trips through the sigil parser:

```bash
# Pass 1: emit intermediate.dts + intermediate.overlays.yaml
lopper -f --permissive --enhanced --emit-overlay-sidecar \
-i base.yaml -i overrides.yaml \
system-top.dts intermediate.dts

# Pass 2: feed the sidecar explicitly
lopper -f --permissive \
-i intermediate.overlays.yaml \
intermediate.dts APU_Linux.dts \
-- domain_access -t /domains/APU_Linux
```

### Alternative: per-condition DTS overlay files

`--emit-overlay-dtso` writes one `<out>.<condition>.dtso` file per condition.
These are standard DTS overlay files and can be inspected or fed with `-i`.
Note that merge schemes are not representable in DTS overlays — the output is
always replace-mode.

### Summary of overlay emit options

| Flag | Output | Merge schemes preserved | Notes |
|------|--------|------------------------|-------|
| *(default)* | `/__lopper-overlays__` in output DTS | Yes | Automatic two-pass; removed in final output |
| `--emit-embedded-overlays` | `/__lopper-overlays__` in output DTS | Yes | Re-embeds on every pass; use for >2-pass pipelines |
| `--emit-overlay-sidecar` | `<out>.overlays.yaml` | Yes | Full sigil fidelity; feed with `-i` |
| `--emit-overlay-dtso` | `<out>.<cond>.dtso` per condition | No (replace only) | Human-readable; standard DTS overlay format |

All emit options only affect DTS (`.dts`/`.dtsi`) output; YAML and JSON output
formats are unaffected.

---

## DTS Overlay Files

DTS overlay files (containing `&label { ... }` syntax) are handled by the same
Expand Down
2 changes: 1 addition & 1 deletion lopper/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.2
1.4.1
Loading
Loading