diff options
author | dylan.araps@gmail.com <dylan.araps@gmail.com> | 2019-06-29 06:31:46 +0000 |
---|---|---|
committer | dylan.araps@gmail.com <dylan.araps@gmail.com> | 2019-06-29 06:31:46 +0000 |
commit | 3e95cba8930d2655b6b432c651e4c4f9bffe1c88 (patch) | |
tree | 474c476c89655fa8590d6144a0ee12c6c934f39b | |
parent | 3cba9f2e735366098e100ccbe812e19d72e5fc3f (diff) | |
download | cpt-3e95cba8930d2655b6b432c651e4c4f9bffe1c88.tar.gz |
kiss-new: Added checksum generation.
FossilOrigin-Name: 041c5b0bf66640dbeda9d020919a4ee2a1ef0ae233ae7b484b4a210b2e7e759a
-rwxr-xr-x | kiss-new | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -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() { |