The --symlink option did not put the right links in place when --local-dir was specified as a relative directory.
2006-11-12 Bruno Haible <[EMAIL PROTECTED]> * gnulib-tool (func_ln): New function. (func_ln_if_changed, func_create_testdir): Use it instead of "ln -s". *** gnulib-20061108-modified/gnulib-tool 2006-11-12 21:46:42.000000000 +0100 --- gnulib-20061108/gnulib-tool 2006-11-13 02:33:17.000000000 +0100 *************** *** 271,291 **** } fi - # func_ln_if_changed SRC DEST - # Like ln -s, but avoids munging timestamps if the link is correct. - func_ln_if_changed () - { - if test $# -ne 2; then - echo "usage: func_ln_if_changed SRC DEST" >&2 - fi - if test -L "$2" && test "$1" = "`func_readlink "$2"`"; then - : - else - rm -f "$2" - ln -s "$1" "$2" - fi - } - # func_relativize DIR1 DIR2 # computes a relative pathname RELDIR such that DIR1/RELDIR = DIR2. # Input: --- 273,278 ---- *************** *** 379,384 **** --- 366,410 ---- done } + # func_ln SRC DEST + # Like ln -s, except that SRC is given relative to the current directory (or + # absolute), not given relative to the directory of DEST. + func_ln () + { + case "$1" in + /*) + ln -s "$1" "$2" ;; + *) # SRC is relative. + case "$2" in + /*) + ln -s "`pwd`/$1" "$2" ;; + *) # DEST is relative too. + ln_destdir=`echo "$2" | sed -e 's,[^/]*$,,'` + test -n "$ln_destdir" || ln_destdir="." + func_relativize "$ln_destdir" "$1" + ln -s "$reldir" "$2" + ;; + esac + ;; + esac + } + + # func_ln_if_changed SRC DEST + # Like func_ln, but avoids munging timestamps if the link is correct. + func_ln_if_changed () + { + if test $# -ne 2; then + echo "usage: func_ln_if_changed SRC DEST" >&2 + fi + ln_target=`func_readlink "$2"` + if test -L "$2" && test "$1" = "$ln_target"; then + : + else + rm -f "$2" + func_ln "$1" "$2" + fi + } + # Command-line option processing. # Removes the OPTIONS from the arguments. Sets the variables: # - mode list or import or create-testdir or create-megatestdir *************** *** 2246,2252 **** if test -z "$symbolic"; then cp -p "$lookedup_file" "$testdir/$g" else ! ln -s "$lookedup_file" "$testdir/$g" fi fi done --- 2246,2252 ---- if test -z "$symbolic"; then cp -p "$lookedup_file" "$testdir/$g" else ! func_ln "$lookedup_file" "$testdir/$g" fi fi done