Commit Graph

92 Commits

Author SHA1 Message Date
SFG545 fd58dc6afc refactor: streamline BuildFlags initialization across multiple modules 2026-03-08 15:35:45 -05:00
SFG545 b033d64b5b feat: run transaction hooks at boundaries and add configurable LTO flags
- execute transaction pre hooks at transaction start and post hooks at transaction end
- add batched hook execution with ordered "(n/total)" logging
- refactor install flows to plan package actions first, then run hooks around commits
- add `build.flags.ltoflags` and `build.flags.use_lto` (default: true)
- export `LTOFLAGS` and append LTO flags to `CFLAGS`, `CXXFLAGS`, and `LDFLAGS`
  unless `use_lto = false`
- make autotools CFLAGS expansion use the final computed CFLAGS value
- update spec parsing/appends, interactive TOML output, docs, and contrib build config
- bump project version to 0.8.0 and update `zip` to 8.2.0
2026-03-03 00:15:20 -06:00
SFG545 6cae1f636a feat: enhance install command to accept multiple package specifications and improve runtime environment handling 2026-03-01 21:47:44 -06:00
SFG545 3080eea58a feat: update package version to 0.7.0 and enhance manual source variable expansion 2026-03-01 14:34:22 -06:00
SFG545 7841b06b5a feat: add support for MAKEFLAGS in build flags and update TOML parsing 2026-03-01 14:08:29 -06:00
SFG545 3c2bcc0ce2 fix: update hook file path to correct directory location 2026-03-01 13:46:44 -06:00
SFG545 238f64eef7 feat: merge missing dependencies into a single function and update dependency checks 2026-02-28 19:22:35 -06:00
SFG545 c96a17c553 feat: add support for deferred lifecycle hooks and improve binary package download progress tracking 2026-02-28 19:18:00 -06:00
SFG545 c4e1f8fd29 feat: update package version to 0.6.0 and enhance binary package handling 2026-02-28 18:33:46 -06:00
SFG545 bb129c8a3c feat: initialize database connection in multiple package management functions 2026-02-28 18:04:38 -06:00
SFG545 5cacd76523 feat: implement caching for repository database paths to improve fetch efficiency 2026-02-28 17:59:52 -06:00
SFG545 5f7402b207 feat: add support for .zst.tmp files in verification and enhance public key URL probing 2026-02-28 17:53:38 -06:00
SFG545 887f0135d1 feat: implement HashingReader for efficient file hashing and update package indexing 2026-02-28 15:48:50 -06:00
SFG545 35d063b9ca feat: implement parallel indexing of repository packages 2026-02-28 15:35:45 -06:00
SFG545 a66cdb2265 feat: enhance signing function to skip non-existent and non-.zst files 2026-02-28 15:28:30 -06:00
SFG545 acd1046889 feat: enhance clean command to remove source cache along with build workspace 2026-02-28 15:24:31 -06:00
SFG545 d954ca8660 feat: update sign command to support signing multiple .zst files 2026-02-28 15:19:17 -06:00
SFG545 1f22d22887 repo: add source repo root index command and fast TSV index loading
- add `depot repo index [DIR] [--subdir ...]` to generate `depot-index.tsv`
- use deterministic, git-friendly TSV format with package/provides rows
- teach source lookup to prefer repo index files and fall back to TOML scanning
- add index generation/loading/fallback tests
- document new command in README
2026-02-28 15:04:24 -06:00
SFG545 421ca362ac feat: add support for PEP 517 config settings in Python builds 2026-02-28 14:07:17 -06:00
SFG545 73a994ac53 feat(source): support cherry-picking commits for git sources
- add source.cherry_pick (and cherry-pick alias) to package spec parsing/serialization
- apply listed cherry-picks in order after git checkout
- reject cherry_pick on non-git sources with explicit error
- include cherry_pick in interactive spec TOML output
- add parsing/behavior tests and update Source test fixtures
2026-02-28 02:13:46 -06:00
SFG545 7e7bd84a43 feat: streamline man page generation and installation in CLI asset scripts 2026-02-28 01:09:44 -06:00
SFG545 f172814111 feat: enhance revision resolution in checkout_rev function and add fallback for invalid local HEAD 2026-02-28 01:05:41 -06:00
SFG545 b8a2cfa9be feat: add CLI asset generation for shell completions and man page 2026-02-28 01:01:33 -06:00
SFG545 ce5fefa833 refactor command flow and add signed package/hook safety
- split CLI definitions and command execution out of main.rs into new cli.rs and commands.rs modules\n- add transaction hook support via /etc/depot.d/hooks/*.toml with pre/post phases, operation/package/path filters, wildcard negation, and optional affected-path stdin\n- execute transaction hooks around install/update/remove operations and add package-action prompts for install/build/remove flows\n- require and verify detached minisign signatures for binary package archives when allow_unsigned=false, including cache handling and tests\n- persist optional dependencies from package metadata into repo index data and include optional deps in produced metadata\n- update dependency/planner logic to ignore dependencies provided by local split outputs and stop pulling test deps into install planning\n- auto-disable tests when required test dependencies are missing instead of hard-failing build/install paths\n- improve autotools defaults by injecting standard install directory flags when supported and preserving user overrides\n- remove static .a archives during staging by default with new build.flags.no_delete_static escape hatch\n- preserve symlinks and file metadata (permissions/timestamps) in extractor fallback copy path and add regression tests\n- refresh README docs for detached package signatures, optional dependencies, and transaction hooks\n- adjust dependency set: add filetime, disable reqwest default features, and simplify git2/OpenSSL linkage
2026-02-28 00:54:08 -06:00
SFG545 e045ae78fd feat: add support for building and installing lib32 companion packages with --lib32-only flag 2026-02-26 17:44:20 -06:00
SFG545 5a8303fd45 feat: update depot version to 0.5.0 and add lib32 support for post-configure and post-compile hooks 2026-02-26 17:19:55 -06:00
SFG545 be6184bbaf feat: update depot version to 0.5.0 and enhance build directory handling for lib32 2026-02-26 17:08:02 -06:00
SFG545 4ddf121dbf Add lib32 companion build pipeline 2026-02-26 16:58:20 -06:00
SFG545 59ea295b77 feat: enhance public key handling with URL fetching and verification support 2026-02-25 21:31:01 -06:00
SFG545 fbb8e83a00 feat: add manual source handling in interactive prompts and support for file URLs 2026-02-25 20:59:10 -06:00
SFG545 631ac73b3f feat: add support for metapackages in interactive prompts and update git2 dependency features 2026-02-25 20:09:19 -06:00
SFG545 d9a30f5d56 feat: add metapackage build support and fail-fast custom scripts
- add BuildType::Meta handling in builder and interactive spec output
- allow metapackage specs without sources and expose is_metapackage()
- avoid build deps in install planning for metapackages
- run custom non-function build.sh scripts with `sh -e` to stop on first failure
- add regression test for custom script fail-fast behavior
- apply small cleanup refactors (let-chains/iterator simplifications)
2026-02-25 16:49:36 -06:00
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
SFG545 d63ad03e98 feat: improve depot UX and packaging workflow
- add shared terminal UI helpers for colored info/warn/success logs and yes/no prompts
- add Python build backend (PEP 517/setup.py wheel build + install) and expose python in interactive spec creation
- expand spec/build flags (post_configure, make phase targets/dirs, configure_file, no_strip, no_compress_man)
- support split-output staging with internal .depot output dirs, shell helpers (haul/subdestdir), and per-output deps/provides overrides
- improve staging with ELF auto-strip and zstd manpage compression (with opt-out flags)
- enforce runtime deps before install and support legacy lifecycle hook script names
- improve manual source handling with files/urls lists and stricter validation
2026-02-22 14:52:45 -06:00
SFG545 0c676f6743 feat: Implement lifecycle script management with staging and execution hooks 2026-02-21 14:50:30 -06:00
SFG545 c9bed308e2 Refactor and enhance source management and installation processes
- Improved error handling and context messages in `checkout` function in `git.rs`.
- Updated license field in package specification to use a vector in `hooks.rs`.
- Enhanced `copy_manual_sources` function in `mod.rs` to support both local file and remote URL sources, including checksum verification.
- Added new utility functions for path normalization and skipping installation of specific files in `staging/mod.rs`.
- Implemented logic to handle existing files during installation, allowing for `.depotnew` suffix for kept files.
- Added tests for manual source copying, installation behavior, and path validation.
- Introduced a new LICENSE file with MIT License terms.
2026-02-21 13:25:14 -06:00
SFG545 af0571c33b feat: Enhance package specification to support case-insensitive flags and add C++ compiler configuration 2026-02-16 23:24:26 -06:00
SFG545 9a00608104 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.
2026-02-16 21:38:05 -06:00
SFG545 00ca2ebac6 feat: initial implementation of Depot package manager
- Implement source-based package management with support for archives and Git
- Add multi-system build support (Autotools, CMake, Meson, Rust/Cargo, Custom)
- Implement atomic installation logic using transactions and fakeroot
- Add dependency resolution for build-time and runtime requirements
- Implement package indexing and local repository management
- Add comprehensive configuration system with system/package overrides
- Include Project guidelines (AGENTS.md) and README.md
2026-02-16 11:35:23 -06:00
SFG545 94044a48c3 Configure Secret Detection in .gitlab-ci.yml, creating this file if it does not already exist 2026-02-16 11:25:53 -06:00
SFG545 94b80ba6cd Configure SAST in .gitlab-ci.yml, creating this file if it does not already exist 2026-02-16 11:25:52 -06:00
SFG545 e8fb0e7754 Initial commit 2026-02-16 11:25:51 -06:00