ov-coder/skills/build-toolchain/SKILL.md
C/C++ build toolchain with gcc, cmake, autoconf, ninja, git, and pkg-config. Use when working with native compilation, build tools, or C/C++ development.
npx skillsauth add overthinkos/overthink-plugins build-toolchainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Install files | layer.yml (packages only) |
| Variable | Value |
|----------|-------|
| CCACHE_DISABLE | 1 |
The package list is the centralized place to add system libraries that any builder stage needs. Image-specific cargo deps live here when they're broadly useful; truly image-specific deps stay in their image's own layer.
autoconf, automake, binutils, bison, ccache, cli11-devel, cmake, flex,
gcc, gcc-c++, gdb, git, glibc-devel, libtool, make, ninja-build, patch,
pkgconf, pkgconf-m4, pkgconf-pkg-config, redhat-rpm-config, rpm-build, rpm-sign.
rust, cargo. Used by setuptools-rust and any layer that compiles a Smithay-based
Wayland compositor from source. See /ov-coder:rust for the disambiguation between
this builder-stage Rust and the runtime rust layer.
clang-devel — provides libclang.so, required by bindgen-based crates such as
x264-sys and ffmpeg-sys-next. Without it, those crates panic in their build.rs at
bindgen-0.72.1/lib.rs:616:27.
nasm — assembler for SIMD-accelerated native deps. The turbojpeg-sys crate vendors
libjpeg-turbo, whose CMake build calls enable_language(ASM_NASM) and fails without
nasm with No CMAKE_ASM_NASM_COMPILER could be found.
wayland-devel, libudev-devel, libxkbcommon-devel, mesa-libgbm-devel,
libseat-devel, libinput-devel, systemd-devel, libdrm-devel, pixman-devel,
libjpeg-turbo-devel.
These satisfy smithay's default feature set when pixelflux_wayland builds against
smithay = { rev = "ca932e04…" } with features
["backend_drm", "backend_egl", "backend_gbm", "backend_libinput", "backend_udev", "renderer_gl", "renderer_pixman", "use_system_lib", "desktop", "wayland_frontend"].
Each backend_* and renderer_* feature pulls a pkg-config lookup against the matching
-devel package at link time.
libva-devel, x264-devel, ffmpeg-devel.
These live in RPM Fusion free (not in the base Fedora repos), which is why
/ov-foundation:fedora-builder now includes /ov-foundation:rpmfusion before
build-toolchain in its layer list. They are required for compiling pixelflux's
libva-sys, x264-sys, and ffmpeg-sys-next cargo crates against the system
codec libraries.
See /ov-selkies:selkies (Patched pixelflux build pipeline) for the consumer story —
the selkies layer's build.sh clones pixelflux from a pinned commit, applies four
inline source patches, and runs pip install . against this builder stage.
rpm: (Fedora), pac: (Arch), deb: (Debian/Ubuntu) — full parity. The deb section maps Fedora's ~40 -devel packages to their Debian -dev equivalents (libclang-dev, libavformat-dev, libdrm-dev, libinput-dev, libturbojpeg0-dev, libseat-dev, libva-dev, libwayland-dev, libxkbcommon-dev, libgbm-dev, libsystemd-dev, libpixman-1-dev, libx264-dev, libudev-dev — plus build-essential). Drops on deb: redhat-rpm-config, rpm-build, rpm-sign, pkgconf-m4 (RPM-specific); cli11-devel (header-only, cmake FetchContent).
# image.yml
my-image:
layers:
- build-toolchain
/ov-foundation:fedora-builder/ov-foundation:archlinux-builder/ov-foundation:fedora-remote (via remote layer ref)bazzite-ai (disabled)/ov-foundation:pixi — Sibling in builder images for conda-forge package builds/ov-coder:nodejs — Sibling in builder images for npm package builds/ov-foundation:yay — Pairs in archlinux-builder for AUR builds/ov-coder:rust — Disambiguates the builder-stage rust+cargo packages here from the runtime rust layer/ov-foundation:rpmfusion — Must be applied before this layer in fedora-builder so codec dev libs (x264-devel, ffmpeg-devel) can install/ov-selkies:selkies — Primary consumer of all the new cargo/codec deps (Patched pixelflux build pipeline)/ov-build:build — Multi-stage builders consume this layer for pixi/npm/cargo builds/ov-build:generate — See how builder stages are generated from this layerUse when the user asks about:
build-toolchain layer or its packages/ov-build:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov-build:eval — declarative testing (eval: block, ov eval image, ov eval live)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).