[pacman-dev] [PATCH] repo-add; add option to remove existing package files from disk
Allan McRae
allan at archlinux.org
Mon Jun 3 01:09:56 EDT 2013
On 03/06/13 15:05, Phillip Smith wrote:
> From: Phillip Smith <fukawi2 at gmail.com>
>
> When maintaining a custom repo, often it is undesirable to retain older
> versions of packages. This patch adds the --remove option to remove the
> current package file and it's signature from disk before adding the new
> one to the database. Documentation is also updated. This is an optional
> flag and default behaviour (leaving ondisk files alone) is not changed.
>
> Signed-off-by: Phillip Smith <fukawi2 at gmail.com>
> ---
>
> Updated man page and in-line help text to incorporate suggestions from Allan.
>
Ack. I've fixed your whitespace issue (spaces instead of tabs) and
pushed to my working branch.
Allan
> doc/repo-add.8.txt | 4 ++++
> scripts/repo-add.sh.in | 12 ++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/doc/repo-add.8.txt b/doc/repo-add.8.txt
> index 049195a..084da5f 100644
> --- a/doc/repo-add.8.txt
> +++ b/doc/repo-add.8.txt
> @@ -75,6 +75,10 @@ repo-add Options
> Only add packages that are not already in the database. Warnings will be
> printed upon detection of existing packages, but they will not be re-added.
>
> +*-R, \--remove*::
> + Remove old package files from the disk when updating their entry in the
> + database.
> +
> See Also
> --------
> linkman:makepkg[8], linkman:pacman[8], linkman:pkgdelta[8]
> diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
> index 4470dd0..a9a4499 100644
> --- a/scripts/repo-add.sh.in
> +++ b/scripts/repo-add.sh.in
> @@ -31,6 +31,7 @@ declare -r confdir='@sysconfdir@'
> QUIET=0
> DELTA=0
> ONLYADDNEW=0
> +RMEXISTING=0
> WITHFILES=0
> SIGN=0
> VERIFY=0
> @@ -58,6 +59,7 @@ Multiple packages to add can be specified on the command line.\n")"
> printf -- "$(gettext "Options:\n")"
> printf -- "$(gettext " -d, --delta generate and add delta for package update\n")"
> printf -- "$(gettext " -n, --new only add packages that are not already in the database\n")"
> + printf -- "$(gettext " -R, --remove remove package file from disk when updating database entry\n")"
> printf -- "$(gettext " -f, --files update database's file list\n")"
> elif [[ $cmd == "repo-remove" ]] ; then
> printf -- "$(gettext "Usage: repo-remove [options] <path-to-db> <packagename|delta> ...\n")"
> @@ -304,6 +306,15 @@ db_write_entry() {
> local oldfilename=$(grep -A1 FILENAME "$pkgentry/desc" | tail -n1)
> local oldfile="$(dirname "$1")/$oldfilename"
> fi
> + elif (( RMEXISTING )); then
> + # only remove existing package if we're not doing deltas
> + pkgentry=$(find_pkgentry "$pkgname")
> + if [[ -n $pkgentry ]]; then
> + local oldfilename="$(sed -n '/^%FILENAME%$/ {n;p;q;}' "$pkgentry/desc")"
> + local oldfile="$(dirname "$1")/$oldfilename"
> + msg2 "$(gettext "Removing existing package '%s'")" "$oldfilename"
> + rm -f ${oldfile} ${oldfile}.sig
> + fi
> fi
> fi
>
> @@ -611,6 +622,7 @@ while (( $# )); do
> -q|--quiet) QUIET=1;;
> -d|--delta) DELTA=1;;
> -n|--new) ONLYADDNEW=1;;
> + -R|--remove) RMEXISTING=1;;
> -f|--files) WITHFILES=1;;
> --nocolor) USE_COLOR='n';;
> -s|--sign)
>
More information about the pacman-dev
mailing list