aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordylan.araps@gmail.com <dylan.araps@gmail.com>2019-06-29 06:31:46 +0000
committerdylan.araps@gmail.com <dylan.araps@gmail.com>2019-06-29 06:31:46 +0000
commit3e95cba8930d2655b6b432c651e4c4f9bffe1c88 (patch)
tree474c476c89655fa8590d6144a0ee12c6c934f39b
parent3cba9f2e735366098e100ccbe812e19d72e5fc3f (diff)
downloadcpt-3e95cba8930d2655b6b432c651e4c4f9bffe1c88.tar.gz
kiss-new: Added checksum generation.
FossilOrigin-Name: 041c5b0bf66640dbeda9d020919a4ee2a1ef0ae233ae7b484b4a210b2e7e759a
-rwxr-xr-xkiss-new43
1 files changed, 43 insertions, 0 deletions
diff --git a/kiss-new b/kiss-new
index 73f10d6..47ef685 100755
--- a/kiss-new
+++ b/kiss-new
@@ -151,8 +151,51 @@ pkg_sources() {
}
pkg_checksums() {
+ # Generate checksums for a package.
+ # This also downloads any remote sources.
for pkg; do pkg_lint "$pkg"; done
for pkg; do pkg_sources "$pkg"; done
+
+ for pkg; do
+ # Find the package's repository files. This needs to keep
+ # happening as we can't store this data in any kind of data
+ # structure.
+ repo_dir=$(pkg_search "$pkg")
+
+ while read -r src _; do
+ case $src in
+ # Git repository.
+ # Skip checksums on git repositories.
+ git:*) ;;
+
+ *)
+ # File is local to the package and is stored in the
+ # repository.
+ [ -f "$repo_dir/$src" ] &&
+ src_path=$repo_dir/${src%/*}
+
+ # File is remote and was downloaded.
+ [ -f "$src_dir/$pkg/${src##*/}" ] &&
+ src_path=$src_dir/$pkg
+
+ # Die here if source for some reason, doesn't exist.
+ [ "$src_path" ] ||
+ die "[$pkg]: Couldn't find source '$src'."
+
+ # An easy way to get 'sha256sum' to print with the basenames
+ # of files is to 'cd' to the file's directory beforehand.
+ (cd "$src_path" && sha256sum "${src##*/}") ||
+ die "[$pkg]: Failed to generate checksums."
+
+ # Unset this variable so it isn't used again on a failed
+ # source. There's no 'local' keyword in POSIX sh.
+ src_path=
+ ;;
+ esac
+ done < "$repo_dir/sources" > "$repo_dir/checksums"
+
+ log "[$pkg]: Generated checksums."
+ done
}
setup_caching() {