feat: Implement build state tracking and interactive package specification creation

- Added StateTracker to manage build steps and allow resuming interrupted builds.
- Updated post_extract function to utilize StateTracker for patch and command execution.
- Introduced makefile.rs to handle building and installing packages via Makefile.
- Created interactive.rs for an interactive package specification creator with SHA256 computation for source URLs.
- Enhanced checksum verification to support multiple algorithms (SHA256, SHA512, MD5).
- Added example configuration files in contrib for system-wide and user-level Depot configurations.
- Updated tests to cover new functionality and ensure correctness of state tracking and interactive creation.
This commit is contained in:
2026-02-16 21:38:05 -06:00
parent 00ca2ebac6
commit 9a00608104
30 changed files with 3501 additions and 434 deletions
+20
View File
@@ -0,0 +1,20 @@
Contrib: example system and user configuration files for Depot
Place these files on your system to provide sensible defaults and examples
for `/etc/depot.toml`, `/etc/depot.d/build.toml`, or user-level configs.
Recommended installation:
# System-wide
sudo cp contrib/depot.toml /etc/depot.toml
sudo mkdir -p /etc/depot.d
sudo cp -r contrib/depot.d/* /etc/depot.d/
# Per-user (example)
mkdir -p ~/.config
cp contrib/user.depot.toml.example ~/.config/depot.toml
Notes
- These files are examples only. Review and adapt to your distribution and
security policies before deploying.
- The config loader supports append syntax (e.g. `cflags += ["-g"]`).
+17
View File
@@ -0,0 +1,17 @@
[flags]
# Default build flags applied to all packages via /etc/depot.d/build.toml
# Compiler selection
cc = "gcc"
# Default CFLAGS
cflags = ["-O2"]
cflags += ["-pipe"]
# Default LDFLAGS
ldflags = ["-Wl,-O1"]
# CARCH short name (can be overridden per-package)
carch = "x86_64"
# Example of appending per-package cflags: (will be exposed as build.cflags appends)
# cflags += ["-march=native"]
+6
View File
@@ -0,0 +1,6 @@
[package]
# System-wide package overrides. Example: set default provides or package metadata
# name = ""
# Example: provide a virtual runtime package name to satisfy runtime deps
# provides = ["filesystem"]
+24
View File
@@ -0,0 +1,24 @@
# Example /etc/depot.toml - system-wide configuration for Depot
[build]
# Installation prefix for package builds
prefix = "/usr"
# Default compiler and archiver
cc = "gcc"
ar = "ar"
[build.flags]
# Basic compiler flags
cflags = ["-O2"]
# Append additional flags (demonstrates += append support)
cflags += ["-g"]
# Linker flags
ldflags = ["-Wl,-O1"]
# Target architecture short name (CARCH). Defaults to host arch if unset.
carch = "x86_64"
# Target triples (optional)
#chost = "x86_64-pc-linux-gnu"
#cbuild = "x86_64-pc-linux-gnu"
+10
View File
@@ -0,0 +1,10 @@
# Example per-user configuration (~/.config/depot.toml)
[build]
prefix = "/usr/local"
cc = "clang"
[build.flags]
cflags = ["-O2"]
cflags += ["-g"]
carch = "x86_64"