Files
depot/README.md
T
SFG545 9953d4b2ee feat: add repo planning/binary repo support and Meson build integration
- add repos.toml source/binary repo configuration with arch overrides and priorities
- add dependency planner/execution plan flow with interactive provider selection and --yes support
- expand binary repo DB metadata (sha512, dependencies, file lists) and repo owns/search helpers
- add rootfs-scoped fd locking and minisign detached signing/verification helpers
- add Meson build/test support for the project with builddir-local CARGO_HOME/CARGO_TARGET_DIR
- install contrib example configs into sysconfdir (/etc/depot.d layout) via Meson
- improve builder env handling (sanitized PATH, tool env passthrough, CXXFLAGS support)
- support += appends in package specs and add build.flags.cxxflags parsing
- prompt for git credentials when private repo auth is required
- update docs/examples and dependency setup (system libs, zstdmt, tempfile pin)
2026-02-24 21:38:12 -06:00

2.7 KiB

depot

Depot is a source-based package manager designed for Linux. It focuses on reproducibility, atomic installations, and ease of cross-compilation.

Features

  • Source-based: Downloads, extracts, and builds packages from source.
  • Dependency Management: Automatically handles build-time and runtime dependencies.
  • Atomic Installation: Uses a transactional approach to ensure system consistency.
  • Multi-system Build Support: Built-in support for Autotools, CMake, Meson, Rust (Cargo), and custom build scripts.
  • Cross-Compilation: Easily build packages for different architectures using cross-toolchains.
  • Repository Management: Create and manage local package repositories.

Quick Start

Building Depot

cargo build --release

Installing a Package

To install a package from a spec file:

depot install packages/zlib.toml

To install from a pre-built package archive:

depot install zlib-1.2.11-1-x86_64.depot.pkg.tar.zst

Command Reference

  • install <SPEC_OR_ARCHIVE>: Build and install a package.
    • Resolves a full dependency plan first (binary repos and/or source specs), then executes in dependency order.
    • Use --yes for non-interactive confirmation/provider selection.
    • Use --dry-run to print the plan without performing work.
  • remove <PACKAGE>: Remove an installed package.
  • build <SPEC>: Build a package and create an archive without installing.
    • Resolves and offers to install missing build/test dependencies before fetching/building.
  • info <PACKAGE_OR_SPEC>: Show information about a package.
  • search <QUERY>: Search enabled source/binary repos by package name and provided features.
    • Use --files to search binary repo metadata file lists.
  • owns <PATH>: Show which installed package owns a path.
  • list: List all installed packages.
  • repo owns <PATH>: Query binary repo metadata for path ownership.
  • repo create [DIR]: Create a repository database from a directory of packages.
  • config: Show current configuration and overrides.

Package Specification

Packages are defined using TOML files. Here is a basic example:

[package]
name = "example"
version = "1.0.0"
description = "An example package"
homepage = "https://example.com"
license = "MIT"

[[source]]
url = "https://example.com/example-$version.tar.gz"
sha256 = "..."
extract_dir = "example-$version"

[build]
type = "autotools"
flags = { configure = ["--enable-feature"] }

[dependencies]
build = ["gcc", "make"]
runtime = ["libc"]

Configuration

Depot can be configured via /etc/depot.d/ (or relative to the rootfs).

  • /etc/depot.d/build.toml: System-wide build overrides and flag appends.
  • /etc/depot.d/package.toml: Package-specific overrides.