diff options
author | Dan McGee <dan@archlinux.org> | 2010-06-24 17:06:36 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2010-06-24 17:06:36 +0200 |
commit | 21d5dedfddb290da4e9beafe3e28abcdee1b7091 (patch) | |
tree | 781edea2b3cc514dac463e2d4ca002e4a720b1da | |
parent | 6f4f9c1b66ed859b3679d70e15c003ab4907b823 (diff) | |
download | pacman-21d5dedfddb290da4e9beafe3e28abcdee1b7091.tar.gz pacman-21d5dedfddb290da4e9beafe3e28abcdee1b7091.tar.xz |
repo-add: try symlink, then hardlink, then copy for DB file
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@archlinux.org>
-rw-r--r-- | 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 7bde6007..2838f817 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" else msg "$(gettext "No packages modified, nothing to do.")" exit 1 |