From bcb55a8700fccd69af1c854c128146d41fbac182 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Mon, 27 May 2024 01:05:56 +0800 Subject: updated --- apkg | 15 +++++------ apkg-clean | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ apkg-foreign | 5 ++++ apkg-purge | 59 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 8 deletions(-) create mode 100755 apkg-clean create mode 100755 apkg-foreign create mode 100755 apkg-purge diff --git a/apkg b/apkg index 651f1e2..407d654 100755 --- a/apkg +++ b/apkg @@ -407,12 +407,10 @@ pkg_deplist() { } pkg_fsearch() { - #set -x for r in $APKG_REPO; do rr="$rr $r/*/.files" done - grep $1 $rr 2>/dev/null | tr ':' ' ' | awk '{print $1,$4}' | sed 's,/.files,,g' #| rev | cut -d / -f 2 | rev - #cut -d ' ' -f3- $rr | grep $1 + grep $1 $rr 2>/dev/null | tr ':' ' ' | awk '{print $1,$4}' | sed 's,/.files,,g' } pkg_dependents() { @@ -457,10 +455,7 @@ pkg_sysup() { done if [ "$ni" ]; then newpkg=$(echo $ni | tr ' ' '\n' | wc -l) - msg "Installing $newpkg new package(s)." - echo - echo $ni - echo + msg "Installing $newpkg new package(s): $ni" fi totalpkg=$(echo $pu | tr ' ' '\n' | wc -l) msg "Upgrading $totalpkg package(s): $pu" @@ -649,7 +644,11 @@ main() { . ./info [ "$name" ] || die "name is empty" [ "$version" ] || die "version is empty" - [ "$release" ] || die "release is empty" + [ "$release" ] || die "release is empty" + [ "$name" = "${PWD##*/}" ] || { + msg "'name' should be same as package directory name (${PWD##*/})." + exit 1 + } export name version release packagefile=$APKG_PACKAGE_DIR/$name#$version-$release.spm diff --git a/apkg-clean b/apkg-clean new file mode 100755 index 0000000..06ff1c6 --- /dev/null +++ b/apkg-clean @@ -0,0 +1,85 @@ +#!/bin/sh +# +# this script is for cleanup old packages and sources +# +# usage: +# apkg-clean | xargs rm +# + +[ -f /etc/apkg.conf ] && . /etc/apkg.conf + +scan_pkgs() { + [ "$APKG_PACKAGE_DIR" ] && allpkg=$(echo $APKG_PACKAGE_DIR/*.spm 2>/dev/null) + for i in $(apkg -s); do + . $(apkg -p $i)/info + if [ ! "$APKG_PACKAGE_DIR" ]; then + for p in $(apkg -p $i)/*.spm; do + [ -f $p ] || continue + [ "${p##*/}" = "$name#$version-$release.spm" ] && continue + echo $p + done + else + allpkg=$(echo $allpkg | sed "s|$APKG_PACKAGE_DIR/$name#$version-$release.spm||") + fi + done + [ "$APKG_PACKAGE_DIR" ] && echo $allpkg | tr ' ' '\n' +} + +scan_srcs() { + [ "$APKG_SOURCE_DIR" ] && allsrc=$(echo $APKG_SOURCE_DIR/* 2>/dev/null) + for i in $(apkg -s); do + . $(apkg -p $i)/info + unset keep + for s in $source; do + s=${s%::noextract} + case $s in + *::*) keep="$keep ${s%::*}";; + */*) keep="$keep ${s##*/}";; + *) [ "$APKG_SOURCE_DIR" ] || keep="$keep $s";; + esac + done + if [ ! "$APKG_SOURCE_DIR" ]; then + (cd $(apkg -p $i) + for f in *; do + case $f in + info|depends|prebuild|build|postbuild|preinstall|postinstall|*.spm) continue;; + esac + echo $keep | tr ' ' '\n' | grep -qx $f || echo $PWD/$f + done + ) + else + for f in $keep; do + allsrc=$(echo $allsrc | sed "s|$APKG_SOURCE_DIR/$f||") + done + fi + done + [ "$APKG_SOURCE_DIR" ] && echo $allsrc | tr ' ' '\n' +} + +print_help() { + cat <> $1" + fi +} + +help() { + cat < + +option: + -p remove from system + +EOF +exit 0 +} + +while [ "$1" ]; do + case $1 in + -p) purgeit=1;; + -h) help;; + *) pkg="$pkg $1";; + esac + shift +done + +for p in $pkg; do + apkg -p $p >/dev/null || continue # skip if package not exist in repo + apkg -a | grep -qx $p || continue # skip if package not installed + purge $p +done + +exit 0 -- cgit v1.2.3