repo-add: Create/modify files databases

Implements FS#11302.

Dan: updated docs to not reference pkgfile.

Signed-off-by: PyroPeter <abi1789@googlemail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
PyroPeter 2011-01-11 23:04:20 +01:00 committed by Dan McGee
parent 7ce90bb135
commit eda4d9ec00
2 changed files with 21 additions and 5 deletions

View file

@ -10,7 +10,7 @@ repo-add - package database maintenance utility
Synopsis Synopsis
-------- --------
repo-add [-q] <path-to-db> <package1> [<package2> ...] repo-add [-f] [-q] <path-to-db> <package1> [<package2> ...]
repo-remove [-q] <path-to-db> <packagename> [<packagename2> ...] repo-remove [-q] <path-to-db> <packagename> [<packagename2> ...]
@ -30,11 +30,15 @@ on the command line.
Options Options
------- -------
*-f, \--files*::
Tells repo-add also to create and include a list of the files in the
specified packages. This is useful for creating databases listing all files
in a given sync repository for tools that may use this information.
*-q, \--quiet*:: *-q, \--quiet*::
Force this program to keep quiet and run silent except for warning and Force this program to keep quiet and run silent except for warning and
error messages. error messages.
See Also See Also
-------- --------
linkman:makepkg[8], linkman:pacman[8] linkman:makepkg[8], linkman:pacman[8]

View file

@ -29,6 +29,7 @@ confdir='@sysconfdir@'
QUIET=0 QUIET=0
DELTA=0 DELTA=0
WITHFILES=0
REPO_DB_FILE= REPO_DB_FILE=
LOCKFILE= LOCKFILE=
CLEAN_LOCK=0 CLEAN_LOCK=0
@ -61,7 +62,7 @@ error() {
# print usage instructions # print usage instructions
usage() { usage() {
printf "repo-add, repo-remove (pacman) %s\n\n" "$myver" printf "repo-add, repo-remove (pacman) %s\n\n" "$myver"
printf "$(gettext "Usage: repo-add [-d] [-q] <path-to-db> <package|delta> ...\n")" printf "$(gettext "Usage: repo-add [-d] [-f] [-q] <path-to-db> <package|delta> ...\n")"
printf "$(gettext "Usage: repo-remove [-q] <path-to-db> <packagename|delta> ...\n\n")" printf "$(gettext "Usage: repo-remove [-q] <path-to-db> <packagename|delta> ...\n\n")"
printf "$(gettext "\ printf "$(gettext "\
repo-add will update a package database by reading a package file.\n\ repo-add will update a package database by reading a package file.\n\
@ -77,6 +78,8 @@ and errors.\n\n")"
Use the -d/--delta flag to automatically generate and add a delta file\n\ Use the -d/--delta flag to automatically generate and add a delta file\n\
between the old entry and the new one, if the old package file is found\n\ between the old entry and the new one, if the old package file is found\n\
next to the new one.\n\n")" next to the new one.\n\n")"
printf "$(gettext "\
Use the -f/--files flag to update a database including file entries.\n\n")"
echo "$(gettext "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz")" echo "$(gettext "Example: repo-add /path/to/repo.db.tar.gz pacman-3.0.0.pkg.tar.gz")"
echo "$(gettext "Example: repo-remove /path/to/repo.db.tar.gz kernel26")" echo "$(gettext "Example: repo-remove /path/to/repo.db.tar.gz kernel26")"
} }
@ -290,14 +293,22 @@ db_write_entry()
popd >/dev/null popd >/dev/null
popd >/dev/null popd >/dev/null
# create files file if wanted
if (( WITHFILES )); then
msg2 "$(gettext "Creating 'files' db entry...")"
local files_path="$tmpdir/$pkgname-$pkgver/files"
echo "%FILES%" >$files_path
bsdtar --exclude='.*' -tf "$pkgfile" >>$files_path
fi
# create a delta file # create a delta file
if [ -n "$oldfilename" -a -f "$oldfile" ]; then if [ -n "$oldfilename" -a -f "$oldfile" ]; then
delta=$(pkgdelta -q $oldfile $1) delta=$(pkgdelta -q $oldfile $1)
if [ -f "$delta" ]; then if [ -f "$delta" ]; then
db_write_delta $delta db_write_delta $delta
else
warning "$(gettext "Old package file not found : %s")" "$oldfilename"
fi fi
else
warning "$(gettext "Old package file not found : %s")" "$oldfilename"
fi fi
return 0 return 0
@ -472,6 +483,7 @@ for arg in "$@"; do
case "$arg" in case "$arg" in
-q|--quiet) QUIET=1;; -q|--quiet) QUIET=1;;
-d|--delta) DELTA=1;; -d|--delta) DELTA=1;;
-f|--files) WITHFILES=1;;
*) *)
if [[ -z $REPO_DB_FILE ]]; then if [[ -z $REPO_DB_FILE ]]; then
REPO_DB_FILE="$arg" REPO_DB_FILE="$arg"