From: Nathan Wagner Date: Fri, 26 Oct 2018 05:20:25 +0000 (+0000) Subject: add gc script X-Git-Tag: v0.2.16~54 X-Git-Url: https://pd.if.org/git/?p=zpackage;a=commitdiff_plain;h=c5ae43ca2ab5b4a323e6154d0e08c629cc5a5e1d add gc script --- diff --git a/Makefile b/Makefile index d3e7622..0190c53 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ ZPKGBIN=zpm-addfile zpm-extract zpm-init zpm-vercmp zpm-stat zpm-hash \ SCRIPTS=zpm zpm-install zpm-merge zpm-list zpm-preserve zpm-test zpm-log \ zpm-contents zpm-uninstall zpm-pathmod zpm-rmpackage zpm-newpackage \ - zpm-pkg zpm-add zpm-setscript zpm-pkgfile + zpm-pkg zpm-add zpm-setscript zpm-pkgfile zpm-gc COMPILED=$(ZPKGBIN) PROGRAMS=$(SCRIPTS) $(COMPILED) 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 + diff --git a/zpm-install b/zpm-install index edd8405..3589169 100755 --- a/zpm-install +++ b/zpm-install @@ -6,7 +6,7 @@ warn() { die() { echo $* 1>&2 - zpm log -i -a 'aborting install' -p "$pkgid" "$*" + zpm log -i -a 'aborting install' -t "$pkgid" "$*" exit 1 }