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

Dan McGee dan at archlinux.org
Thu Jun 24 11:18:20 EDT 2010


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"
 else
 	msg "$(gettext "No packages modified, nothing to do.")"
 	exit 1
-- 
1.7.1



More information about the pacman-dev mailing list