From: Paul Eggert Date: Mon, 26 Dec 2011 08:34:13 +0000 (-0800) Subject: AS_LN_S: fall back on 'cp -pR' (not 'cp -p') if 'ln -s' fails X-Git-Tag: v2.68b~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=17ea0df46f819a9b64c21151983a5c5b8561fefb;p=thirdparty%2Fautoconf.git AS_LN_S: fall back on 'cp -pR' (not 'cp -p') if 'ln -s' fails This works better for symlinks to directories. Problem reported by Eli Zaretskii via Werner Lemberg in . * NEWS: * doc/autoconf.texi (Particular Programs): Document this. * lib/m4sugar/m4sh.m4 (_AS_LN_S_PREPARE): Implement this. --- diff --git a/ChangeLog b/ChangeLog index 0f67f890..25799b28 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2011-12-26 Paul Eggert + + AS_LN_S: fall back on 'cp -pR' (not 'cp -p') if 'ln -s' fails + This works better for symlinks to directories. + Problem reported by Eli Zaretskii via Werner Lemberg in + . + * NEWS: + * doc/autoconf.texi (Particular Programs): Document this. + * lib/m4sugar/m4sh.m4 (_AS_LN_S_PREPARE): Implement this. + 2011-12-07 Paul Eggert AC_LANG_BOOL_COMPILE_TRY(C): port to g++ with warnings diff --git a/NEWS b/NEWS index 858601a4..daec2560 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,9 @@ GNU Autoconf NEWS - User visible changes. ** Macros +- AC_PROG_LN_S and AS_LN_S now fall back on 'cp -pR' (not 'cp -p') if 'ln -s' + does not work. This works better for symlinks to directories. + - New macro AC_HEADER_CHECK_STDBOOL. - New and updated macros for Fortran support: diff --git a/doc/autoconf.texi b/doc/autoconf.texi index d7d2231c..0354dfb5 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -4137,7 +4137,7 @@ The result of this test can be influenced by setting the variable If @samp{ln -s} works on the current file system (the operating system and file system support symbolic links), set the output variable @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set -@code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}. +@code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -pR}. If you make a link in a directory other than the current directory, its meaning depends on whether @samp{ln} or @samp{ln -s} is used. To safely diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4 index 1ff17052..7195618a 100644 --- a/lib/m4sugar/m4sh.m4 +++ b/lib/m4sugar/m4sh.m4 @@ -1178,7 +1178,7 @@ _m4_popdef([AS_MESSAGE_LOG_FD], [AS_ERROR])])# _AS_LINENO_PREPARE # Don't use conftest.sym to avoid file name issues on DJGPP, where this # would yield conftest.sym.exe for DJGPP < 2.04. And don't use `conftest' # as base name to avoid prohibiting concurrency (e.g., concurrent -# config.statuses). On read-only media, assume 'cp -p' and hope we +# config.statuses). On read-only media, assume 'cp -pR' and hope we # are just running --help anyway. m4_defun([_AS_LN_S_PREPARE], [rm -f conf$$ conf$$.exe conf$$.file @@ -1194,16 +1194,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null