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.
This commit is contained in:
2026-03-15 14:48:01 -05:00
parent 108c989695
commit a774c61e5a
23 changed files with 1117 additions and 145 deletions
+20 -1
View File
@@ -1,6 +1,6 @@
project(
'depot',
version: '0.22.1',
version: '0.23.0',
meson_version: '>=0.60.0',
default_options: ['buildtype=release'],
)
@@ -10,6 +10,8 @@ fs = import('fs')
cargo = find_program('cargo', required: true)
find_prog = find_program('find', required: true)
sh = find_program('sh', required: true)
build_html_doc = get_option('build-html-doc')
cli_doc = find_program('cli_doc', required: build_html_doc)
src_root = meson.project_source_root()
build_root = meson.project_build_root()
@@ -72,6 +74,23 @@ depot_bin = custom_target(
install_dir: get_option('bindir'),
)
if build_html_doc
custom_target(
'depot-html-doc',
input: depot_bin,
output: 'depot.html',
command: [
cli_doc,
'--output-filename',
'@OUTPUT@',
join_paths(build_root, 'depot'),
],
build_by_default: true,
install: true,
install_dir: join_paths(get_option('datadir'), 'doc', meson.project_name()),
)
endif
test(
'cargo-test',
sh,