API Reference NBPR v#0.2.1

Copy Markdown View Source

Modules

Nerves Binary Package Repository — the library underpinning every :nbpr_* Hex package.

Sets up PATH, LD_LIBRARY_PATH, and any package-declared runtime_env so external programs spawned by the BEAM can find every loaded nbpr package's binaries, shared libraries, and runtime resources.

Cache-key, naming, and on-disk layout for NBPR package artefacts.

On-disk cache for NBPR package artefacts.

Orchestrates the fetch path.

Firmware-time shared-library resolution check.

Behaviour for nbpr artefact resolvers.

Resolver for {:ghcr, "ghcr.io/<owner>"} site specs.

Resolver for {:github_releases, "owner/repo"} site specs.

The macro every NBPR package uses.

Discovery helpers for building nbpr packages against the user's pinned Buildroot tree.

Behaviour for the different ways NBPR can produce a per-package Buildroot artefact.

Shared runner for the container-based backends (NBPR.Buildroot.Backend.Docker, NBPR.Buildroot.Backend.Podman, and future CLI-compatible runtimes).

Buildroot backend that runs the build inside Docker.

Buildroot backend that runs the build inside Podman.

Buildroot backend that runs make natively on the host.

Drives a per-package Buildroot build.

Source-builds an NBPR package artefact tarball end-to-end.

Generates a per-build Buildroot defconfig that layers nbpr-specific settings on top of the active Nerves system's defconfig.

Reads Buildroot's per-package .files-list.txt / .files-list-staging.txt and copies only the listed files (with a runtime-only filter) out of a per-package merged sysroot.

Applies Buildroot's target-finalize cleanup to a harvested per-package target tree.

Locates per-package Buildroot output and packages it as an NBPR.Pack.sources() map for hand-off to NBPR.Pack.pack!/3.

Reads metadata for a Buildroot mainline package from a cached, extracted BR tree. Used by mix nbpr.new so the scaffolded mix.exs and module arrive pre-populated with version, licences, homepage, and a starter description sourced from BR itself rather than left as # TODO stubs.

Manages the cached Buildroot source tree.

Resolves a path to the full source tree of an active Nerves system, fetching from GitHub when the user has the Hex tarball (which deliberately omits Config.in and patches/).

Minimal ELF introspection: reads a binary's DT_NEEDED shared-library dependencies via readelf.

Pretty-printer for NBPR.Package metadata.

Pure-Elixir OCI artefact push to ghcr.io.

Produces a canonical NBPR artefact tarball from a directory of built files.

Metadata struct describing an NBPR package.

Metadata struct for a single daemon declared by an NBPR package.

Runtime helpers for Application-bearing NBPR packages.

SPDX licence-list cache and validation.

Mix Tasks

Introspect and garbage-collect the extracted-artefact cache that mix nbpr.fetch/mix nbpr.build populate under $NERVES_ARTIFACTS_DIR/nbpr/ (defaulting to ~/.local/share/nerves/nbpr/).

Refreshes docs/reference/catalogue.md by globbing the workspace's packages/nbpr_*/ directories and reading each package's mix.exs for the version and description.

Builds an NBPR package from source against the active Nerves system's Buildroot tree, then packs the result into a canonical artefact tarball.

Walks the user's loaded applications for nbpr packages, fetches each one's artefact tarball for the active Nerves system (if not already cached), and copies the artefact's target/ contents into the package's priv/ so it ships as part of the OTP release.

Pretty-prints the NBPR.Package metadata struct for the given module.

Installs and configures NBPR in a Nerves project so it can consume binary packages from the nbpr Hex organisation.

Generates the prebuild matrix for CI: every combination of an nbpr_* package under packages/ with a target system declared in the workspace mix.exs @prebuild_systems map.

Scaffolds a new NBPR package under ./packages/nbpr_<name>/.

Produces a canonical nbpr artefact tarball from already-built files on disk.

Uploads a tarball produced by mix nbpr.pack to the first supported backend declared in the package's artifact_sites:.

Diffs each package's mix.exs @version against the latest version published to the nbpr Hex organisation, returning the topo-sorted list of packages that need a fresh release tag.