SC::Package acquires development tools, compilers, sysroots, and runners used by repository workflows. It is not an
application dependency manager: packages live under _Build and support building, formatting, documentation, and
cross-target validation.
Think in recipes, receipts, and exports
Every package has three useful layers:
- A recipe describes how the package is downloaded, imported, prepared, and validated.
- A receipt records what was installed and which recipe version produced it.
- Exports name the tools, sysroots, runners, include directories, or libraries that another tool may consume.
After installation or import, validation produces a receipt and a set of named exports. This allows SC::Build to ask
for a capability such as an LLVM compiler or QEMU runner without reconstructing an installation path from directory
naming conventions.
Inspect before changing package state
Start with read-only actions:
./SC.sh package list
./SC.sh package info llvm
./SC.sh package status llvm
./SC.sh package exports llvmstatus reports whether a receipt is present and structurally valid without failing merely because a package is
missing. verify performs the stricter validation used when a workflow depends on that package:
./SC.sh package verify llvmWhen validation fails, doctor explains the observed state and suggests a next action:
./SC.sh package doctor llvmInstall, import, or repair
Install a package managed by the built-in catalog:
./SC.sh package install llvmSome large or host-specific tools can be registered from an existing directory instead of downloaded:
./SC.sh package install qemu --import-directory /opt/qemu-userrepair is for a recognized existing layout whose current receipt or launcher metadata can be reconstructed. It is not
a generic substitute for a failed install:
./SC.sh package repair llvm-mingwRecord the resolved environment
lock writes _Build/SC-package.lock, a local summary of installed receipts and exports:
./SC.sh package lockThe lock file makes a development environment auditable. It does not turn imported packages into content-addressed artifacts and should not be mistaken for an application dependency lock.
Use ./SC.sh package help for the current package catalog and action syntax. The registry and recipe API live in
Tools/SC-package when an external tool needs to compose its own package entries.