repo-*: allow use of readlink or realpath
Linux coreutils provides readlink, and BSD systems tend to have realpath available. Both commands provide similar functionality but of course have different names. Add a check for either and use what is available. While doing this, also unify some of the differences that have cropped up between repo-add and repo-remove. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
c11bdf19b1
commit
89819b3f92
2 changed files with 33 additions and 10 deletions
|
@ -103,8 +103,8 @@ write_list_entry() {
|
|||
# arg1 - path to delta
|
||||
db_write_delta()
|
||||
{
|
||||
# blank out all variables and set deltafile
|
||||
local deltafile=$(readlink -f "$1")
|
||||
# blank out all variables and set deltafile to absolute path
|
||||
local deltafile=$($realpath "$1")
|
||||
local filename=$(basename "$deltafile")
|
||||
local deltavars pkgname fromver tover arch csize md5sum
|
||||
|
||||
|
@ -134,8 +134,8 @@ db_write_delta()
|
|||
# arg1 - path to package
|
||||
db_write_entry()
|
||||
{
|
||||
# blank out all variables and set pkgfile
|
||||
local pkgfile=$(readlink -f "$1")
|
||||
# blank out all variables and set pkgfile to an absolute path
|
||||
local pkgfile=$($realpath "$1")
|
||||
local pkgname pkgver pkgdesc url builddate packager csize size \
|
||||
group depend backup license replaces provides conflict force \
|
||||
_groups _depends _backups _licenses _replaces _provides _conflicts \
|
||||
|
@ -278,6 +278,16 @@ if [ $# -lt 2 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# check for and store the name of a realpath-like program
|
||||
if [ $(type -t realpath) ]; then
|
||||
realpath='realpath'
|
||||
elif [ $(type -t readlink) ]; then
|
||||
realpath='readlink -f'
|
||||
else
|
||||
error "$(gettext "Either realpath or readlink are required by repo-add.")"
|
||||
exit 1 # $E_MISSING_PROGRAM
|
||||
fi
|
||||
|
||||
# source system and user makepkg.conf
|
||||
if [ -r "$confdir/makepkg.conf" ]; then
|
||||
source "$confdir/makepkg.conf"
|
||||
|
@ -304,7 +314,8 @@ for arg in "$@"; do
|
|||
elif [ "$arg" == "--quiet" -o "$arg" == "-q" ]; then
|
||||
QUIET=1
|
||||
elif [ -z "$REPO_DB_FILE" ]; then
|
||||
REPO_DB_FILE=$(readlink -f "$arg")
|
||||
# store absolute path to repo DB
|
||||
REPO_DB_FILE=$($realpath "$arg")
|
||||
if ! test_repo_db_file; then
|
||||
error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE"
|
||||
exit 1
|
||||
|
@ -331,7 +342,7 @@ done
|
|||
|
||||
# if all operations were a success, re-zip database
|
||||
if [ $success -eq 1 ]; then
|
||||
msg "$(gettext "Creating updated database file %s")" "$REPO_DB_FILE"
|
||||
msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE"
|
||||
pushd "$gstmpdir" 2>&1 >/dev/null
|
||||
|
||||
if [ -n "$(ls)" ]; then
|
||||
|
|
|
@ -126,6 +126,16 @@ if [ $# -lt 2 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# check for and store the name of a realpath-like program
|
||||
if [ $(type -t realpath) ]; then
|
||||
realpath='realpath'
|
||||
elif [ $(type -t readlink) ]; then
|
||||
realpath='readlink -f'
|
||||
else
|
||||
error "$(gettext "Either realpath or readlink are required by repo-add.")"
|
||||
exit 1 # $E_MISSING_PROGRAM
|
||||
fi
|
||||
|
||||
# source system and user makepkg.conf
|
||||
if [ -r "$confdir/makepkg.conf" ]; then
|
||||
source "$confdir/makepkg.conf"
|
||||
|
@ -149,9 +159,10 @@ for arg in "$@"; do
|
|||
if [ "$arg" == "--quiet" -o "$arg" == "-q" ]; then
|
||||
QUIET=1
|
||||
elif [ -z "$REPO_DB_FILE" ]; then
|
||||
REPO_DB_FILE=$(readlink -f "$arg")
|
||||
# store absolute path to repo DB
|
||||
REPO_DB_FILE=$($realpath "$arg")
|
||||
if ! test_repo_db_file; then
|
||||
error "$(gettext "Repository file '%s' is not a proper pacman database.")\n" "$REPO_DB_FILE"
|
||||
error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE"
|
||||
exit 1
|
||||
elif [ -f "$REPO_DB_FILE" ]; then
|
||||
msg "$(gettext "Extracting database to a temporary location...")"
|
||||
|
@ -170,12 +181,13 @@ done
|
|||
|
||||
# if all operations were a success, re-zip database
|
||||
if [ $success -eq 1 ]; then
|
||||
msg "$(gettext "Creating updated database file '%s'...")" "$REPO_DB_FILE"
|
||||
msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE"
|
||||
pushd "$gstmpdir" 2>&1 >/dev/null
|
||||
|
||||
if [ -n "$(ls)" ]; then
|
||||
[ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old"
|
||||
[ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
|
||||
|
||||
case "$DB_COMPRESSION" in
|
||||
gz) TAR_OPT="z" ;;
|
||||
bz2) TAR_OPT="j" ;;
|
||||
|
@ -194,6 +206,6 @@ else
|
|||
fi
|
||||
|
||||
# remove the temp directory used to unzip
|
||||
[ -d "$gstmpdir" ] && rm -rf $gstmpdir
|
||||
[ -d "$gstmpdir" ] && rm -rf "$gstmpdir"
|
||||
|
||||
# vim: set ts=2 sw=2 noet:
|
||||
|
|
Loading…
Add table
Reference in a new issue