build: fix build failure due to missing libxattr
authorJim Meyering <meyering@redhat.com>
Tue, 12 Jan 2010 06:58:44 +0000 (07:58 +0100)
committerJim Meyering <meyering@redhat.com>
Tue, 12 Jan 2010 07:06:47 +0000 (08:06 +0100)
Configure is supposed to detect insufficient XATTR support.
However, if a system has the required headers, but no library,
the configure script would mistakenly enable USE_XATTR.
* m4/xattr.m4 (gl_FUNC_XATTR): If the attr_copy_file function
is not found, don't set USE_XATTR.
Nelson Beebe reported a link failure on RHEL 5.3.
Also, do not let the combination of --disable-xattr and
a stray LIB_XATTR environment setting perturb the build.
* NEWS (Build-related): Mention it.

NEWS
m4/xattr.m4

diff --git a/NEWS b/NEWS
index 61e6a31..e8f1dd7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,10 @@ GNU coreutils NEWS                                    -*- outline -*-
   own <wchar.h> header.  Now, gnulib works around the bug in those older
   glibc <wchar.h> headers.
 
+  Building would fail with a link error (cp/copy.o) when XATTR headers
+  were installed without the corresponding library.  Now, configure
+  detects that and disables xattr support, as one would expect.
+
 
 * Noteworthy changes in release 8.3 (2010-01-07) [stable]
 
index 377676a..bf7e872 100644 (file)
@@ -15,25 +15,29 @@ AC_DEFUN([gl_FUNC_XATTR],
                        [do not support extended attributes]),
         [use_xattr=$enableval], [use_xattr=yes])
 
+  LIB_XATTR=
+  AC_SUBST([LIB_XATTR])
+
   if test "$use_xattr" = "yes"; then
     AC_CHECK_HEADERS([attr/error_context.h attr/libattr.h])
+    use_xattr=no
     if test $ac_cv_header_attr_libattr_h = yes \
-       && test $ac_cv_header_attr_error_context_h = yes; then
-      use_xattr=1
-    else
-      use_xattr=0
-      AC_MSG_WARN([libattr development library was not found or not usable.])
-      AC_MSG_WARN([AC_PACKAGE_NAME will be built without xattr support.])
+        && test $ac_cv_header_attr_error_context_h = yes; then
+      xattr_saved_LIBS=$LIBS
+      AC_SEARCH_LIBS([attr_copy_file], [attr],
+                     [test "$ac_cv_search_attr_copy_file" = "none required" ||
+                        LIB_XATTR=$ac_cv_search_attr_copy_file])
+      AC_CHECK_FUNCS([attr_copy_file])
+      LIBS=$xattr_saved_LIBS
+      if test $ac_cv_func_attr_copy_file = yes; then
+        use_xattr=yes
+      fi
     fi
     AC_DEFINE_UNQUOTED([USE_XATTR], [$use_xattr],
                        [Define if you want extended attribute support.])
-    LIB_XATTR=
-    xattr_saved_LIBS=$LIBS
-    AC_SEARCH_LIBS([attr_copy_file], [attr],
-                   [test "$ac_cv_search_attr_copy_file" = "none required" ||
-                      LIB_XATTR=$ac_cv_search_attr_copy_file])
-    AC_CHECK_FUNCS([attr_copy_file])
-    LIBS=$xattr_saved_LIBS
-    AC_SUBST([LIB_XATTR])
+    if test $use_xattr = no; then
+      AC_MSG_WARN([libattr development library was not found or not usable.])
+      AC_MSG_WARN([AC_PACKAGE_NAME will be built without xattr support.])
+    fi
   fi
 ])