From 0a5dfa6c3f9cf8caed723243df48fd2ac775872c Mon Sep 17 00:00:00 2001 From: emmett1 Date: Thu, 1 May 2025 17:33:47 +0800 Subject: updated --- install.sh | 5 +++++ spm | 49 ++++++++++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 21 deletions(-) create mode 100755 install.sh 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 '#-.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 '#-.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] options: -a print all installed packages - -b build directory into package + -b path to package name -h print this help message -i install package into system -l list files installed by @@ -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 -- cgit v1.2.3