Keep package targets explicit and reject existing archive symlinks
Sized Linux checks / Linux AMD64 / Rust 1.88.0 (push) Successful in 4m57s
Sized Linux checks / Linux AMD64 / Rust 1.88.0 (pull_request) Successful in 5m0s

This commit is contained in:
2026-10-10 04:00:52 -04:00
parent 5f0b11ea2e
commit 77b11a8c29
3 changed files with 15 additions and 2 deletions
+6
View File
@@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
### Fixed ### Fixed
- Include the executable before creating release archives. Use explicit host
targets, build provenance and checksums; refuse existing outputs and symlinks.
- Replace stale installation links and unavailable package-manager claims with
verified Gitea availability and explicit source-build instructions.
- Count hard-link allocation once in a deterministic traversal order while - Count hard-link allocation once in a deterministic traversal order while
retaining apparent sizes per pathname. Filtered comparison has independent retaining apparent sizes per pathname. Filtered comparison has independent
allocation ownership, including when the first link is ignored. allocation ownership, including when the first link is ignored.
@@ -17,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
symlinks as scan targets and distinguish special files from directories. symlinks as scan targets and distinguish special files from directories.
### Added ### Added
- Host archive extraction/executable checks on macOS and in Linux CI, plus
the Sized project page and its connection to SizeQueen's scanning core.
- A scanner module with structured reports, file identities, progress counters, - A scanner module with structured reports, file identities, progress counters,
cooperative cancellation, and per-scan thread pools. cooperative cancellation, and per-scan thread pools.
- Optional `-x` / `--one-file-system` boundary handling. Partial CLI reports - Optional `-x` / `--one-file-system` boundary handling. Partial CLI reports
+7
View File
@@ -29,4 +29,11 @@ if "$repo_root/scripts/release.sh" --output-dir "$check_root/bundle" > "$check_r
exit 1 exit 1
fi fi
grep -q 'Refusing to replace' "$check_root/repeat.log" grep -q 'Refusing to replace' "$check_root/repeat.log"
ln -s "$check_root/untouched" "$check_root/linked.tar.gz"
if "$repo_root/scripts/release.sh" --output-dir "$check_root/linked" > "$check_root/linked.log" 2>&1; then
printf 'Packaging unexpectedly followed an existing archive symlink.\n' >&2
exit 1
fi
grep -q 'Refusing to replace' "$check_root/linked.log"
test ! -e "$check_root/untouched"
printf 'Archive contents, checksum, extracted CLI and overwrite guard passed.\n' printf 'Archive contents, checksum, extracted CLI and overwrite guard passed.\n'
+2 -2
View File
@@ -16,12 +16,12 @@ elif [[ $# != 0 ]]; then
fi fi
[[ $destination == /* ]] || { printf 'Output directory must be absolute.\n' >&2; exit 2; } [[ $destination == /* ]] || { printf 'Output directory must be absolute.\n' >&2; exit 2; }
for output in "$destination" "$destination.tar.gz" "$destination.tar.gz.sha256"; do for output in "$destination" "$destination.tar.gz" "$destination.tar.gz.sha256"; do
[[ ! -e $output ]] || { printf 'Refusing to replace %s\n' "$output" >&2; exit 1; } [[ ! -e $output && ! -L $output ]] || { printf 'Refusing to replace %s\n' "$output" >&2; exit 1; }
done done
target_dir=${CARGO_TARGET_DIR:-"$repo_root/target"} target_dir=${CARGO_TARGET_DIR:-"$repo_root/target"}
[[ $target_dir == /* ]] || target_dir="$repo_root/$target_dir" [[ $target_dir == /* ]] || target_dir="$repo_root/$target_dir"
cargo build --locked --release --target "$target" cargo build --locked --release --target "$target" --target-dir "$target_dir"
binary="$target_dir/$target/release/sized" binary="$target_dir/$target/release/sized"
mkdir -p "$destination" mkdir -p "$destination"
install -m 755 "$binary" "$destination/sized" install -m 755 "$binary" "$destination/sized"