aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xspm26
1 files 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 <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