From bf63e21a6a2cadfebdec79d7a347747760163461edfb2c612929bccaeaab1da7 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Fri, 11 Apr 2014 11:48:03 +0000 Subject: [PATCH] Accepting request 229730 from home:dsterba:branches:filesystems SR: the 3.14 update breaks build of snapper due to missing symbol - add missing symbol to library (bnc#873164) - add version dependency for devel package - Added patches: * 0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch OBS-URL: https://build.opensuse.org/request/show/229730 OBS-URL: https://build.opensuse.org/package/show/filesystems/btrfsprogs?expand=0&rev=152 --- ...-arg_strtou64-to-a-separate-file-for.patch | 136 ++++++++++++++++++ btrfsprogs.changes | 8 ++ btrfsprogs.spec | 7 +- 3 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch diff --git a/0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch b/0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch new file mode 100644 index 0000000..9cdce66 --- /dev/null +++ b/0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch @@ -0,0 +1,136 @@ +From f555e06e2d266f52cdeb12218f8175eba2a17020 Mon Sep 17 00:00:00 2001 +From: David Sterba +Date: Fri, 11 Apr 2014 13:22:50 +0200 +Subject: [PATCH] btrfs-progs: move arg_strtou64 to a separate file for library + +Linking with libbtrfs fails because arg_strtou64 is not defined and we +cannot just add utils.o to library objects because it's not +library-clean. + +Reported-by: Arvin Schnell +Signed-off-by: David Sterba +--- + Makefile | 5 +++-- + libutils.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + utils.c | 33 --------------------------------- + 3 files changed, 46 insertions(+), 35 deletions(-) + create mode 100644 libutils.c + +diff --git a/Makefile b/Makefile +index da0519766443..9ae7115d23a3 100644 +--- a/Makefile ++++ b/Makefile +@@ -9,14 +9,15 @@ CFLAGS = -g -O1 -fno-strict-aliasing + objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \ + root-tree.o dir-item.o file-item.o inode-item.o inode-map.o \ + extent-cache.o extent_io.o volumes.o utils.o repair.o \ +- qgroup.o raid6.o free-space-cache.o list_sort.o props.o ++ qgroup.o raid6.o free-space-cache.o list_sort.o props.o \ ++ libutils.o + cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \ + cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \ + cmds-quota.o cmds-qgroup.o cmds-replace.o cmds-check.o \ + cmds-restore.o cmds-rescue.o chunk-recover.o super-recover.o \ + cmds-property.o + libbtrfs_objects = send-stream.o send-utils.o rbtree.o btrfs-list.o crc32c.o \ +- uuid-tree.o ++ uuid-tree.o libutils.o + libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \ + crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \ + extent_io.h ioctl.h ctree.h btrfsck.h +diff --git a/libutils.c b/libutils.c +new file mode 100644 +index 000000000000..074f771e0b6e +--- /dev/null ++++ b/libutils.c +@@ -0,0 +1,43 @@ ++#define _GNU_SOURCE ++ ++#include "kerncompat.h" ++#include ++#include ++#include ++ ++#if BTRFS_FLAT_INCLUDES ++#else ++#endif /* BTRFS_FLAT_INCLUDES */ ++ ++/* ++ * This function should be only used when parsing ++ * command arg, it won't return error to it's ++ */ ++u64 arg_strtou64(const char *str) ++{ ++ u64 value; ++ char *ptr_parse_end = NULL; ++ ++ value = strtoull(str, &ptr_parse_end, 0); ++ if (ptr_parse_end && *ptr_parse_end != '\0') { ++ fprintf(stderr, "ERROR: %s is not a valid numeric value.\n", ++ str); ++ exit(1); ++ } ++ /* ++ * if we pass a negative number to strtoull, ++ * it will return an unexpected number to us, ++ * so let's do the check ourselves. ++ */ ++ if (str[0] == '-') { ++ fprintf(stderr, "ERROR: %s: negative value is invalid.\n", ++ str); ++ exit(1); ++ } ++ if (value == ULLONG_MAX) { ++ fprintf(stderr, "ERROR: %s is too large.\n", str); ++ exit(1); ++ } ++ return value; ++} ++ +diff --git a/utils.c b/utils.c +index 3e9c527a492c..134f43a76fe9 100644 +--- a/utils.c ++++ b/utils.c +@@ -1539,39 +1539,6 @@ scan_again: + return 0; + } + +-/* +- * This function should be only used when parsing +- * command arg, it won't return error to it's +- * caller and rather exit directly just like usage(). +- */ +-u64 arg_strtou64(const char *str) +-{ +- u64 value; +- char *ptr_parse_end = NULL; +- +- value = strtoull(str, &ptr_parse_end, 0); +- if (ptr_parse_end && *ptr_parse_end != '\0') { +- fprintf(stderr, "ERROR: %s is not a valid numeric value.\n", +- str); +- exit(1); +- } +- /* +- * if we pass a negative number to strtoull, +- * it will return an unexpected number to us, +- * so let's do the check ourselves. +- */ +- if (str[0] == '-') { +- fprintf(stderr, "ERROR: %s: negative value is invalid.\n", +- str); +- exit(1); +- } +- if (value == ULLONG_MAX) { +- fprintf(stderr, "ERROR: %s is too large.\n", str); +- exit(1); +- } +- return value; +-} +- + u64 parse_size(char *s) + { + int i; +-- +1.9.0 + diff --git a/btrfsprogs.changes b/btrfsprogs.changes index a6ab385..682fc46 100644 --- a/btrfsprogs.changes +++ b/btrfsprogs.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Apr 11 11:30:32 UTC 2014 - dsterba@suse.cz + +- add missing symbol to library (bnc#873164) +- add version dependency for devel package +- Added patches: + * 0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch + ------------------------------------------------------------------- Tue Apr 8 11:42:43 UTC 2014 - dsterba@suse.cz diff --git a/btrfsprogs.spec b/btrfsprogs.spec index 0bd54b9..15aed98 100644 --- a/btrfsprogs.spec +++ b/btrfsprogs.spec @@ -30,6 +30,9 @@ Url: http://btrfs.wiki.kernel.org/index.php/Main_Page Source: btrfs-progs-%{tar_version}.tar.bz2 Source1: boot-btrfs.sh Source4: setup-btrfs.sh + +Patch1: 0001-btrfs-progs-move-arg_strtou64-to-a-separate-file-for.patch + Patch163: 0163-btrfs-progs-fsck-fix-segfault.patch Patch164: 0164-btrfs-progs-convert-set-label-or-copy-from-origin.patch Patch167: 0167-Btrfs-progs-make-find_and_setup_root-return-an-error.patch @@ -64,7 +67,8 @@ applications to interface with btrfs. %package -n libbtrfs-devel Summary: Include Files and Libraries for developing with Btrfs Group: Development/Libraries/C and C++ -Requires: libbtrfs0 +Requires: %{name} = %{version}-%{release} +Requires: libbtrfs0 = %{version} %description -n libbtrfs-devel This package contains the libraries and headers files for developers to @@ -72,6 +76,7 @@ build applications to interface with btrfs. %prep %setup -q -n btrfs-progs-%{tar_version} +%patch1 -p1 %patch163 -p1 %patch164 -p1 %patch167 -p1