Based on d2edfae0f9bdbecf6a8518e2a5bcf06f470e0d9e Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Wed, 28 May 2014 17:36:40 +0800
Subject: [PATCH] build-sys: use glibc's xattr support instead of requiring
 libattr

---
 configure.ac                 |   53 ++-----------------------------------------
 src/core/mount-setup.c       |    2 -
 src/core/socket.c            |    4 ---
 src/journal/journal-file.c   |    7 -----
 src/journal/journal-vacuum.c |   10 --------
 src/shared/label.c           |    2 -
 src/shared/smack-util.c      |    4 ---
 7 files changed, 7 insertions(+), 75 deletions(-)

--- configure.ac
+++ configure.ac	2014-06-03 00:00:00.000000000 +0000
@@ -526,44 +526,6 @@ AC_SUBST(ACL_LIBS)
 AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
 
 # ------------------------------------------------------------------------------
-AC_ARG_ENABLE([xattr],
-        AS_HELP_STRING([--disable-xattr],[Disable optional XATTR support]),
-                [case "${enableval}" in
-                        yes) have_xattr=yes ;;
-                        no) have_xattr=no ;;
-                        *) AC_MSG_ERROR(bad value ${enableval} for --disable-xattr) ;;
-                esac],
-                [have_xattr=auto])
-
-if test "x${have_xattr}" != xno ; then
-        AC_CHECK_HEADERS(
-                [attr/xattr.h],
-                [have_xattr=yes],
-                [if test "x$have_xattr" = xyes ; then
-                        AC_MSG_ERROR([*** XATTR headers not found.])
-                fi])
-
-        AC_CHECK_LIB(
-                [attr],
-                [fsetxattr],
-                [have_xattr=yes],
-                [if test "x$have_xattr" = xyes ; then
-                        AC_MSG_ERROR([*** libattr not found.])
-                fi])
-
-        if test "x$have_xattr" = xyes ; then
-                XATTR_LIBS="-lattr"
-                AC_DEFINE(HAVE_XATTR, 1, [XATTR available])
-        else
-                have_xattr=no
-        fi
-else
-        XATTR_LIBS=
-fi
-AC_SUBST(XATTR_LIBS)
-AM_CONDITIONAL([HAVE_XATTR], [test "x$have_xattr" != xno])
-
-# ------------------------------------------------------------------------------
 AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK support]),
                 [case "${enableval}" in
                         yes) have_smack=yes ;;
@@ -572,17 +534,9 @@ AC_ARG_ENABLE([smack], AS_HELP_STRING([-
                 esac],
                 [have_smack=auto])
 
-if test "x${have_xattr}" = xno; then
-        if test "x${have_smack}" = xyes; then
-                AC_MSG_ERROR(SMACK requires xattr support)
-        else
-                have_smack=no
-        fi
-else
-        if test "x${have_smack}" = xauto; then
-                M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
-                have_smack=yes
-        fi
+if test "x${have_smack}" = xauto; then
+        M4_DEFINES="$M4_DEFINES -DHAVE_SMACK"
+        have_smack=yes
 fi
 
 AC_ARG_WITH(smack-run-label,
@@ -1131,7 +1085,6 @@ AC_MSG_RESULT([
         SMACK:                   ${have_smack}
         XZ:                      ${have_xz}
         ACL:                     ${have_acl}
-        XATTR:                   ${have_xattr}
         GCRYPT:                  ${have_gcrypt}
         QRENCODE:                ${have_qrencode}
         MICROHTTPD:              ${have_microhttpd}
--- src/core/mount-setup.c
+++ src/core/mount-setup.c	2014-06-03 00:00:00.000000000 +0000
@@ -93,10 +93,8 @@ static const MountPoint mount_table[] =
           NULL,       MNT_FATAL|MNT_IN_CONTAINER },
         { "tmpfs",      "/sys/fs/cgroup",            "tmpfs",      "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
           NULL,       MNT_IN_CONTAINER },
-#ifdef HAVE_XATTR
         { "cgroup",     "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,       MNT_IN_CONTAINER },
-#endif
         { "cgroup",     "/sys/fs/cgroup/systemd",    "cgroup",     "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV,
           NULL,       MNT_IN_CONTAINER },
         { "pstore",     "/sys/fs/pstore",            "pstore",     NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
--- src/core/socket.c
+++ src/core/socket.c	2014-06-03 00:00:00.000000000 +0000
@@ -29,9 +29,7 @@
 #include <arpa/inet.h>
 #include <netinet/tcp.h>
 #include <mqueue.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
 
 #include "sd-event.h"
 #include "log.h"
--- src/journal/journal-file.c
+++ src/journal/journal-file.c	2014-06-03 00:00:00.000000000 +0000
@@ -26,10 +26,7 @@
 #include <sys/statvfs.h>
 #include <fcntl.h>
 #include <stddef.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
 
 #include "journal-def.h"
 #include "journal-file.h"
@@ -2515,7 +2512,6 @@ int journal_file_open(
         }
 
         if (f->last_stat.st_size == 0 && f->writable) {
-#ifdef HAVE_XATTR
                 uint64_t crtime;
 
                 /* Let's attach the creation time to the journal file,
@@ -2530,7 +2526,6 @@ int journal_file_open(
 
                 crtime = htole64((uint64_t) now(CLOCK_REALTIME));
                 fsetxattr(f->fd, "user.crtime_usec", &crtime, sizeof(crtime), XATTR_CREATE);
-#endif
 
 #ifdef HAVE_GCRYPT
                 /* Try to load the FSPRG state, and if we can't, then
--- src/journal/journal-vacuum.c
+++ src/journal/journal-vacuum.c	2014-06-03 00:00:00.000000000 +0000
@@ -24,10 +24,7 @@
 #include <sys/stat.h>
 #include <sys/statvfs.h>
 #include <unistd.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
 
 #include "journal-def.h"
 #include "journal-file.h"
@@ -79,11 +76,8 @@ static void patch_realtime(
                 unsigned long long *realtime) {
 
         usec_t x;
-
-#ifdef HAVE_XATTR
         uint64_t crtime;
         _cleanup_free_ const char *path = NULL;
-#endif
 
         /* The timestamp was determined by the file name, but let's
          * see if the file might actually be older than the file name
@@ -106,7 +100,6 @@ static void patch_realtime(
         if (x > 0 && x != (usec_t) -1 && x < *realtime)
                 *realtime = x;
 
-#ifdef HAVE_XATTR
         /* Let's read the original creation time, if possible. Ideally
          * we'd just query the creation time the FS might provide, but
          * unfortunately there's currently no sane API to query
@@ -125,7 +118,6 @@ static void patch_realtime(
                 if (crtime > 0 && crtime != (uint64_t) -1 && crtime < *realtime)
                         *realtime = crtime;
         }
-#endif
 }
 
 static int journal_file_empty(int dir_fd, const char *name) {
--- src/shared/label.c
+++ src/shared/label.c	2014-06-03 00:00:00.000000000 +0000
@@ -27,9 +27,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
-#ifdef HAVE_XATTR
 #include <sys/xattr.h>
-#endif
 #ifdef HAVE_SELINUX
 #include <selinux/selinux.h>
 #include <selinux/label.h>
--- src/shared/smack-util.c
+++ src/shared/smack-util.c	2014-06-03 00:00:00.000000000 +0000
@@ -23,9 +23,7 @@
 
 #include <unistd.h>
 #include <string.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
 
 #include "smack-util.h"
 
