From 3a3944019a79fd171be19bfe8a56c3dca2fcfd76 Mon Sep 17 00:00:00 2001 From: merakor Date: Mon, 5 Oct 2020 07:30:59 +0000 Subject: cpt-reset: rewrite to make use of the /etc/cpt-base file. FossilOrigin-Name: 8e53e32d1f2cfa115743a912260d6d8e60b547b29a99ae3684306400ff367f43 --- contrib/cpt-reset | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/contrib/cpt-reset b/contrib/cpt-reset index 1226fe6..4dfe52d 100755 --- a/contrib/cpt-reset +++ b/contrib/cpt-reset @@ -1,24 +1,39 @@ -#!/bin/sh -ef +#!/bin/sh -e # Remove all packages except for the base # # Disable word-splittng warnings as they're safe here. # shellcheck disable=SC2046 -set -- +[ "$1" ] && { + printf 'usage: %s\n\nRemove all packages not defined in the base.\n' \ + "${0##*/}" + exit 0 +} -while read -r pkg _; do - case $pkg in - baselayout|binutils|bison|busybox|bzip2|curl|flex|gcc|rsync|\ - gzip|cpt|libressl|linux-headers|m4|make|musl|pkgconf|xz|zlib) ;; +sys_db="$CPT_ROOT/var/db/cpt/installed" + +# Get base packages and their dependencies. +[ -f "$CPT_ROOT/etc/cpt-base" ] && while read -r basepkg _; do + case "$basepkg" in \#*) continue; esac + base=" $basepkg $base" + [ -f "$sys_db/$basepkg/depends" ] || continue + while read -r dep make; do + [ "$make" ] && continue + base=" $dep $base" + done < "$sys_db/$basepkg/depends" +done < "$CPT_ROOT/etc/cpt-base" + +set -- +cd "$sys_db" - *) set -- "$@" "$pkg" ;; - esac -done <