[pacman-dev] [PATCH] repo-add: try symlink, then hardlink, then copy for DB file

Andres P aepd87 at gmail.com
Thu Jun 24 13:56:41 EDT 2010


On Thu, Jun 24, 2010 at 10:48 AM, Dan McGee <dan at archlinux.org> wrote:
> We were seeing some issues when trying to create our new database alias
> using symlinks on certain filesystems (see FS#19907). Have a fallback method
> in place where we first try a symlink, then a hard link, then just copy the
> database if all else fails.
>
> Signed-off-by: Dan McGee <dan at archlinux.org>
> ---
>  scripts/repo-add.sh.in |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
> index 7bde600..2838f81 100644
> --- a/scripts/repo-add.sh.in
> +++ b/scripts/repo-add.sh.in
> @@ -487,7 +487,10 @@ if (( success )); then
>
>        [[ -f $REPO_DB_FILE ]] && mv -f "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
>        [[ -f $tmpdir/$filename ]] && mv "$tmpdir/$filename" "$REPO_DB_FILE"
> -       ln -sf "$REPO_DB_FILE" "${REPO_DB_FILE%.tar.*}"
> +       dblink="${REPO_DB_FILE%.tar.*}"
> +       ln -sf "$REPO_DB_FILE" "$dblink" 2>/dev/null || \
> +               ln -f "$REPO_DB_FILE" "$dblink" 2>/dev/null || \
> +               cp "$REPO_DB_FILE" "$dblink"

Let's make it less constipated looking and have a fatal warning:

if ! 2>dev/null \
    {
      ls -sf "$REPO_DB_FILE" "$dblink" ||
      ln -f "$REPO_DB_FILE" "$dblink   ||
      cp "$REPO_DB_FILE" "$dblink"     ||
    }
then
    error "$(gettext "Could not link nor copy database to '%s'.")" \
        "$dblink"
    exit 1
fi

Andres P

>  else
>        msg "$(gettext "No packages modified, nothing to do.")"
>        exit 1
> --
> 1.7.1
>
>
>


More information about the pacman-dev mailing list