From bd925a4e80e8152927d4ca7de87fdbc8a4d63958d7c93ee2b10515a01c9bbc34 Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Fri, 11 Mar 2016 08:37:45 +0000 Subject: [PATCH] Accepting request 367644 from filesystems - hide min/max macros clashing with gcc 6 (bnc#966257) (forwarded request 367641 from dsterba) OBS-URL: https://build.opensuse.org/request/show/367644 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/btrfsprogs?expand=0&rev=70 --- ...btrfs-remove-max-min-macros-from-API.patch | 190 ++++++++++++++++++ btrfsprogs.changes | 6 + btrfsprogs.spec | 3 + local-version-override.patch | 2 +- 4 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch diff --git a/0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch b/0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch new file mode 100644 index 0000000..34f71ff --- /dev/null +++ b/0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch @@ -0,0 +1,190 @@ +From 25f809780a330530c652a805dfce02008fabe3ea Mon Sep 17 00:00:00 2001 +From: Ondrej Kozina +Date: Fri, 4 Mar 2016 14:46:11 +0100 +Subject: [PATCH] btrfs-progs: libbtrfs: remove max/min macros from API + +kerncompat.h header file is part of libbtrfs API. min/max macros cause +conflict while building projects dependant on libbtrfs. Moving those +macros to btrfs-progs internal header file fixes the conflict. + +Signed-off-by: Ondrej Kozina +Signed-off-by: David Sterba +--- + backref.c | 1 + + ctree.c | 1 + + extent_io.c | 1 + + file-item.c | 1 + + free-space-cache.c | 1 + + inode-map.c | 1 + + internal.h | 42 ++++++++++++++++++++++++++++++++++++++++++ + kerncompat.h | 20 -------------------- + utils.h | 1 + + 9 files changed, 49 insertions(+), 20 deletions(-) + create mode 100644 internal.h + +diff --git a/backref.c b/backref.c +index 8f41f829503d..7578e928d0bf 100644 +--- a/backref.c ++++ b/backref.c +@@ -22,6 +22,7 @@ + #include "backref.h" + #include "ulist.h" + #include "transaction.h" ++#include "internal.h" + + #define pr_debug(...) do { } while (0) + +diff --git a/ctree.c b/ctree.c +index 04cc476e9a8f..1f938d767142 100644 +--- a/ctree.c ++++ b/ctree.c +@@ -20,6 +20,7 @@ + #include "transaction.h" + #include "print-tree.h" + #include "repair.h" ++#include "internal.h" + + static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root + *root, struct btrfs_path *path, int level); +diff --git a/extent_io.c b/extent_io.c +index 88e92736280e..bdaecc0f1a45 100644 +--- a/extent_io.c ++++ b/extent_io.c +@@ -27,6 +27,7 @@ + #include "list.h" + #include "ctree.h" + #include "volumes.h" ++#include "internal.h" + + void extent_io_tree_init(struct extent_io_tree *tree) + { +diff --git a/file-item.c b/file-item.c +index b46d7f107c98..7a3bbf35868b 100644 +--- a/file-item.c ++++ b/file-item.c +@@ -25,6 +25,7 @@ + #include "transaction.h" + #include "print-tree.h" + #include "crc32c.h" ++#include "internal.h" + + #define MAX_CSUM_ITEMS(r,size) ((((BTRFS_LEAF_DATA_SIZE(r) - \ + sizeof(struct btrfs_item) * 2) / \ +diff --git a/free-space-cache.c b/free-space-cache.c +index d10a5f517b10..357d69e7870e 100644 +--- a/free-space-cache.c ++++ b/free-space-cache.c +@@ -24,6 +24,7 @@ + #include "extent_io.h" + #include "crc32c.h" + #include "bitops.h" ++#include "internal.h" + + /* + * Kernel always uses PAGE_CACHE_SIZE for sectorsize, but we don't have +diff --git a/inode-map.c b/inode-map.c +index 346952b74144..9e4dcd3c3b0f 100644 +--- a/inode-map.c ++++ b/inode-map.c +@@ -19,6 +19,7 @@ + #include "ctree.h" + #include "disk-io.h" + #include "transaction.h" ++#include "internal.h" + + /* + * walks the btree of allocated inodes and find a hole. +diff --git a/internal.h b/internal.h +new file mode 100644 +index 000000000000..d5ea9986967e +--- /dev/null ++++ b/internal.h +@@ -0,0 +1,42 @@ ++/* ++ * Copyright (C) 2007 Oracle. All rights reserved. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public ++ * License v2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public ++ * License along with this program; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 021110-1307, USA. ++ */ ++ ++#ifndef __INTERNAL_H__ ++#define __INTERNAL_H__ ++ ++/* ++ * max/min macro ++ */ ++#define min(x,y) ({ \ ++ typeof(x) _x = (x); \ ++ typeof(y) _y = (y); \ ++ (void) (&_x == &_y); \ ++ _x < _y ? _x : _y; }) ++ ++#define max(x,y) ({ \ ++ typeof(x) _x = (x); \ ++ typeof(y) _y = (y); \ ++ (void) (&_x == &_y); \ ++ _x > _y ? _x : _y; }) ++ ++#define min_t(type,x,y) \ ++ ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; }) ++#define max_t(type,x,y) \ ++ ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; }) ++ ++#endif +diff --git a/kerncompat.h b/kerncompat.h +index 0f207b7fd5d5..ee65aa72ad6d 100644 +--- a/kerncompat.h ++++ b/kerncompat.h +@@ -241,26 +241,6 @@ static inline long IS_ERR(const void *ptr) + } + + /* +- * max/min macro +- */ +-#define min(x,y) ({ \ +- typeof(x) _x = (x); \ +- typeof(y) _y = (y); \ +- (void) (&_x == &_y); \ +- _x < _y ? _x : _y; }) +- +-#define max(x,y) ({ \ +- typeof(x) _x = (x); \ +- typeof(y) _y = (y); \ +- (void) (&_x == &_y); \ +- _x > _y ? _x : _y; }) +- +-#define min_t(type,x,y) \ +- ({ type __x = (x); type __y = (y); __x < __y ? __x: __y; }) +-#define max_t(type,x,y) \ +- ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; }) +- +-/* + * This looks more complex than it should be. But we need to + * get the type for the ~ right in round_down (it needs to be + * as wide as the result!), and we want to evaluate the macro +diff --git a/utils.h b/utils.h +index d53357a277ee..a4e55bf58914 100644 +--- a/utils.h ++++ b/utils.h +@@ -23,6 +23,7 @@ + #include "ctree.h" + #include + #include ++#include "internal.h" + + #define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024) + #define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024) +-- +2.7.1 + diff --git a/btrfsprogs.changes b/btrfsprogs.changes index 443c276..b0b7d80 100644 --- a/btrfsprogs.changes +++ b/btrfsprogs.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Mar 7 00:00:00 CET 2016 - dsterba@suse.cz + +- hide min/max macros clashing with gcc 6 (bnc#966257) + (0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch) + ------------------------------------------------------------------- Mon Feb 29 00:00:00 CET 2016 - dsterba@suse.cz diff --git a/btrfsprogs.spec b/btrfsprogs.spec index de40df2..72d0adf 100644 --- a/btrfsprogs.spec +++ b/btrfsprogs.spec @@ -37,6 +37,8 @@ Source: https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs Source1: boot-btrfs.sh Source4: setup-btrfs.sh +Patch1: 0001-btrfs-progs-libbtrfs-remove-max-min-macros-from-API.patch + Patch163: 0163-btrfs-progs-fsck-fix-segfault.patch Patch167: 0167-Btrfs-progs-make-find_and_setup_root-return-an-error.patch Patch168: 0168-Btrfs-progs-don-t-bug-out-if-we-can-t-find-the-last-.patch @@ -109,6 +111,7 @@ build applications to interface with btrfs. %prep %setup -q -n btrfs-progs-v%{version} +%patch1 -p1 %patch163 -p1 %patch167 -p1 %patch168 -p1 diff --git a/local-version-override.patch b/local-version-override.patch index f8a2ea9..3cf671a 100644 --- a/local-version-override.patch +++ b/local-version-override.patch @@ -7,7 +7,7 @@ Index: btrfs-progs-v4.1/version.sh # Released under the GNU GPLv2 -v="v4.4.1" -+v="v4.4.1+20160229" ++v="v4.4.1+20160307" opt=$1