aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapkg105
1 files changed, 60 insertions, 45 deletions
diff --git a/apkg b/apkg
index 33ba7ba..6e0f9e2 100755
--- a/apkg
+++ b/apkg
@@ -134,7 +134,7 @@ _cmake_build() {
-DFETCHCONTENT_FULLY_DISCONNECTED=ON \
-DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \
-DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
- $build_opt $@ \
+ $build_opt \
-B build ..
if [ -f build.ninja ]; then
ninja
@@ -158,7 +158,7 @@ _configure_build() {
--libdir=/usr/lib \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
- $build_opt $@
+ $build_opt
make
make DESTDIR=$PKG install
}
@@ -208,7 +208,7 @@ apply_patch() {
msg() {
ttysize=$(stty size | awk '{print $2}')
- echo "[${name:-...}] $@" | fold -sw $ttysize
+ printf "%s\n" "[${name:-...}] $@" | fold -sw $ttysize
}
buildstatus() {
@@ -385,7 +385,7 @@ pkg_path() {
for p in $@; do
for r in $APKG_REPO; do
[ -f $r/$p/abuild ] && {
- echo $r/$p
+ printf "%s\n" $r/$p
break
}
done
@@ -393,7 +393,7 @@ pkg_path() {
}
die() {
- [ "$1" ] && echo "error: $1"
+ [ "$1" ] && printf "%s\n" "error: $1"
ret 1
}
@@ -407,11 +407,11 @@ checkdep() {
[ -s $SPM_PKGDB/$ii ] && continue
fi
# if deps already in process list, skip, cycle deps detected
- echo $process | tr ' ' '\n' | grep -qx $ii && continue
+ printf "%s\n" $process | tr ' ' '\n' | grep -qx $ii && continue
# skip if itself in depends list
[ "$ii" = "$1" ] && continue
# skip if pkg already in deps list
- echo $DEPS | tr ' ' '\n' | grep -x $ii && continue
+ printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $ii && continue
# check deps
checkdep $ii
done
@@ -422,11 +422,11 @@ checkdep() {
pkg_deplist() {
for i in $@; do
# if already have in list deps, dont check again
- if [ ! $(echo $DEPS | tr ' ' '\n' | grep -x $i) ]; then
+ if [ ! $(printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $i) ]; then
checkdep $i
fi
done
- echo $DEPS | tr ' ' '\n'
+ printf "%s\n" $DEPS | tr ' ' '\n'
}
pkg_fsearch() {
@@ -446,15 +446,30 @@ pkg_dependents() {
pkg_depends() {
_path=$(pkg_path $1) || return 1
[ -s $_path/depends ] || return
- grep -Ev ^'(#|$)' $_path/depends | awk '{print $1}'
+ solve_alias $(grep -Ev ^'(#|$)' $_path/depends | awk '{print $1}')
+}
+
+solve_alias() {
+ [ "$APKG_ALIAS" ] || {
+ printf "%s\n" $@
+ return
+ }
+ while [ "$1" ]; do
+ d=$(printf "%s\n" $APKG_ALIAS | tr ' ' '\n' | grep ^$1:* | head -n1 | awk -F : '{print $2}')
+ printf "%s\n" ${d:-$1}
+ shift
+ done
}
pkg_outdate() {
spm -a | while read -r n v; do
+ [ "$APKG_MASK" ] && {
+ printf "%s\n" "$APKG_MASK" | tr ' ' '\n' | grep -xq $n && continue
+ }
[ "$(pkg_path $n)" ] || continue
nv="$(grep ^version= $(pkg_path $n)/abuild | awk -F = '{print $2}')-$(grep ^release= $(pkg_path $n)/abuild | awk -F = '{print $2}')"
[ "$nv" ] || continue
- [ "$v" = "$nv" ] || echo "$n $v -> $nv"
+ [ "$v" = "$nv" ] || printf "%s\n" "$n $v -> $nv"
done
}
@@ -476,13 +491,13 @@ pkg_sysup() {
msg "Solving dependencies..."
for p in $(pkg_deplist $od); do
[ -s $SPM_PKGDB/$p ] || ni="$ni $p"
- echo $od | tr ' ' '\n' | grep -qx $p && pu="$pu $p"
+ printf "%s\n" $od | tr ' ' '\n' | grep -qx $p && pu="$pu $p"
done
if [ "$ni" ]; then
- newpkg=$(echo $ni | tr ' ' '\n' | wc -l)
+ newpkg=$(printf "%s\n" $ni | tr ' ' '\n' | wc -l)
msg "Installing $newpkg new package(s): $ni"
fi
- totalpkg=$(echo $pu | tr ' ' '\n' | wc -l)
+ totalpkg=$(printf "%s\n" $pu | tr ' ' '\n' | wc -l)
msg "Upgrading $totalpkg package(s): $pu"
prompt_user
if [ "$ni" ]; then
@@ -525,7 +540,7 @@ pkg_depinstalll() {
msg "Nothing to install. Exiting..."
exit 0
fi
- totalpkg=$(echo $installthis | tr ' ' '\n' | wc -l)
+ totalpkg=$(printf "%s\n" $installthis | tr ' ' '\n' | wc -l)
msg "Installing $totalpkg package(s): $installthis"
prompt_user
$APKG -i $installthis || die
@@ -679,7 +694,7 @@ printsource() {
*/*) sourcenamefullpath=${APKG_SOURCE_DIR}/$sourcename;;
*) sourcenamefullpath=${HERE}/$sourcename;;
esac
- echo $sourcenamefullpath
+ printf "%s\n" $sourcenamefullpath
done
}
@@ -742,7 +757,7 @@ parsesubopt() {
shift; while [ "$1" ]; do
case $1 in
-*) break;;
- *) echo $1;;
+ *) printf "%s\n" "$1";;
esac
shift
done
@@ -755,23 +770,23 @@ updateopts() {
esac
shift
done
- echo $newopt
+ printf "%s\n" "$newopt"
}
parseopts() {
while [ "$1" ]; do
case $1 in
- -I) pkg_depinstalll $(parsesubopt $@); exit 0;;
- -D) pkg_deplist $(parsesubopt $@); exit 0;;
- -r) pkg_remove $(parsesubopt $@); exit 0;;
- -p) pkg_path $(parsesubopt $@); exit 0;;
- -t) pkg_trigger $(parsesubopt $@); exit 0;;
+ -I) pkg_depinstalll "$(parsesubopt "$@")"; exit 0;;
+ -D) pkg_deplist "$(parsesubopt "$@")"; exit 0;;
+ -r) pkg_remove "$(parsesubopt "$@")"; exit 0;;
+ -p) pkg_path "$(parsesubopt "$@")"; exit 0;;
+ -t) pkg_trigger "$(parsesubopt "$@")"; exit 0;;
-U) pkg_sysup; exit 0;;
- -d) pkg_depends $2; exit 0;;
- -s) pkg_search $2; exit 0;;
- -S) pkg_fsearch $2; exit 0;;
- -j) pkg_dependents $2; exit 0;;
- -a) pkg_allinstalled $2; exit 0;;
+ -d) pkg_depends "$2"; exit 0;;
+ -s) pkg_search "$2"; exit 0;;
+ -S) pkg_fsearch "$2"; exit 0;;
+ -j) pkg_dependents "$2"; exit 0;;
+ -a) pkg_allinstalled "$2"; exit 0;;
-h) apkg_help; exit 0;;
-l) pkg_outdate; exit 0;;
-g) updatecsum=1;;
@@ -807,36 +822,36 @@ options:
-g <pkg> update package checksum
-k <pkg> update package files
-s <pattern> search packages
+ -s <pattern> search files
-h print this help message
environment variables:
APKG_ROOT override default root (${APKG_ROOT:-/}) location
APKG_CONF override default $APKG_CONF location
- APKG_NOPROMPT set the variable for non-interactive use
- APKG_LOG set the variable for logging the output to a file
+ APKG_NOPROMPT set the variable for non-interactive use
+ APKG_LOG set the variable for logging the output to a file
EOF
exit 0
}
main() {
- parseopts $@
- set -- $(updateopts $@)
+ parseopts "$@"
+ set -- $(updateopts "$@")
for d in $APKG_PACKAGE_DIR $APKG_SOURCE_DIR $APKG_WORK_DIR; do
- [ -d $d ] || { msg "Directory '$d' not exist"; exit 1; }
- [ -w $d ] || { msg "Directory '$d' dont have write access"; exit 1; }
+ [ -d "$d" ] || { msg "Directory '$d' not exist"; exit 1; }
+ [ -w "$d" ] || { msg "Directory '$d' dont have write access"; exit 1; }
done
if [ "$pkg" ]; then
for p in $pkg; do
- [ "$(pkg_path $p)" ] || {
+ [ "$(pkg_path "$p")" ] || {
msg "Package '$p' not found"
continue
}
- #echo "[$p] package build starts..."
- (cd $(pkg_path $p) && $APKG $@)
- [ "$?" = 0 ] || exit 1
+ #printf "%s\n" "[$p] package build starts..."
+ (cd "$(pkg_path "$p")" && $APKG "$@") || exit 1
done
exit 0
fi
@@ -857,12 +872,12 @@ main() {
packagefile=$APKG_PACKAGE_DIR/$name#$version-$release.spm
- if [ "$install" ] && [ -s $SPM_PKGDB/${PWD##*/} ]; then
+ if [ "$install" ] && [ -s "$SPM_PKGDB/${PWD##*/}" ]; then
msg "Package '${PWD##*/}' already installed."
exit 0
fi
- if [ "$upgrade" ] && [ ! -s $SPM_PKGDB/${PWD##*/} ]; then
+ if [ "$upgrade" ] && [ ! -s "$SPM_PKGDB/${PWD##*/}" ]; then
msg "Package '${PWD##*/}' not installed."
exit 0
fi
@@ -911,13 +926,13 @@ main() {
if [ "$install" ] || [ "$upgrade" ]; then
# run postinstall script after installed/upgraded
runscript post
- [ "$APKG_ROOT" ] || pkg_trigger $name
+ [ "$APKG_ROOT" ] || pkg_trigger "$name"
fi
}
umask 022
-export HERE=$PWD
+export HERE="$PWD"
APKG=$0
SPM_PKGDB="${APKG_ROOT%/}/var/lib/spm/db"
@@ -943,8 +958,8 @@ log_file="$APKG_LOG_DIR"/"$(basename "$0")_$(date +"%Y%m%d_%T")".log
checksum_file="$HERE/.checksum"
# source config
-if [ -f $APKG_CONF ]; then
- . $APKG_CONF
+if [ -f "$APKG_CONF" ]; then
+ . "$APKG_CONF"
fi
# reset value, use override first, else either from config or use default
@@ -954,7 +969,7 @@ APKG_SOURCE_DIR=${O_APKG_SOURCE_DIR:-$APKG_SOURCE_DIR}
APKG_WORK_DIR=${O_APKG_WORK_DIR:-$APKG_WORK_DIR}
if [ ! "$APKG_LOG" ]; then
- main $@
+ main "$@"
else
main "$@" 2>&1 | tee -- "$log_file"
fi