summaryrefslogtreecommitdiff
path: root/sys-fs
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2014-05-20 14:47:03 +0000
committerMike Gilbert <floppym@gentoo.org>2014-05-20 14:47:03 +0000
commit0150133e8009792446e2b888ad8dbc622852dc7d (patch)
treec99711c94b8b66ef6a7075168c9e06ef4f3f7e26 /sys-fs
parentversion bump (diff)
downloadgentoo-2-0150133e8009792446e2b888ad8dbc622852dc7d.tar.gz
gentoo-2-0150133e8009792446e2b888ad8dbc622852dc7d.tar.bz2
gentoo-2-0150133e8009792446e2b888ad8dbc622852dc7d.zip
Backport patch to fix linking failures with libbtrfs, reported by dlan.
(Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key 0BBEEA1FEA4843A4)
Diffstat (limited to 'sys-fs')
-rw-r--r--sys-fs/btrfs-progs/ChangeLog8
-rw-r--r--sys-fs/btrfs-progs/btrfs-progs-3.14.1-r1.ebuild58
-rw-r--r--sys-fs/btrfs-progs/files/btrfs-progs-3.14.1-arg_strtou64.patch146
3 files changed, 211 insertions, 1 deletions
diff --git a/sys-fs/btrfs-progs/ChangeLog b/sys-fs/btrfs-progs/ChangeLog
index a44187544fc9..409c92dd3a82 100644
--- a/sys-fs/btrfs-progs/ChangeLog
+++ b/sys-fs/btrfs-progs/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for sys-fs/btrfs-progs
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/ChangeLog,v 1.78 2014/04/29 01:50:12 floppym Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/ChangeLog,v 1.79 2014/05/20 14:47:03 floppym Exp $
+
+*btrfs-progs-3.14.1-r1 (20 May 2014)
+
+ 20 May 2014; Mike Gilbert <floppym@gentoo.org> +btrfs-progs-3.14.1-r1.ebuild,
+ +files/btrfs-progs-3.14.1-arg_strtou64.patch:
+ Backport patch to fix linking failures with libbtrfs, reported by dlan.
*btrfs-progs-3.14.1 (29 Apr 2014)
diff --git a/sys-fs/btrfs-progs/btrfs-progs-3.14.1-r1.ebuild b/sys-fs/btrfs-progs/btrfs-progs-3.14.1-r1.ebuild
new file mode 100644
index 000000000000..38a92808882f
--- /dev/null
+++ b/sys-fs/btrfs-progs/btrfs-progs-3.14.1-r1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/btrfs-progs-3.14.1-r1.ebuild,v 1.1 2014/05/20 14:47:03 floppym Exp $
+
+EAPI=5
+
+inherit eutils multilib toolchain-funcs
+
+libbtrfs_soname=0
+
+if [[ ${PV} != 9999 ]]; then
+ MY_PV=v${PV}
+ KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+ SRC_URI="https://www.kernel.org/pub/linux/kernel/people/mason/${PN}/${PN}-${MY_PV}.tar.xz"
+ S="${WORKDIR}"/${PN}-${MY_PV}
+else
+ inherit git-2
+ EGIT_REPO_URI="git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git
+ https://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git"
+fi
+
+DESCRIPTION="Btrfs filesystem utilities"
+HOMEPAGE="https://btrfs.wiki.kernel.org"
+
+LICENSE="GPL-2"
+SLOT="0/${libbtrfs_soname}"
+IUSE=""
+
+DEPEND="
+ dev-libs/lzo
+ sys-libs/zlib
+ sys-apps/acl
+ sys-fs/e2fsprogs
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}/${P}-arg_strtou64.patch"
+ epatch_user
+}
+
+src_compile() {
+ emake \
+ AR="$(tc-getAR)" \
+ CC="$(tc-getCC)" \
+ CFLAGS="${CFLAGS}" \
+ LDFLAGS="${LDFLAGS}" \
+ BUILD_VERBOSE=1
+}
+
+src_install() {
+ emake install \
+ DESTDIR="${D}" \
+ prefix=/usr \
+ bindir=/sbin \
+ libdir=/usr/$(get_libdir) \
+ mandir=/usr/share/man
+}
diff --git a/sys-fs/btrfs-progs/files/btrfs-progs-3.14.1-arg_strtou64.patch b/sys-fs/btrfs-progs/files/btrfs-progs-3.14.1-arg_strtou64.patch
new file mode 100644
index 000000000000..a9cced815b21
--- /dev/null
+++ b/sys-fs/btrfs-progs/files/btrfs-progs-3.14.1-arg_strtou64.patch
@@ -0,0 +1,146 @@
+From: David Sterba <dsterba@suse.cz>
+To: linux-btrfs@vger.kernel.org
+Subject: [PATCH v2] btrfs-progs: move arg_strtou64 to a separate file for library
+Date: Tue, 22 Apr 2014 17:49:01 +0200
+
+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 <aschnell@suse.com>
+Reported-by: Anton Farygin <rider@altlinux.org>
+Signed-off-by: David Sterba <dsterba@suse.cz>
+---
+
+v2: (thanks to Hugo)
+- added missing line from comment
+- fixed typo
+- reformated comment paragraphs
+
+ Makefile | 5 +++--
+ utils-lib.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ utils.c | 33 ---------------------------------
+ 3 files changed, 45 insertions(+), 35 deletions(-)
+ create mode 100644 utils-lib.c
+
+diff --git a/Makefile b/Makefile
+index 51d53fadf5af..76565e8b2307 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 \
++ utils-lib.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 utils-lib.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/utils-lib.c b/utils-lib.c
+new file mode 100644
+index 000000000000..9d53c6e5c710
+--- /dev/null
++++ b/utils-lib.c
+@@ -0,0 +1,42 @@
++#define _GNU_SOURCE
++
++#include "kerncompat.h"
++#include <unistd.h>
++#include <stdlib.h>
++#include <limits.h>
++
++#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 its 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;
++}
+diff --git a/utils.c b/utils.c
+index 29953d9dd2a9..e130849c7bb5 100644
+--- a/utils.c
++++ b/utils.c
+@@ -1538,39 +1538,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
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html