Index: ChangeLog
===================================================================
RCS file: /cvsroot/autoconf/autoconf/ChangeLog,v
retrieving revision 1.2847
diff -u -r1.2847 ChangeLog
--- ChangeLog 24 Apr 2006 05:54:54 -0000 1.2847
+++ ChangeLog 24 Apr 2006 12:29:35 -0000
@@ -3,14 +3,6 @@
* doc/autoconf.texi (Run Time): Document the exit status situation
with more accuracy and detail.
- * NEWS: Remove mention of AS_VAR_SET_BASENAME and AS_VAR_SET_DIRNAME.
- * doc/autoconf.texi (Programming in M4sh): Remove mention of
- AS_VAR_SET_BASENAME, AS_VAR_SET_DIRNAME, and AS_BASENAME.
- We have to keep AS_DIRNAME since it was part of a stable Autoconf,
- but AS_BASENAME doesn't have to be supported.
-
- * lib/m4sugar/m4sh.m4 (AS_BASENAME, AS_DIRNAME): Bring these back.
-
2006-04-23 Ralf Wildenhues
* doc/autoconf.texi (Introduction): The GNU Autoconf Macro
@@ -20,39 +12,17 @@
2006-04-22 Paul Eggert
- * NEWS: Remove AS_DIRNAME and AS_BASENAME, replacing them with
- AS_VAR_SET_DIRNAME and AS_VAR_SET_BASENAME.
- * doc/autoconf.texi (Programming in M4sh): Document this. All uses
- changed. The newer interfaces are more reliable, as they allow
- implementations that handle trailing newline correctly. For now,
- we're in a freeze, so I did not include the more-reliable
- implementations, but I wanted to correct the interface before 2.60
- goes out.
- * lib/m4sugar/m4sh.m4 (_AS_DETECT_REQUIRED): Renamed from
- AS_DETECT_REQUIRED. All uses changed.
- (_AS_DETECT_SUGGESTED): Renamed from AS_DETECT_SUGGESTED.
- All uses changed.
- (_AS_DETECT_BETTER_SHELL): Put ;; at the end of a case.
- (_AS_BASENAME): Renamed from AS_BASENAME. All uses changed.
- Use "basename --" to protect against leading "-".
- (_AS_BASENAME_EXPR): Renamed from AS_BASENAME_EXPR. All uses changed.
- (_AS_BASENAME_SED): Renamed from AS_BASENAME_SED. All uses changed.
- (_AS_BASENAME_PREPARE): Reject implementations that cannot handle "--".
- (_AS_DIRNAME_PREPARE): Likewise.
- (_AS_DIRNAME): Renamed from AS_DIRNAME. All uses changed.
- (_AS_DIRNAME_EXPR): Renamed from AS_DIRNAME_EXPR. All uses changed.
- (_AS_DIRNAME_SED): Renamed from AS_DIRNAME_SED. All uses changed.
- Use "dirname --".
- (AS_VAR_SET_BASENAME, AS_VAR_SET_DIRNAME): New macros.
- * tests/m4sh.at (AS_VAR_SET_DIRNAME): Renamed from AS_DIRNAME.
- Test the new API. Don't test internals, since they're probably
- going to change anyway.
- (AS_VAR_SET_BASENAME): Likewise, renamed from AS_BASENAME.
-
- * bin/autoconf.as: Don't use AS_BASENAME or AS_DIRNAME. This
- removes a bootstrapping problem with the changes described above.
- The AS_DIRNAME part wasn't used, anyway, and the AS_BASENAME
- part can be done portably without all the deep Autoconf magic.
+ Prepare for deprecation of AS_BASENAME and AS_DIRNAME.
+
+ * doc/autoconf.texi (Programming in M4sh): Comment out the
+ documentation of AS_BASENAME, for now.
+ (Shell Substitutions): Do not use AS_DIRNAME in an example.
+ (Limitations of Builtins) : Do not refer to
+ AS_BASENAME.
+ * bin/autoconf.as (dir): Remove the unused variable.
+
+ * lib/m4sugar/m4sh.m4 (_AS_DETECT_BETTER_SHELL): Put ;; at the
+ end of a case.
2006-04-19 Ralf Wildenhues
Index: bin/autoconf.as
===================================================================
RCS file: /cvsroot/autoconf/autoconf/bin/autoconf.as,v
retrieving revision 1.17
diff -u -r1.17 autoconf.as
--- bin/autoconf.as 23 Apr 2006 06:49:53 -0000 1.17
+++ bin/autoconf.as 24 Apr 2006 12:29:35 -0000
@@ -67,11 +67,7 @@
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."]
-me=$0
-case $me in
-*/autoconf) me=autoconf;;
-*/*) me=`expr "X$me" : '.*/\(.*\)'`;;
-esac
+me=`AS_BASENAME([$0])`
help="\
Try \`$me --help' for more information."
Index: doc/autoconf.texi
===================================================================
RCS file: /cvsroot/autoconf/autoconf/doc/autoconf.texi,v
retrieving revision 1.999
diff -u -r1.999 autoconf.texi
--- doc/autoconf.texi 24 Apr 2006 06:51:53 -0000 1.999
+++ doc/autoconf.texi 24 Apr 2006 12:29:53 -0000
@@ -9666,6 +9666,16 @@
M4sh provides portable alternatives for some common shell constructs
that unfortunately are not portable in practice.
address@hidden Deprecated, to be replaced by a better API
address@hidden
address@hidden AS_BASENAME (@var{file-name})
address@hidden
+Output the non-directory portion of @var{file-name}. For example,
+if @code{$file} is @samp{/one/two/three}, the command
address@hidden(["$file"])`} sets @code{base} to @samp{three}.
address@hidden defmac
address@hidden ignore
+
@defmac AS_BOURNE_COMPATIBLE
@asindex{BOURNE_COMPATIBLE}
Set up the shell to be more compatible with the Bourne shell as
@@ -12483,6 +12493,27 @@
Not all hosts have a working @command{basename}.
You can use @command{expr} instead.
address@hidden AS_BASENAME is to be replaced by a better API.
address@hidden
+Not all hosts have a working @command{basename}, and you should instead
+use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
address@hidden if you need to strip a suffix. For example:
+
address@hidden
+a=`basename "$aname"` # This is not portable.
+a=`AS_BASENAME(["$aname"])` # This is more portable.
+
+# This is not portable.
+c=`basename "$cname" .c`
+
+# This is more portable.
+c=`AS_BASENAME(["$cname"])`
+case $c in
+?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
+esac
address@hidden example
address@hidden ignore
+
@item @command{cat}
@c ----------------
Index: lib/autoconf/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v
retrieving revision 1.911
diff -u -r1.911 general.m4
--- lib/autoconf/general.m4 24 Apr 2006 06:51:53 -0000 1.911
+++ lib/autoconf/general.m4 24 Apr 2006 12:29:56 -0000
@@ -440,8 +440,8 @@
_AS_ECHO_N([checking for prefix by ])
AC_PATH_PROG(ac_prefix_program, [$1])
if test -n "$ac_prefix_program"; then
- AS_VAR_SET_DIRNAME([prefix], ["$ac_prefix_program"])
- AS_VAR_SET_DIRNAME([prefix], ["$prefix"])
+ prefix=`AS_DIRNAME(["$ac_prefix_program"])`
+ prefix=`AS_DIRNAME(["$prefix"])`
fi
fi
])# AC_PREFIX_PROGRAM
@@ -489,7 +489,7 @@
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
- AS_VAR_SET_DIRNAME([ac_confdir], ["$[0]"])
+ ac_confdir=`AS_DIRNAME(["$[0]"])`
srcdir=$ac_confdir
if test ! -r "$srcdir/$ac_unique_file"; then
srcdir=..
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.97
diff -u -r1.97 status.m4
--- lib/autoconf/status.m4 23 Apr 2006 06:49:53 -0000 1.97
+++ lib/autoconf/status.m4 24 Apr 2006 12:29:57 -0000
@@ -1427,7 +1427,7 @@
;;
esac
- AS_VAR_SET_DIRNAME([ac_dir], ["$ac_file"])
+ ac_dir=`AS_DIRNAME(["$ac_file"])`
AS_MKDIR_P(["$ac_dir"])
_AC_SRCDIRS(["$ac_dir"])
Index: lib/m4sugar/m4sh.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/m4sugar/m4sh.m4,v
retrieving revision 1.182
diff -u -r1.182 m4sh.m4
--- lib/m4sugar/m4sh.m4 23 Apr 2006 08:13:43 -0000 1.182
+++ lib/m4sugar/m4sh.m4 24 Apr 2006 12:29:59 -0000
@@ -150,7 +150,7 @@
# xx_REQUIRE macros, BODY-TO-EXPAND is mandatory.
#
m4_define([AS_REQUIRE_SHELL_FN],
-[_AS_DETECT_REQUIRED([_AS_SHELL_FN_WORK])dnl
+[AS_DETECT_REQUIRED([_AS_SHELL_FN_WORK])dnl
m4_provide_if([AS_SHELL_FN_$1], [],
[m4_provide([AS_SHELL_FN_$1])m4_divert_text([M4SH-INIT], [$1() {
$2
@@ -191,26 +191,27 @@
[(eval "AS_ESCAPE(m4_quote($1))")])])
-# _AS_DETECT_REQUIRED(TEST)
-# -------------------------
-# Refuse to execute under a shell that does not pass the given TEST.
+# AS_DETECT_REQUIRED(TEST)
+# ------------------------
+# Refuse to execute under a shell that does not pass
+# the given TEST.
m4_define([_AS_DETECT_REQUIRED_BODY], [:])
-m4_defun([_AS_DETECT_REQUIRED],
+m4_defun([AS_DETECT_REQUIRED],
[m4_require([_AS_DETECT_BETTER_SHELL])dnl
m4_expand_once([m4_append([_AS_DETECT_REQUIRED_BODY], [
($1) || AS_EXIT(1)
-])], [_AS_DETECT_REQUIRED_provide($1)])])
+])], [AS_DETECT_REQUIRED_provide($1)])])
-# _AS_DETECT_SUGGESTED(TEST)
-# --------------------------
+# AS_DETECT_SUGGESTED(TEST)
+# -------------------------
# Prefer to execute under a shell that passes the given TEST.
m4_define([_AS_DETECT_SUGGESTED_BODY], [:])
-m4_defun([_AS_DETECT_SUGGESTED],
+m4_defun([AS_DETECT_SUGGESTED],
[m4_require([_AS_DETECT_BETTER_SHELL])dnl
m4_expand_once([m4_append([_AS_DETECT_SUGGESTED_BODY], [
($1) || AS_EXIT(1)
-])], [_AS_DETECT_SUGGESTED_provide($1)])])
+])], [AS_DETECT_SUGGESTED_provide($1)])])
# _AS_DETECT_BETTER_SHELL
@@ -382,7 +383,7 @@
_AS_BASENAME_PREPARE
# Name of the executable.
-AS_VAR_SET_BASENAME([as_me], [$[0]])
+as_me=`AS_BASENAME("$[0]")`
# CDPATH.
$as_unset CDPATH
@@ -659,18 +660,18 @@
# This section is lexicographically sorted.
-# _AS_BASENAME(FILE-NAME)
-# -----------------------
+# AS_BASENAME(FILE-NAME)
+# ----------------------
# Simulate the command 'basename FILE-NAME'. Not all systems have basename.
# Also see the comments for AS_DIRNAME.
-m4_defun([_AS_BASENAME_EXPR],
+m4_defun([AS_BASENAME_EXPR],
[AS_REQUIRE([_AS_EXPR_PREPARE])dnl
$as_expr X/[]$1 : '.*/\([[^/][^/]*]\)/*$' \| \
X[]$1 : 'X\(//\)$' \| \
X[]$1 : 'X\(/\)' \| .])
-m4_defun([_AS_BASENAME_SED],
+m4_defun([AS_BASENAME_SED],
[echo X/[]$1 |
sed ['/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
@@ -686,24 +687,18 @@
}
s/.*/./; q']])
-m4_defun([_AS_BASENAME],
-[AS_REQUIRE([$0_PREPARE])dnl
-$as_basename -- $1 ||
-_AS_BASENAME_EXPR([$1]) 2>/dev/null ||
-_AS_BASENAME_SED([$1])])
-
-# Some programs rely on _AS_BASENAME being called AS_BASENAME.
-# They should be rewritten to use AS_VAR_SET_BASENAME, but in
-# the meantime we'll leave AS_BASENAME in as an undocumented macro.
-m4_defun([AS_BASENAME], [_AS_BASENAME([$1])])
+m4_defun([AS_BASENAME],
+[AS_REQUIRE([_$0_PREPARE])dnl
+$as_basename $1 ||
+AS_BASENAME_EXPR([$1]) 2>/dev/null ||
+AS_BASENAME_SED([$1])])
# _AS_BASENAME_PREPARE
# --------------------
# Avoid Solaris 9 /usr/ucb/basename, as `basename /' outputs an empty line.
-# Also, traditional basename mishandles --.
m4_defun([_AS_BASENAME_PREPARE],
-[if as_basename=`(basename -- /) 2>&1` && test "X$as_basename" = "X/"; then
+[if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
@@ -711,8 +706,8 @@
])# _AS_BASENAME_PREPARE
-# _AS_DIRNAME(FILE-NAME)
-# ----------------------
+# AS_DIRNAME(FILE-NAME)
+# ---------------------
# Simulate the command 'dirname FILE-NAME'. Not all systems have dirname.
# This macro must be usable from inside ` `.
#
@@ -722,14 +717,14 @@
# a silly length limit that causes expr to fail if the matched
# substring is longer than 120 bytes. So fall back on echo|sed if
# expr fails.
-m4_defun([_AS_DIRNAME_EXPR],
+m4_defun([AS_DIRNAME_EXPR],
[AS_REQUIRE([_AS_EXPR_PREPARE])dnl
$as_expr X[]$1 : 'X\(.*[[^/]]\)//*[[^/][^/]]*/*$' \| \
X[]$1 : 'X\(//\)[[^/]]' \| \
X[]$1 : 'X\(//\)$' \| \
X[]$1 : 'X\(/\)' \| .])
-m4_defun([_AS_DIRNAME_SED],
+m4_defun([AS_DIRNAME_SED],
[echo X[]$1 |
sed ['/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
@@ -749,22 +744,17 @@
}
s/.*/./; q']])
-m4_defun([_AS_DIRNAME],
-[AS_REQUIRE([$0_PREPARE])dnl
-$as_dirname -- $1 ||
-_AS_DIRNAME_EXPR([$1]) 2>/dev/null ||
-_AS_DIRNAME_SED([$1])])
-
-# Some programs rely on _AS_DIRNAME being called AS_DIRNAME.
-# They should be rewritten to use AS_VAR_SET_DIRNAME, but in
-# the meantime we'll leave AS_DIRNAME in as an undocumented macro.
-m4_defun([AS_DIRNAME], [_AS_DIRNAME([$1])])
+m4_defun([AS_DIRNAME],
+[AS_REQUIRE([_$0_PREPARE])dnl
+$as_dirname $1 ||
+AS_DIRNAME_EXPR([$1]) 2>/dev/null ||
+AS_DIRNAME_SED([$1])])
# _AS_DIRNAME_PREPARE
# --------------------
m4_defun([_AS_DIRNAME_PREPARE],
-[if (dirname -- /) >/dev/null 2>&1; then
+[if (dirname /) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
@@ -821,7 +811,7 @@
# configure.
m4_define([_AS_LINENO_PREPARE],
[AS_REQUIRE([_AS_CR_PREPARE])dnl
-_AS_DETECT_SUGGESTED([_AS_LINENO_WORKS])
+AS_DETECT_SUGGESTED([_AS_LINENO_WORKS])
_AS_LINENO_WORKS || {
# Create $as_me.lineno as a copy of $as_myself, but with $LINENO
@@ -917,7 +907,7 @@
as_dirs=
while test ! -d "$as_dir"; do
as_dirs="$as_dir $as_dirs"
- AS_VAR_SET_DIRNAME([as_dir], ["$as_dir"])
+ as_dir=`AS_DIRNAME("$as_dir")`
done
test ! -n "$as_dirs" || mkdir $as_dirs
fi || AS_ERROR([cannot create directory $1]); }dnl
@@ -1020,22 +1010,6 @@
])# _AS_TEST_PREPARE
-# AS_VAR_SET_BASENAME(VARIABLE, FILE-NAME)
-# ----------------------------------------
-# Simulate VARIABLE=`basename FILE-NAME`.
-m4_defun([AS_VAR_SET_BASENAME],
-[$1=$2
-$1=`_AS_BASENAME(["$$1"])`])
-
-
-# AS_VAR_SET_DIRNAME(VARIABLE, FILE-NAME)
-# ---------------------------------------
-# Simulate the command VARIABLE=`dirname FILE-NAME`.
-m4_defun([AS_VAR_SET_DIRNAME],
-[$1=$2
-$1=`_AS_DIRNAME(["$$1"])`])
-
-
## ------------------ ##
@@ -1467,7 +1441,7 @@
# This temporary macro checks "in the wild" for shells that do
# not support shell functions.
m4_define([_AS_SHELL_FN_SPY],
-[_AS_DETECT_SUGGESTED([_AS_SHELL_FN_WORK])
+[AS_DETECT_SUGGESTED([_AS_SHELL_FN_WORK])
_AS_RUN([_AS_SHELL_FN_WORK]) || {
echo No shell found that supports shell functions.
echo Please tell address@hidden about your system,
Index: tests/m4sh.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/m4sh.at,v
retrieving revision 1.46
diff -u -r1.46 m4sh.at
--- tests/m4sh.at 23 Apr 2006 06:49:53 -0000 1.46
+++ tests/m4sh.at 24 Apr 2006 12:29:59 -0000
@@ -95,20 +95,33 @@
-## -------------------- ##
-## AS_VAR_SET_DIRNAME. ##
-## -------------------- ##
+## ------------ ##
+## AS_DIRNAME. ##
+## ------------ ##
# Build nested dirs.
-AT_SETUP([AS@&address@hidden)
+AT_SETUP([AS@&address@hidden)
AT_DATA_M4SH([script.as],
[[AS_INIT
+# The EXPR variant is allowed to fail if `expr' was considered as too
+# weak for us, in which case `as_expr=false'.
m4_define([DIRNAME_TEST],
-[AS_VAR_SET_DIRNAME([dir], [$1])
+[dir=`AS_DIRNAME([$1])`
+test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
+ echo "dirname($1) = $dir instead of $2" >&2
+
+if test "$as_expr" != false; then
+ dir=`AS_DIRNAME_EXPR([$1])`
+ test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
+ echo "dirname_expr($1) = $dir instead of $2" >&2
+fi
+
+dir=`AS_DIRNAME_SED([$1])`
+test "$dir" = "$2" ||
test "$dir" = "$2" || (test -n "$3" && test "$dir" = "$3") ||
- echo "dirname($1) = $dir instead of $2" >&2])
+ echo "dirname_sed($1) = $dir instead of $2" >&2])
DIRNAME_TEST([/], [/])
DIRNAME_TEST([//], [//], [/])
@@ -143,20 +156,24 @@
-## --------------------- ##
-## AS_VAR_SET_BASENAME. ##
-## --------------------- ##
+## ------------- ##
+## AS_BASENAME. ##
+## ------------- ##
# Build nested dirs.
-AT_SETUP([AS@&address@hidden)
+AT_SETUP([AS@&address@hidden)
AT_DATA_M4SH([script.as],
[[AS_INIT
m4_define([BASENAME_TEST],
-[AS_VAR_SET_BASENAME([base], [$1])
+[base=`AS_BASENAME([$1])`
+test "$base" = "$2" ||
+ echo "basename($1) = $base instead of $2" >&2
+
+base=`AS_BASENAME_SED([$1])`
test "$base" = "$2" ||
- echo "basename($1) = $base instead of $2" >&2])
+ echo "basename_sed($1) = $base instead of $2" >&2])
BASENAME_TEST([//1], [1])
BASENAME_TEST([/1], [1])