--- name: azldev-build-component description: "Read this before building a component or diagnosing a build failure; do not guess build flags or the inner loop. Explains how to build, iterate on, and debug an azldev component, covering comp build flags (local-repo, preserve-buildenv), the render/build/test inner loop, diff-sources, and disabling a failing %check via check.skip. Triggers include build component, build failed, build error, inner loop, preserve buildenv, local repo, disable check." --- # Build and debug a component **Never install built RPMs on your host** — they target the distro, not your dev machine. Test them in a chroot with the `azldev-mock` skill. Building and testing are separate steps: `azldev comp build` produces RPMs; it does not test them. ## Build ```sh azldev comp build -p # one component azldev comp build -p -p --local-repo-with-publish # chain deps via a local repo azldev comp build -p --local-repo # rebuild against a populated repo ``` Build foundational packages before their dependents. RPMs land in the project's configured output directory (`out` by default). `-q` quiets output but hides build progress — use it only for inner-loop builds you expect to succeed. ## The inner loop investigate → modify → render → build → test → inspect | Step | Command | | --- | --- | | Investigate | read the rendered spec under `specs/`, or `azldev comp diff-sources -p ` | | Modify | edit the component's `.comp.toml` (see the `azldev-overlays` and `azldev-comp-toml` skills) | | Verify | `azldev comp render -p ` (fast — skips source tarballs) | | Build | `azldev comp build -p ` | | Test | `azldev adv mock shell --add-package ` (see the `azldev-mock` skill) | | Inspect | `azldev comp build -p --preserve-buildenv always`, then a mock shell | Prefer `comp render` for quick overlay verification; use `comp diff-sources` to see the exact overlay effect (it fetches sources once, applies overlays to a copy, and diffs the two trees). Builds can be slow — set generous timeouts. Finalize with `azldev comp update -p ` before opening a PR (see the `azldev-update-component` skill). ## Debugging build failures 1. **Render error mentioning a non-standard `Release` tag** — a release-calculation issue; see the `azldev-comp-toml` skill. 2. **Overlay did not apply as expected** — `azldev comp diff-sources -p ` shows what the overlays actually change. 3. **Inspect the build environment** — `azldev comp build -p --preserve-buildenv on-failure` (values `on-failure`, `always`, `never`), then enter a mock shell. 4. **Failing `%check`** — fix the tests first (root cause, upstream patches, targeted fixes). Only as a last resort, disable with `build.check.skip = true` and a required `build.check.skip_reason` explaining what fails, why it cannot be fixed, and whether it is temporary. A transient `--no-check` build flag exists for one-off local builds. Per-component build tweaks (`build.defines`, `build.without`) live in the `.comp.toml` — see the `azldev-comp-toml` skill. Generated by `azldev docs agent`; do not hand-edit.