Keep package targets explicit and reject existing archive symlinks
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user