Am 26.07.2014 10:08, schrieb Elimar Riesebieter:
> Package: systemd
> Version: 208-6
> Severity: serious
> Justification: fails to build from source (but built successfully in the past)
> 
> Using pbuilder updated today. Build stops at:
> In file included from ../src/core/socket.c:32:0:
> /usr/include/x86_64-linux-gnu/sys/xattr.h:32:3: error: expected identifier 
> before numeric constant
>    XATTR_CREATE = 1, /* set value, fail if attr already exists.  */
>    ^

Hm, that seems to be a recent change in the linux kernel headers afaics.

Can you try with the attached patch?



-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
From bc3d33edd2b227c17ae338bf147067bdfafe299c Mon Sep 17 00:00:00 2001
From: Kay Sievers <k...@vrfy.org>
Date: Wed, 28 May 2014 17:36:40 +0800
Subject: [PATCH] build-sys: use glibc's xattr support instead of requiring
 libattr

(cherry picked from commit d2edfae0f9bdbecf6a8518e2a5bcf06f470e0d9e)
---
 configure.ac                 | 51 --------------------------------------------
 src/core/mount-setup.c       |  2 --
 src/core/socket.c            |  4 +---
 src/journal/journal-file.c   |  7 +-----
 src/journal/journal-vacuum.c | 10 +--------
 5 files changed, 3 insertions(+), 71 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9605b38..4b0b45b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -468,44 +468,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 ;;
@@ -514,18 +476,6 @@ AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK
                 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
-                have_smack=yes
-        fi
-fi
-
 if test "x${have_smack}" = xyes ; then
         AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
 fi
@@ -1025,7 +975,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}
diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
index cff83d3..12b7ed3 100644
--- a/src/core/mount-setup.c
+++ b/src/core/mount-setup.c
@@ -87,10 +87,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,
diff --git a/src/core/socket.c b/src/core/socket.c
index 8e02c03..3bd4532 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -28,9 +28,7 @@
 #include <signal.h>
 #include <arpa/inet.h>
 #include <mqueue.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
 
 #include "unit.h"
 #include "socket.h"
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 2d2d289..010dda1 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -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"
@@ -2513,7 +2510,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,
@@ -2528,7 +2524,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
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 695e518..442120a 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -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) {
-- 
2.0.1

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to