Rely on the shell's built-in 'pwd' command.
Commit Message
AFAIK insisting on /bin/pwd is unnecessary nowadays. Autoconf-generated
scripts have been using the shell’s built-in ‘pwd’ for a long time.
Thanks in advance,
Ludo’.
ChangeLog:
2015-11-19 Ludovic Courtès <ludo@gnu.org>
* configure.ac: Use 'pwd' instead of '/bin/pwd'.
* configure: Regenerate.
* io/ftwtest-sh: Use 'pwd' instead of '/bin/pwd'.
* scripts/rellns-sh: Likewise. Remove 'pwd' variable.
Comments
On Thu, 19 Nov 2015, Ludovic Courtès wrote:
> AFAIK insisting on /bin/pwd is unnecessary nowadays. Autoconf-generated
> scripts have been using the shell’s built-in ‘pwd’ for a long time.
The point of at least some of these uses of pwd is to get the physical
directory with symlinks resolved, not the shell's notion of the directory
that may involve symlinks. It would need to be pwd -P, if that's
sufficiently portable. (Really io/ftwtest-sh should be running pwd on the
test host not the build system, but that would require a new addition to
the set of test-wrapper makefile variables.)
Joseph Myers <joseph@codesourcery.com> skribis:
> On Thu, 19 Nov 2015, Ludovic Courtès wrote:
>
>> AFAIK insisting on /bin/pwd is unnecessary nowadays. Autoconf-generated
>> scripts have been using the shell’s built-in ‘pwd’ for a long time.
>
> The point of at least some of these uses of pwd is to get the physical
> directory with symlinks resolved, not the shell's notion of the directory
> that may involve symlinks. It would need to be pwd -P, if that's
> sufficiently portable.
It’s not clear to which of these uses want the canonical directory
name. Which ones did you have in mind?
AFAIK ‘pwd -P’ is sufficiently potable (definitely works with Bash and
Dash.)
Thanks,
Ludo’.
On Fri, 20 Nov 2015, Ludovic Courtès wrote:
> Joseph Myers <joseph@codesourcery.com> skribis:
>
> > On Thu, 19 Nov 2015, Ludovic Courtès wrote:
> >
> >> AFAIK insisting on /bin/pwd is unnecessary nowadays. Autoconf-generated
> >> scripts have been using the shell’s built-in ‘pwd’ for a long time.
> >
> > The point of at least some of these uses of pwd is to get the physical
> > directory with symlinks resolved, not the shell's notion of the directory
> > that may involve symlinks. It would need to be pwd -P, if that's
> > sufficiently portable.
>
> It’s not clear to which of these uses want the canonical directory
> name. Which ones did you have in mind?
I think all of those uses need the canonical name.
---
configure | 2 +-
configure.ac | 2 +-
io/ftwtest-sh | 8 ++++----
scripts/rellns-sh | 18 +++++-------------
4 files changed, 11 insertions(+), 19 deletions(-)
@@ -3228,7 +3228,7 @@ if test $libc_cv_cxx_link_ok != yes; then :
CXX=
fi
-if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
+if test "`cd $srcdir; pwd`" = "`pwd`"; then
as_fn_error $? "you must configure in a separate build directory" "$LINENO" 5
fi
@@ -80,7 +80,7 @@ LDFLAGS="$old_LDFLAGS"
AC_LANG_POP([C++])])
AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
-if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
+if test "`cd $srcdir; pwd`" = "`pwd`"; then
AC_MSG_ERROR([you must configure in a separate build directory])
fi
@@ -135,7 +135,7 @@ $testprogram --chdir $tmpdir |
sort > $testout
# perhaps $tmp involves some symlinks...
-tmpreal=`cd $tmp; /bin/pwd 2>/dev/null || /usr/bin/pwd`
+tmpreal=`cd $tmp; pwd 2>/dev/null`
cat <<EOF | cmp $testout - || exit 1
base = "$tmp/", file = "ftwtest.d", flag = FTW_D, cwd = $tmpreal, level = 0
@@ -153,7 +153,7 @@ base = "$tmp/ftwtest.d/foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd
EOF
rm $testout
-curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd`
+curwd=`pwd 2>/dev/null`
cd "$tmp"
$testprogram --chdir ftwtest.d |
sort > $testout
@@ -175,7 +175,7 @@ base = "ftwtest.d/foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd = $tm
EOF
rm $testout
-curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd`
+curwd=`pwd`
cd "$tmp"
$testprogram --chdir ftwtest.d/. |
sort > $testout
@@ -197,7 +197,7 @@ base = "ftwtest.d/./foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd = $
EOF
rm $testout
-curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd`
+curwd=`pwd 2>/dev/null`
cd "$tmp"
$testprogram --chdir ftwtest.d/foo/lvl1/link@1 |
sort > $testout
@@ -30,23 +30,15 @@ if test $# -ne 2; then
exit 1
fi
-if test -x /bin/pwd; then
- pwd=/bin/pwd
-elif test -x /usr/bin/pwd; then
- pwd=/usr/bin/pwd
-else
- pwd='pwd'
-fi
-
# Make both paths absolute.
if test -d $1; then
- to=`cd $1 && $pwd`
+ to=`cd $1 && pwd`
else
temp=`echo $1 | sed 's%/*[^/]*$%%'`
if test -z "$temp"; then
- to=`$pwd`
+ to=`pwd`
else
- to=`cd $temp && $pwd`
+ to=`cd $temp && pwd`
fi
to="$to/`echo $1 | sed 's%.*/\([^/][^/]*\)$%\1%'`"
fi
@@ -59,9 +51,9 @@ else
fi
if test -z "$from"; then
- from=`$pwd | sed 's%^/%%'`
+ from=`pwd | sed 's%^/%%'`
else
- from=`cd $from && $pwd | sed 's%^/%%'`
+ from=`cd $from && pwd | sed 's%^/%%'`
fi
while test -n "$to" && test -n "$from"; do
--
2.6.3