X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-gc;fp=zpm-gc;h=f07cdaffd969d6c6bf4188cd672a123bf7e55be2;hb=c5ae43ca2ab5b4a323e6154d0e08c629cc5a5e1d;hp=0000000000000000000000000000000000000000;hpb=5207c5a5959ce677cd0c95be97a1ae6d743dfcf7;p=zpackage diff --git a/zpm-gc b/zpm-gc new file mode 100755 index 0000000..f07cdaf --- /dev/null +++ b/zpm-gc @@ -0,0 +1,52 @@ +#!/bin/sh + +# garbage collect a package database +# flags to skip phases + +db=${1:-${ZPMDB:-/var/lib/zpm/local.db}} + +if [ -z "$db" ]; then + echo must specify database file + exit 1 +fi + +ZPMDB=$db +export ZPMDB + +# check for incorrect hash file content + +# remove orphaned elf info + +# remove failed packages +for pkg in $(zpm list -s failed); do + zpm log -i -a 'gc removing' -t "$pkg" + zpm rmpackage "$pkg" +done + +for pkg in $(zpm list -s dryrun); do + zpm log -i -a 'gc removing' -t "$pkg" + zpm rmpackage "$pkg" +done + +# remove incomplete packages + +# remove outdated packages, unless preserved +# TODO need 'rstatus' flag + +# remove removed packages, unless preserved + +# remove orphaned rows in files table +# references in packagefiles, notes, scripts, possibly others + +# remove old logs, given by date + +# remove acked notes + +# remove install history by date + +# remove history for removed packages + +# remove command history by date + +# compactify the database file +