From 1e4c00932efc826077e2b284d15394cfbf8c895b Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Thu, 2 Jun 2011 12:07:44 +0200 Subject: [PATCH] sde-build: turn all absolute symlinks into relative --- lib/functions.in | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/functions.in b/lib/functions.in index e158cdb..a63d3b2 100644 --- a/lib/functions.in +++ b/lib/functions.in @@ -403,16 +403,21 @@ postflist_dirty_symlinks() { if [ "${dfn:0:1}" = '/' ]; then local dfn2="${dfn#$root}" if [ "$dfn2" != "$dfn" ]; then - echo_warning "dirty symlink: $fn" + echo_warning "dirty symlink: $fn (fixing)" dfn="$dfn2" else - dfn2= + echo_warning "absolute symlink: $fn (fixing)" fi - if [ ! -e "$root$dfn" ]; then + dfn2=$(relative_path "$dfn" "/$fn") + if [ -z "$dfn2" ]; then + echo_warning "invalid symlink: $fn (can't fix)" + continue + fi + ln -snf "$dfn2" "$ffn" + + if [ ! -e "$ffn" ]; then echo_warning "broken absolute symlink: $fn" - elif [ -z "$dfn2" ]; then # haven't said it's dirty already - echo_warning "absolute symlink: $fn" fi elif [ ! -e "$ffn" ]; then echo_warning "broken symlink: $fn"