Commit Graph

138 Commits

Author SHA1 Message Date
SFG545 81cc07a6cc fix: update time dependency version to 0.3.49 2026-06-16 06:44:46 -05:00
SFG545 d6dd45165c bump: update time dependency version to 0.3.479 2026-06-16 06:43:54 -05:00
SFG545 9a93d20d9b refactor: clear source_repos in multiple test cases to ensure isolation 2026-06-16 06:43:22 -05:00
SFG545 65e48ed280 feat: add built_against field for ABI-sensitive dependencies
- Introduced a new field `built_against` in the InstalledPackageRecord struct to track concrete package names for ABI-sensitive dependencies.
- Updated database schema to include `built_against` column in the packages table.
- Modified package registration and listing functions to handle the new `built_against` field.
- Implemented helper functions to format and parse the `built_against` data.
- Enhanced tests to verify the correct handling of the `built_against` metadata during package registration and retrieval.
- Updated resolver logic to utilize `built_against` for dependency resolution.
2026-06-16 06:35:08 -05:00
SFG545 ffe6e4868f refactor: enhance normalize_string_option to strip quotes from input 2026-06-14 00:35:40 -05:00
SFG545 5b23ea95e0 Update dependencies, improve CLI asset generation, and add man page
- Bump `git2` from 0.20.4 to 0.21.0 and `rusqlite` from 0.39.0 to 0.40.1 in Cargo.toml.
- Refactor CLI asset generation in `cli_assets.rs` to write a man page directly instead of generating it with `clap_mangen`.
- Implement a function to remove old man pages before writing the new one.
- Add tests to ensure the generated man page documents all visible command paths.
- Update the install script to copy the newly generated man page correctly.
- Introduce a new man page for the `depot` command with comprehensive documentation.
2026-06-10 06:33:39 -05:00
SFG545 65cec6903a refactor: remove unused dependency status print functions and related logic 2026-06-10 06:14:19 -05:00
SFG545 9a544c60b0 Simplify Depot staging and preserve filesystem topology
Remove the old LBI bootstrap/system-state path and make Depot stage and
install packages against standard FHS paths instead of rewriting payloads into
the custom /system layout. This drops the bootstrap command surface,
system-state storage, /system path normalization, and bootstrap chroot helper
while moving rootfs state defaults back under /var and aliases under /usr/bin.

Preserve hardlink topology throughout the package lifecycle. Add shared fs_copy
helpers for symlink/hardlink-aware tree copies, use them for source preparation,
binary packages, Rust installs, and lib32 staging, and keep hardlinks intact
during stripping, atomic installation, and package archive creation.

Replace the external fakeroot wrapper with an internal user-namespace based
install command wrapper. Install phases now run as UID/GID 0 inside a private
namespace while mapping ownership back to the invoking user on the host.

Split the package spec parser into loading, model, config, and tests modules
without changing the public PackageSpec surface. Keep strict unknown-key
handling, manual source validation, config/appends support, lib32 overrides,
and generated output helpers in the new layout.

Tighten build and dependency behavior:
- emit explicit shared-library selectors when static builds are disabled
- apply configure_arch entries for the effective target/lib32 architecture
- add CMake sysroot defaults for non-live DEPOT_ROOTFS builds
- resolve Rust source_subdir before build hooks and binary installation
- satisfy dependencies and local sibling plans through package real_name aliases
- accept bare git:// source URLs as HEAD checkouts

Update tests around FHS path expectations, namespace fakeroot installs,
hardlink-preserving copies/archives/installs/stripping, real_name dependency
resolution, configure_arch expansion, CMake sysroot defaults, Rust source
subdirs, and git:// URL parsing.

Bump suppaftp to 8.0.4 and lzma-rust2 to 0.16.4.

Bump Depot to 0.50.0
2026-06-09 06:14:15 -05:00
SFG545 5c33a36100 Refactor build flags handling and add tool alias management
- Introduced a new method `apply_default_string` to streamline the application of default values for string fields in build flags.
- Enhanced `apply_flags_table` to utilize the new method for setting various build flags, improving code readability and maintainability.
- Added support for additional build flags: `fuse_ld`, `ranlib`, `strip`, `nm`, `objcopy`, `objdump`, and `readelf`.
- Implemented a new command `set` to manage tool aliases for compilers, linkers, and shells, allowing users to set preferred tools in the build environment.
- Improved error handling and validation for tool alias configuration, ensuring that existing non-symlink files are not replaced.
- Added tests to verify the correct behavior of tool alias management and build flag application.
2026-05-27 14:39:01 -05:00
SFG545 1833a2c42d Implement system state management with TOML serialization
- Introduced `SystemState` struct to manage system state, including stage, target, architecture, and layers.
- Added functions to load and save system state from/to a TOML file.
- Implemented layer management functions: add, set, and remove packages from layers.
- Created initialization function for LBI layout, including directory and symlink creation.
- Added tests for layer management and LBI layout initialization.
2026-05-20 19:54:00 -05:00
SFG545 d61d59f4f5 refactor: remove unused bootstrap hook path environment function and streamline path handling 2026-04-04 18:23:37 -05:00
SFG545 09bb4667b4 feat: enhance bootstrap script handling and improve command parsing logic 2026-04-04 18:17:29 -05:00
SFG545 ef001600c1 feat: enhance chroot handling and add host shell bootstrap logic 2026-04-04 18:05:20 -05:00
SFG545 d54e6d56e8 Implement Perl build helper commands and integrate into CLI
- Added `run_helper_configure` and `run_helper_install` functions in `perl.rs` to handle Perl-specific build configurations and installations.
- Introduced new internal commands in `cli.rs` for Perl configuration and installation.
- Updated `internal.rs` to execute Perl helper commands using the new functions.
- Enhanced `shell_helpers.rs` to include scripts for Perl configure and install commands.
- Modified `hooks.rs` to apply build helper context and directories for post-extract and post-configure commands.
- Added tests to ensure the correct execution of Perl build helper commands and their integration with the build process.
2026-04-04 17:31:39 -05:00
SFG545 34d52d11a9 feat: update user configuration example and add development package support
- Enhanced the user.depot.toml.example file with additional comments and options for user-local preferences.
- Bumped version from 0.35.0 to 0.35.1 in meson.build.
- Introduced a new option for DEPOT_DEVELOPMENT_PACKAGE in meson_options.txt.
- Added functions to handle the requested development package in build_options.rs.
- Updated various builder files (autotools.rs, cmake.rs, custom.rs, meson.rs, perl.rs) to support passing build flags.
- Implemented checks for the required development package during source builds in commands.rs and commands/build_cmd.rs.
- Added tests to ensure the correct behavior of development package requirements and source build warnings.
- Modified manual source handling in source/mod.rs to validate local manual sources before proceeding with builds.
- Updated cargo build and test scripts to accept a new development package argument.
- Added VSCode settings to disable automatic configuration on open.
2026-04-04 17:02:42 -05:00
SFG545 135514acb3 feat: update depot version to 0.35.0 and enhance configure argument handling 2026-03-30 20:05:28 -05:00
SFG545 a26ee450bc feat: update meson options for CMake, Meson, Perl, Python, and Rust packages; enhance configure help text validation 2026-03-29 17:15:27 -05:00
SFG545 d7afe5486d feat: update depot version to 0.34.1 and enhance configure argument handling 2026-03-29 17:04:38 -05:00
SFG545 57a364aa97 Implement update check functionality with version comparison and archive listing
- Added `check.rs` to handle package update checks, including logic for determining available updates from remote git repositories and archive listings.
- Introduced `versions.rs` to manage version patterns, comparison logic, and extraction of candidate versions from git refs and archive listings.
- Implemented `hex.rs` for encoding byte arrays to lowercase hexadecimal strings.
2026-03-29 12:09:44 -05:00
SFG545 192cdc1af2 feat: add support for package groups in dependency management
- Introduced a new `groups` field in the package specification to categorize packages.
- Updated various functions to handle package groups, including parsing, registration, and querying.
- Enhanced database schema to store package group information.
- Modified the interactive package creation process to allow users to specify package groups.
- Implemented tests to verify the correct handling of package groups in both source and binary repositories.
- Updated the output formatting to include package group information where applicable.
2026-03-25 00:23:16 -05:00
SFG545 60c26d217a feat: update depot version to 0.33.0 and enhance package handling 2026-03-24 19:20:46 -05:00
SFG545 8c601a8091 feat: update depot version to 0.32.1, add git clone support and enhance manual source handling 2026-03-23 22:23:31 -05:00
SFG545 a5fcf4b916 feat: add support for SHA1 checksum verification and update related documentation 2026-03-23 17:14:18 -05:00
SFG545 18e376e4f7 feat: update depot version to 0.32.0 and add support for environment variable declarations in build flags 2026-03-23 17:08:03 -05:00
SFG545 fd7873995a feat: add support for Mercurial (hg) source handling in mod.rs
- Implemented `split_hg_url` to parse Mercurial URLs and revisions.
- Added `checkout_hg` function to clone Mercurial repositories.
- Integrated Mercurial handling into the `prepare_one` function to support resuming builds.
- Added tests for `split_hg_url` to ensure correct parsing of URLs and revisions.

---

feat: introduce legacy STARBUILD conversion support in starbuild.rs

- Created `ConvertedStarbuild` and `ParsedStarbuild` structs to manage conversion data.
- Implemented `convert_starbuild_file` to parse STARBUILD files and generate package specifications.
- Added functions to handle parsing of various STARBUILD constructs, including dependencies and build phases.
- Developed a build script generator for STARBUILD, supporting custom install functions.
- Included tests to validate conversion of single and multi-output STARBUILD files.
2026-03-23 15:13:07 -05:00
SFG545 19da5b960c feat: update depot version to 0.31.0, enhance shell helper functions for primary staging support 2026-03-22 21:53:23 -05:00
SFG545 ce06fcba1b feat: update depot and zip versions to 0.30.1 and 8.3.1 respectively, enhance shell helper functions for safer file operations 2026-03-22 20:42:33 -05:00
SFG545 fc9a78a748 feat: update depot version to 0.30.0 and enhance manual source validation and lifecycle hook handling 2026-03-22 15:10:05 -05:00
SFG545 bfbec3ff8e feat: update depot version to 0.29.1 and enhance git fetch handling with full refs support 2026-03-21 13:49:34 -05:00
SFG545 ae93cf0bd8 feat: update depot version to 0.29.0 and enhance git source handling with cherry-pick support 2026-03-21 01:41:49 -05:00
SFG545 b7a686a531 feat: update depot version to 0.28.1, upgrade dependencies and enhance git source handling 2026-03-20 21:49:21 -05:00
SFG545 9c4f686eb4 feat: update depot version to 0.28.0 and implement package replacement handling in database 2026-03-20 21:31:42 -05:00
SFG545 bdb34c5c88 feat: update depot version to 0.27.1 and enhance pkg-config environment configuration 2026-03-17 19:59:54 -05:00
SFG545 3bc4d738c4 feat: update depot version and enhance host build support
- Bump the version of the "depot" package from 0.26.1 to 0.27.0 in Cargo.toml and Cargo.lock.
- Modify meson.build, autotools.rs, cmake.rs, custom.rs, makefile.rs, and other builder files to include a new parameter for host build directory.
- Implement logic to handle host builds across various build systems (Autotools, CMake, Meson).
- Add tests to ensure that environment variables for host build directories are correctly expanded.
- Introduce new flags in PackageSpec to control host build behavior.
2026-03-17 19:29:04 -05:00
SFG545 a6c7ca6fa7 feat: add support for package replacement in metadata and corresponding test 2026-03-17 00:26:50 -05:00
SFG545 e7538a42ad refactor: remove deferred hook handling from lifecycle script execution 2026-03-16 23:32:51 -05:00
SFG545 1dc043fa38 feat: enhance dependency handling in install process and update repo key trust prompt 2026-03-16 23:26:34 -05:00
SFG545 7f0f7d8c6f refactor: remove early return for non-empty output in Resolver 2026-03-16 23:07:22 -05:00
SFG545 2bc9e7a525 Implement package replacement feature across the codebase
- Introduced a new `replaces` field in various structs to support package replacements.
- Updated database schema to include a `replaces` table and corresponding queries.
- Modified the package index to handle replacements and ensure they take precedence over exact package names.
- Enhanced the `create_source_repo_index` function to include replacement entries in the index.
- Updated tests to validate the new replacement functionality, including parsing and metadata generation.
- Refactored relevant functions and structures to accommodate the new `replaces` feature in package specifications and alternatives.
2026-03-16 22:47:35 -05:00
SFG545 82f3b625ee feat: update depot version to 0.26.0 and modify lib32 hook script handling 2026-03-15 23:37:08 -05:00
SFG545 4ac242ed7b test: rename and update lib32 installation tests to reflect changes in path handling 2026-03-15 23:05:24 -05:00
SFG545 99ceacdb64 feat: update depot version to 0.25.1 and enhance lib32 installation handling 2026-03-15 22:55:17 -05:00
SFG545 a7a8ac201e feat: update depot version to 0.25.0 2026-03-15 22:06:12 -05:00
SFG545 db0dcb2ff5 feat: enhance automatic test skipping logic for multilib builds 2026-03-15 22:05:10 -05:00
SFG545 0d768e0941 feat: add support for preserving environment variables in sudo reexec 2026-03-15 16:59:03 -05:00
SFG545 6129edb50c feat: update depot version to 0.24.1 and enhance lib32 installation handling 2026-03-15 16:49:53 -05:00
SFG545 be52338e91 feat: set install context to planned for direct install requests 2026-03-15 16:34:58 -05:00
SFG545 167467d169 feat: add support for renamed package updates and ABI-breaking flags
- Introduced `real_name` field in `InstalledPackageRecord` and `PackageInfo` to handle renamed packages.
- Added `abi_breaking` field to manage versioned shared libraries during renamed updates.
- Updated database schema to include `real_name` and `abi_breaking` columns.
- Enhanced package registration logic to support replacement of renamed packages while retaining specified files and directories.
- Modified various functions and tests to accommodate the new fields and ensure backward compatibility.
- Updated TOML serialization to include `real_name` and `abi_breaking` in package metadata.
2026-03-15 16:31:44 -05:00
SFG545 a6a752bf69 feat: bump depot version to 0.23.1 and add tests for self-update context handling 2026-03-15 14:55:19 -05:00
SFG545 a774c61e5a Implement interrupt handling for long-running commands and archive extraction
- Added an `interrupts` module to manage Ctrl-C signals and propagate them to child processes.
- Refactored archive extraction functions to check for interrupts and handle them gracefully.
- Introduced `copy_interruptibly` function to allow for interruptible copying of data.
- Updated various source files to utilize the new interrupt handling functions, ensuring that commands and archive extractions can be interrupted by the user.
- Added tests to verify the interrupt functionality during copying and tar extraction.
- Introduced a new Meson option for generating HTML CLI documentation.
- Enhanced the `PackageSpec` struct to support additional Rust LTO flags.
2026-03-15 14:48:01 -05:00