On Tue, Jun 3, 2008 at 4:53 PM, Antonio Huete Jimenez <ahuete.devel@gmail.com> wrote:
repo-add uses readlink -f in linux to find out file's real path. readlink is part of coreutils. I've found that readlink in BSD don't support -f option so we need to use realpath instead.
Attached you can find a mini-patch.
Please use inline patches next time so we can more easily comment inline, thanks. You may want to even read up on using git-send-email. I've marked my comments below with **** since I don't have the benefit of reply markers. Besides what I mention below, I think this patch looks OK and we can apply this. I would also ask that you add it to repo-remove and replace the use of readlink there as well with a call to fullpath.
From b1142fa6d3b182161d6348bf0942eb3b94f40e3a Mon Sep 17 00:00:00 2001 From: Antonio Huete Jimenez <ahuete.devel@gmail.com> Date: Tue, 3 Jun 2008 00:26:06 +0200 Subject: [PATCH] Let repo-add to use realpath instead readlink in BSD environments.
--- po/es.po | 3 +++ scripts/repo-add.sh.in | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/po/es.po b/po/es.po index e53b92b..5a98562 100644 --- a/po/es.po +++ b/po/es.po @@ -1780,6 +1780,9 @@ msgstr "%s no fue encontrado" msgid "could not find %s-%s-%s-%s%s - aborting" msgstr "No se pudo encontrar %s-%s-%s-%s%s - abortando" +msgid "Couldn't use neither realpath nor readlink to canonicalize." +msgstr "Fallo al encontrar realpath o readlink." + #~ msgid "error: failed to add target '%s' (%s)" #~ msgstr "error: fallo al procesar '%s' (%s)" diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index e90f0e8..9b77e39 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -31,6 +31,18 @@ REPO_DB_FILE="" # ensure we have a sane umask set umask 0022 +fullpath() { + if type -p realpath; then + realpath "$@" + echo soy de realpath ****Hmm? Debugging stuff? + elif type -p readlink; then + readlink -f "$@" + echo soy de readlink + else + error "$(gettext "Couldn't use neither realpath nor readlink to canonicalize.")" ***Either the realpath or readlink utility is required! and probaly also add an exit 1 here? + fi +} + msg() { [ $QUIET -ne 0 ] && return local mesg=$1; shift @@ -104,7 +116,7 @@ write_list_entry() { db_write_delta() { # blank out all variables and set deltafile - local deltafile=$(readlink -f "$1") + local deltafile=$(fullpath "$1") local filename=$(basename "$deltafile") local deltavars pkgname fromver tover arch csize md5sum @@ -135,7 +147,7 @@ db_write_delta() db_write_entry() { # blank out all variables and set pkgfile - local pkgfile=$(readlink -f "$1") + local pkgfile=$(fullpath "$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 \ @@ -304,7 +316,7 @@ 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") + REPO_DB_FILE=$(fullpath -f "$arg") **** You left the -f arg in here by accident I'm assuming. if ! test_repo_db_file; then error "$(gettext "Repository file '%s' is not a proper pacman database.")" "$REPO_DB_FILE" exit 1 -- 1.5.5.1