diff options
| -rwxr-xr-x | spm | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -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 <pkg> list files installed by <pkg> -r <name> remove installed <name> from system -o <file> print owner of <file> - -u <file> re-install/upgrade <pkg> + -u <pkg> re-install/upgrade <pkg> environments: SPM_ROOT override default root (/) location |