summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2010-06-24 10:06:36 -0500
committerDan McGee <dan@archlinux.org>2010-06-24 10:06:36 -0500
commit21d5dedfddb290da4e9beafe3e28abcdee1b7091 (patch)
tree781edea2b3cc514dac463e2d4ca002e4a720b1da
parent6f4f9c1b66ed859b3679d70e15c003ab4907b823 (diff)
downloadpacman-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.in5
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