aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinstall.sh5
-rwxr-xr-xspm49
2 files changed, 33 insertions, 21 deletions
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..e03bce0
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+BINDIR=${DESTDIR}${BINDIR:-/usr/bin}
+mkdir -p ${BINDIR}
+install -m755 spm ${BINDIR}
diff --git a/spm b/spm
index 4433350..ba7bdd7 100755
--- a/spm
+++ b/spm
@@ -5,8 +5,7 @@
# \/\_____\\ \_\ \ \_\ \ \_\
# \/_____/ \/_/ \/_/ \/_/
#
-# SPM - Simple Package manager
-# (C) Emmett1
+# SPM - Simple Package manager (C) 2023-2025 Emmett1
#
msg() { echo "[${name:-...}] $@"; }
@@ -14,9 +13,20 @@ msgerr() { echo "[${name:-...}] ERROR: $@"; exit 1; }
needarg() { [ "$1" ] || msgerr "This operation need argument(s). Aborted."; }
checkdbdir() { [ -d $PKGDB ] || msgerr "Database directory '$PKGDB' not exist. Aborted"; }
+checkpkgname() {
+ name=${1%#*}
+ version=${1#*#}; version=${version%%-*}
+ release=${1##*-}; release=${release%.spm}
+
+ [ "$name#$version-$release.spm" = "$1" ] || \
+ msgerr "Valid 'spm' package format is '<name>#<version>-<release>.spm'"
+}
+
spm_build() {
needarg $1
- [ -d "$1" ] || msgerr "'$1' directory not exist."
+ [ -d "${1%/*}" ] || msgerr "'${1%/*}' directory not exist."
+
+ checkpkgname ${1##*/}
if [ -f "/tmp/spmpackage.lock" ]; then
msg "Theres existing packaging process running..."
@@ -31,8 +41,7 @@ spm_build() {
touch "/tmp/spmpackage.lock"
- rm -f $HERE/$packagename
- cd "$1"
+ rm -f $1
# move all files in etc/ to .new suffix
if [ -d etc ]; then
@@ -43,17 +52,21 @@ spm_build() {
done
fi
- # -J for xz
- # -z for gzip
- # -j for bzip2
+ SPM_COMPRESSION=${SPM_COMPRESSION:-gzip}
+ case $SPM_COMPRESSION in
+ bzip2) sc=-j;;
+ xz) sc=-J;;
+ *) sc=-z;;
+ esac
+
msg "Packaging $PWD."
- tar -c -z -f $HERE/$packagename * || {
+ tar -c $sc -f $1 * || {
msgerr "Failed packaging $PWD."
}
rm -f "/tmp/spmpackage.lock"
- tar -tvf $HERE/$packagename
- msg "Package created: $HERE/$packagename."
+ tar -tvf $1
+ msg "Package created: $1."
exit 0
}
@@ -67,13 +80,7 @@ spm_install() {
[ -f "$1" ] || msgerr "Package '$1' not exist."
- pkgname=${1##*/}
-
- name=${pkgname%#*}
- version=${pkgname#*#}; version=${version%%-*}
- release=${pkgname##*-}; release=${release%.spm}
-
- [ "$name#$version-$release.spm" = "$pkgname" ] || msgerr "Valid 'spm' package format is '<name>#<version>-<release>.spm'"
+ checkpkgname ${1##*/}
# if upgrade but not already installed, exit
if [ "$upgrade" ] && [ ! -s $PKGDB/$name ]; then
@@ -203,7 +210,7 @@ spm_install() {
[ -x /sbin/ldconfig ] && /sbin/ldconfig -r "${SPM_ROOT:-/}"
- msg "Package '${pkgname%.spm}' $([ $upgrade ] && echo upgraded. || echo installed.)"
+ msg "Package '$name#$version-$release' $([ $upgrade ] && echo upgraded. || echo installed.)"
# remove lock file & temporary list files
rm -f "/tmp/spminstall.lock" "$SPMDIR"/*.list
@@ -293,7 +300,7 @@ usage: ${0##*/} -[a|b|h|i|l|r|o|u] <arg(s)>
options:
-a print all installed packages
- -b <path> build <path> directory into package
+ -b <pkg> path to package name
-h print this help message
-i <file> install <file> package into system
-l <pkg> list files installed by <pkg>
@@ -305,6 +312,7 @@ environments:
SPM_ROOT override default root (/) location
SPM_FORCEINSTALL force package installation
SPM_VERBOSE be verbose
+ SPM_COMPRESSION packaging compression; gzip (default) / bzip2 / gzip
EOF
exit 0
@@ -322,7 +330,6 @@ SPMDIR=$SPM_ROOT/var/lib/spm
PKGDB=$SPMDIR/db
PERMDIR=$SPMDIR/perms
OWNDIR=$SPMDIR/owner
-packagename="package.spm"
if [ "$1" ]; then
case $1 in