From 33d88ba4a9ae46e794fc9ddbed5bcf3273a00c7c Mon Sep 17 00:00:00 2001 From: emmett1 Date: Mon, 15 Apr 2024 11:35:36 +0800 Subject: updated --- spm | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/spm b/spm index 3ad4803..6bde76f 100755 --- a/spm +++ b/spm @@ -66,6 +66,18 @@ spm_install() { msgerr "Package '$name' is installed, use '-u' to reinstall/upgrade." fi + if [ -f "$SPMDIR/lock" ]; then + msg "Theres existing spm process running..." + msg "remove '$SPMDIR/lock' if theres no spm process running." + fi + while [ -f "$SPMDIR/lock" ]; do + count=$((count+1)) + msg "wait for existing spm process complete ($count)..." + sleep 1 + done + + touch "$SPMDIR/lock" + # check if package is corrupt msg "Verify package..." tar -tvf "$1" > $SPMDIR/files.list 2>/dev/null || { @@ -100,9 +112,13 @@ spm_install() { done if [ -f "$SPMDIR/conflict.list" ] && [ ! "$SPM_FORCEINSTALL" ]; then - cat "$SPMDIR/conflict.list" + cat "$SPMDIR/conflict.list" | while read -r line; do + p=$(grep $line $PKGDB/* | awk -F : '{print $1}' | head -n1) + p=${p##*/} + echo "${p:-(none)}: $line" + done msg "File conflict found. Enable 'SPM_FORCEINSTALL' env to force install." - rm -f "$SPMDIR/conflict.list" + rm -f "$SPMDIR/conflict.list" "$SPMDIR/lock" exit 1 fi @@ -169,6 +185,8 @@ spm_install() { msg "Package '${pkgname%.spm}' $([ $upgrade ] && echo upgraded. || echo installed.)" + rm "$SPMDIR/lock" + exit 0 } @@ -243,7 +261,7 @@ spm_owner() { needarg $1 set -- ${1#/} cd $PKGDB - grep $1 * | tr ':' ' ' | column -t + grep $1 * | tr ':' ' ' exit 0 } @@ -271,7 +289,7 @@ options: -l list files installed by -r remove installed from system -o print owner of - -u re-install/upgrade + -u re-install/upgrade environments: SPM_ROOT override default root (/) location -- cgit v1.2.3