diff options
| author | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-08-27 07:37:06 +0800 |
|---|---|---|
| committer | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-08-27 07:37:06 +0800 |
| commit | b1d6940b07256497792df02b1a93ea09c2008226 (patch) | |
| tree | ea9084d6df50aaa4131c9878f485b2437d937ec4 | |
| parent | 4bf6e463a6f22e1a58150bf2bb9000af0f5bab55 (diff) | |
| download | autils-b1d6940b07256497792df02b1a93ea09c2008226.tar.gz autils-b1d6940b07256497792df02b1a93ea09c2008226.zip | |
added checksum
| -rwxr-xr-x | apkg | 70 |
1 files changed, 60 insertions, 10 deletions
@@ -713,6 +713,7 @@ parseopts() { -a) pkg_allinstalled $2; exit 0;; -h) apkg_help; exit 0;; -l) pkg_outdate; exit 0;; + -g) updatecsum=1;; -k) updatefiles=1;; -f) forcerebuild=1;; -i) install=1;; @@ -742,6 +743,7 @@ options: -f force rebuild -o <pkg(s)> download source -p <pkg> print package path + -g <pkg> update package checksum -s <pattern> search packages -h print this help message @@ -755,6 +757,46 @@ EOF exit 0 } +checksum_src() { + if [ ! -s "$checksum_file" ]; then + gencsum + else + printcsum > ${checksum_file}.tmp + diff -U 0 ${checksum_file} ${checksum_file}.tmp | \ + sed '/---/d;/+++/d;/@@/d' | \ + sed 's/^+/ new : /' | \ + sed 's/^-/ missing: /' > ${checksum_file}.diff + [ -s "${checksum_file}.diff" ] && { + cat ${checksum_file}.diff + msg "Checksum failed." + failed=1 + } + rm -f ${checksum_file}.tmp ${checksum_file}.diff + [ "$failed" ] && ret 1 + fi +} + +gencsum() { + rm -f .checksum + printcsum > .checksum + msg "Checksum file updated." +} + +printcsum() { + for i in $source; do + i=${i%::noextract} + case $i in + *::*) sn=${i%::*};; + *) sn=${i##*/};; + esac + case ${i#*::} in + */*) f=${APKG_SOURCE_DIR}/$sn;; + *) f=${HERE}/$sn;; + esac + b3sum $f | sed "s,$APKG_SOURCE_DIR/,,;s,$HERE/,," + done | sort -k 2 +} + main() { parseopts $@ set -- $(updateopts $@) @@ -777,16 +819,6 @@ main() { exit 0 fi - if [ "$install" ] && [ -s $SPM_PKGDB/${PWD##*/} ]; then - msg "Package '${PWD##*/}' already installed." - exit 0 - fi - - if [ "$upgrade" ] && [ ! -s $SPM_PKGDB/${PWD##*/} ]; then - msg "Package '${PWD##*/}' not installed." - exit 0 - fi - if [ ! -f ./abuild ]; then msg "'abuild' not found." exit 1 @@ -802,6 +834,21 @@ main() { } packagefile=$APKG_PACKAGE_DIR/$name#$version-$release.spm + + if [ "$install" ] && [ -s $SPM_PKGDB/${PWD##*/} ]; then + msg "Package '${PWD##*/}' already installed." + exit 0 + fi + + if [ "$upgrade" ] && [ ! -s $SPM_PKGDB/${PWD##*/} ]; then + msg "Package '${PWD##*/}' not installed." + exit 0 + fi + + if [ "$updatecsum" ]; then + gencsum + exit 0 + fi if [ "$downloadonly" ]; then fetch_src @@ -826,6 +873,7 @@ main() { fi else fetch_src + checksum_src extract_src build_src fi @@ -866,7 +914,9 @@ APKG_PACKAGE_DIR="$PWD" APKG_SOURCE_DIR="$PWD" APKG_WORK_DIR="$PWD" APKG_LOG_DIR=${APKG_LOG_DIR:-/var/log} + log_file="$APKG_LOG_DIR"/"$(basename "$0")_$(date +"%Y%m%d_%T")".log +checksum_file="$HERE/.checksum" # source config if [ -f $APKG_CONF ]; then |