A tool to create reproducible builds for Debian-based systems (Ubuntu Jammy, Noble, and Debian 12) using a TOML configuration file.
pkg-builder uses debcrafter to generate Debian packages from a TOML config, simplifying reproducible packaging for developers.
- TOML-based configuration
- Package types: default (tarballs), Git-based, virtual
- Build support: C/C++, Rust, Go, Python, TypeScript/JavaScript, Java, .NET, Nim
- Testing: piuparts (install/remove), autopkgtest (functionality), lintian (quality)
- Package verification with hashes
- Flexible build environments
- Reproducible builds for Ubuntu Jammy, Noble, and Debian 12
sudo apt install libssl-dev pkg-config quilt debhelper tar wget autopkgtest vmdb2 qemu-system-x86 git-lfs uidmap
sudo sbuild-adduser `whoami`See installation docs for sbuild setup.
# Install pkg-builder
cargo install --path .
# Create environment and build package
pkg-builder env create path/to/pkg-builder.toml
pkg-builder package path/to/pkg-builder.tomlIf no config file path is provided, pkg-builder.toml in the current directory is used.
pkg-builder package path/to/pkg-builder.toml # Build package
pkg-builder env create path/to/pkg-builder.toml # Create build environment
pkg-builder env clean path/to/pkg-builder.toml # Clean build environment
pkg-builder piuparts path/to/pkg-builder.toml # Run piuparts tests
pkg-builder autopkgtests path/to/pkg-builder.toml # Run autopkgtests
pkg-builder lintian path/to/pkg-builder.toml # Run lintian checks
pkg-builder verify path/to/pkg-builder.toml # Verify package hashes
pkg-builder version # Show versionIf no config file path is provided, pkg-builder.toml in the current directory is used.
pkg-builder piuparts path/to/pkg-builder.toml # Run piuparts tests
pkg-builder autopkgtests path/to/pkg-builder.toml # Run autopkgtests
pkg-builder lintian path/to/pkg-builder.toml # Run lintian checks
pkg-builder verify path/to/pkg-builder.toml # Verify package hashesIf no config file path is provided, pkg-builder.toml in the current directory is used.
See examples documentation for sample configs:
- Virtual packages, Rust, TypeScript/JavaScript, Nim, .NET, Java, Python, Go
Apache License, Version 2.0. See LICENSE.