diff --git a/debian/changelog b/debian/changelog index 902c985ef..c96abacdb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,6 +19,8 @@ systemd (208-7) UNRELEASED; urgency=medium schroot or after upgrades from < 204, and the main point of the test is to check that libsystemd-login-dev has correct contents and dependencies. Drop "isolation-machine" requirement. + * Use glibc's xattr support instead of requiring libattr. Fixes FTBFS with + latest glibc and libattr. Cherrypicked from trunk. (Closes: #756097) -- Michael Biebl Thu, 17 Jul 2014 00:48:14 +0200 diff --git a/debian/patches/build-sys-use-glibc-s-xattr-support-instead-of-requi.patch b/debian/patches/build-sys-use-glibc-s-xattr-support-instead-of-requi.patch new file mode 100644 index 000000000..b275a370d --- /dev/null +++ b/debian/patches/build-sys-use-glibc-s-xattr-support-instead-of-requi.patch @@ -0,0 +1,200 @@ +From bc3d33edd2b227c17ae338bf147067bdfafe299c Mon Sep 17 00:00:00 2001 +From: Kay Sievers +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 + #include + #include +-#ifdef HAVE_XATTR +-#include +-#endif ++#include + + #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 + #include + #include +- +-#ifdef HAVE_XATTR +-#include +-#endif ++#include + + #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 + #include + #include +- +-#ifdef HAVE_XATTR +-#include +-#endif ++#include + + #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 + diff --git a/debian/patches/series b/debian/patches/series index 12d6aabc4..56f8fa217 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -478,6 +478,9 @@ Reset-signal-mask-on-re-exec-to-init.patch core-clean-up-signal-reset-logic-when-reexec.patch util-treat-fuse.sshfs-as-a-network-filesystem.patch +## Cherry-picked from trunk +build-sys-use-glibc-s-xattr-support-instead-of-requi.patch + ## Debian specific patches: Add-back-support-for-Debian-specific-config-files.patch Make-systemctl-enable-disable-call-update-rc.d-for-s.patch