From 6b13602fdf3ffadf7a32cf41f29580a686bd0802 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 17 May 2016 00:40:51 -0400 Subject: app-emulation/qemu: workaround breakage in xfs/linux headers #577810 Add upstream patch to workaround some combinations of xfsprogs & linux headers so we don't have to worry about stable breakage anymore. This fix is already in upstream & unstable versions. --- .../qemu/files/qemu-2.5.1-xfs-linux-headers.patch | 82 ++++++++++++++++++++++ app-emulation/qemu/qemu-2.5.1.ebuild | 1 + 2 files changed, 83 insertions(+) create mode 100644 app-emulation/qemu/files/qemu-2.5.1-xfs-linux-headers.patch (limited to 'app-emulation/qemu') diff --git a/app-emulation/qemu/files/qemu-2.5.1-xfs-linux-headers.patch b/app-emulation/qemu/files/qemu-2.5.1-xfs-linux-headers.patch new file mode 100644 index 00000000000..743171b49dd --- /dev/null +++ b/app-emulation/qemu/files/qemu-2.5.1-xfs-linux-headers.patch @@ -0,0 +1,82 @@ +https://bugs.gentoo.org/577810 + +From 277abf15a60f7653bfb05ffb513ed74ffdaea1b7 Mon Sep 17 00:00:00 2001 +From: Jan Vesely +Date: Fri, 29 Apr 2016 13:15:23 -0400 +Subject: [PATCH] configure: Check if struct fsxattr is available from linux + header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes build failure with --enable-xfsctl and +new linux headers (>=4.5) and older xfsprogs(<4.5): +In file included from /usr/include/xfs/xfs.h:38:0, + from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:97: +/usr/include/xfs/xfs_fs.h:42:8: error: redefinition of ‘struct fsxattr’ + struct fsxattr { + ^ +In file included from /var/tmp/portage/app-emulation/qemu-2.5.0-r1/work/qemu-2.5.0/block/raw-posix.c:60:0: +/usr/include/linux/fs.h:155:8: note: originally defined here + struct fsxattr { + +This is really a bug in the system headers, but we can work around it +by defining HAVE_FSXATTR in the QEMU headers if linux/fs.h provides +the struct, so that xfs_fs.h doesn't try to define it as well. + +CC: qemu-trivial@nongnu.org +CC: Markus Armbruster +CC: Peter Maydell +CC: Stefan Weil +Tested-by: Stefan Weil +Signed-off-by: Jan Vesely +[PMM: adjusted commit message, comments] +Signed-off-by: Peter Maydell +--- + configure | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/configure b/configure +index ab54f3c..c37fc5f 100755 +--- a/configure ++++ b/configure +@@ -4494,6 +4494,21 @@ if test "$fortify_source" != "no"; then + fi + + ########################################## ++# check if struct fsxattr is available via linux/fs.h ++ ++have_fsxattr=no ++cat > $TMPC << EOF ++#include ++struct fsxattr foo; ++int main(void) { ++ return 0; ++} ++EOF ++if compile_prog "" "" ; then ++ have_fsxattr=yes ++fi ++ ++########################################## + # End of CC checks + # After here, no more $cc or $ld runs + +@@ -5160,6 +5175,14 @@ fi + if test "$have_ifaddrs_h" = "yes" ; then + echo "HAVE_IFADDRS_H=y" >> $config_host_mak + fi ++ ++# Work around a system header bug with some kernel/XFS header ++# versions where they both try to define 'struct fsxattr': ++# xfs headers will not try to redefine structs from linux headers ++# if this macro is set. ++if test "$have_fsxattr" = "yes" ; then ++ echo "HAVE_FSXATTR=y" >> $config_host_mak ++fi + if test "$vte" = "yes" ; then + echo "CONFIG_VTE=y" >> $config_host_mak + echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak +-- +2.8.2 + diff --git a/app-emulation/qemu/qemu-2.5.1.ebuild b/app-emulation/qemu/qemu-2.5.1.ebuild index 27d1c30952e..ae5fa97bd6a 100644 --- a/app-emulation/qemu/qemu-2.5.1.ebuild +++ b/app-emulation/qemu/qemu-2.5.1.ebuild @@ -343,6 +343,7 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-2.5.1-CVE-2016-4020.patch #580040 epatch "${FILESDIR}"/${PN}-2.5.1-CVE-2015-8558.patch #568246 #580426 epatch "${FILESDIR}"/${PN}-2.5.0-sysmacros.patch + epatch "${FILESDIR}"/${PN}-2.5.1-xfs-linux-headers.patch #577810 # Fix ld and objcopy being called directly tc-export AR LD OBJCOPY -- cgit v1.2.1