fio: Upgraded package to upstream

Upgraded sys-block/fio to version 2.1.14

CHERRY-PICK: fio: upgraded package to upstream [2.1.8-r1]

Upgraded sys-block/fio to version 2.1.8-r1 on amd64, x86

BUG=chrome-os-partner:24465,chromium:338756
CQ-DEPEND=CL:233623
TEST=Check on falco and peach-pi:
TEST= Rand hardware_StorageFio.quicktest

Change-Id: I3bb44eb4d71da49f6a96c133f80a3fed4f0f15f2
Original-Change-Id: Ie5c17a44628d450086184c45aeaf2a6aa8bdf701
Reviewed-on: https://chromium-review.googlesource.com/195409
Tested-by: Gwendal Grignou <gwendal@chromium.org>
Commit-Queue: Gwendal Grignou <gwendal@chromium.org>
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>

CHERRY-PICK: fio: upgraded package to upstream

Upgraded sys-block/fio to version 2.1.10-r1 on amd64, arm, x86

BUG=chromium:389211
TEST=Run hardware_StorageFio.bvt on falco / spring

Change-Id: I21dd34beae1aba099fcf30c462602ea5aa61739d
Original-Change-Id: I1669976830407b867b989e13eda82aa68e6d7bc6
Reviewed-on: https://chromium-review.googlesource.com/205521
Tested-by: Puthikorn Voravootivat <puthik@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Gwendal Grignou <gwendal@chromium.org>

CHERRY-PICK: fio: upgraded package to upstream

Upgraded sys-block/fio to version 2.1.14 on amd64, arm, x86
with
 cros_portage_upgrade --board=falco:daisy_spring:x86-generic --upgrade
--unstable-ok sys-block/fio

BUG=chromium:395682,chromium:426747
TEST=Check that c/209966 now works.
 Test that hardware_StorageFio.quicktest works on Ryu, Gnawty and Samus.

Change-Id: I46e3c48c58017b42abeaf15d649c5459a5142b88
Original-Change-Id: I6c488dc0998f3187f1ded3a3e96dbb5e58af3607
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/224183
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/233697
Commit-Queue: Mohammed Habibulla <moch@chromium.org>
Tested-by: Mohammed Habibulla <moch@chromium.org>
diff --git a/metadata/md5-cache/sys-block/fio-2.1.14 b/metadata/md5-cache/sys-block/fio-2.1.14
new file mode 100644
index 0000000..f058897
--- /dev/null
+++ b/metadata/md5-cache/sys-block/fio-2.1.14
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=aio? ( dev-libs/libaio ) glusterfs? ( sys-cluster/glusterfs ) gtk? ( dev-libs/glib:2 x11-libs/gtk+:2 ) numa? ( sys-process/numactl ) rbd? ( sys-cluster/ceph ) zlib? ( sys-libs/zlib )
+DESCRIPTION=Jens Axboe's Flexible IO tester
+EAPI=5
+HOMEPAGE=http://brick.kernel.dk/snaps/
+IUSE=aio glusterfs gnuplot gtk numa rbd zlib python_targets_python2_7
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=aio? ( dev-libs/libaio ) glusterfs? ( sys-cluster/glusterfs ) gtk? ( dev-libs/glib:2 x11-libs/gtk+:2 ) numa? ( sys-process/numactl ) rbd? ( sys-cluster/ceph ) zlib? ( sys-libs/zlib ) gnuplot? ( sci-visualization/gnuplot python_targets_python2_7? ( >=dev-lang/python-2.7.3-r2:2.7 ) dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] )
+SLOT=0
+SRC_URI=http://brick.kernel.dk/snaps/fio-2.1.14.tar.bz2
+_eclasses_=eutils	06133990e861be0fe60c2b428fd025d9	multibuild	46527a4656956da3d58acff72c9b59b1	multilib	3bf24e6abb9b76d9f6c20600f0b716bf	multiprocessing	d7f2985a2c76c365ee20269db5261414	python-r1	cd956d5a4bac2209a64d0f4851cc115d	python-utils-r1	3eaef07c45447158fad343dac1667938	toolchain-funcs	48b38a216afb92db6314d6c3187abea3
+_md5_=b94ee6a7724bdae695e027bde3b15adc
diff --git a/sys-block/fio/Manifest b/sys-block/fio/Manifest
new file mode 100644
index 0000000..1df86b0
--- /dev/null
+++ b/sys-block/fio/Manifest
@@ -0,0 +1 @@
+DIST fio-2.1.14.tar.bz2 464442 SHA256 98f7c375c7b1c9f9b5e02578e858437059bc9bfa0db8edaa800a37dc5b21d854 SHA512 b6e8f81ca05d1c0441cd6d0a3e97d472e11697cb3aecb381f07901e81328e966a79bd3cb4ef42cdae9d1f04405fb667c026cd64d14afa8d67a3c78fe7b267213 WHIRLPOOL cc0303c5c8d34d4dd2a34b16700c652b0866216e1da56595eed3bd8776447d70eecdb5f8459629b54149cec4966df0d3742129f5e37513f0c53a007f64b38b92
diff --git a/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch b/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch
new file mode 100644
index 0000000..fa35e27
--- /dev/null
+++ b/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch
@@ -0,0 +1,29 @@
+diff -Nuar fio-2.0.14.orig/arch/arch-x86-common.h fio-2.0.14/arch/arch-x86-common.h
+--- fio-2.0.14.orig/arch/arch-x86-common.h	2013-02-21 18:12:32.000000000 +0000
++++ fio-2.0.14/arch/arch-x86-common.h	2013-03-27 01:48:04.000000000 +0000
+@@ -6,10 +6,24 @@
+ static inline void do_cpuid(unsigned int *eax, unsigned int *ebx,
+ 			    unsigned int *ecx, unsigned int *edx)
+ {
++#ifdef __PIC__
++    /* 32-bit Hardened GCC (PIC) uses register EBX, so it must be preserved 
++     * Fix ported from Gentoo's x86info-1.24-pic patch 
++     * http://tuxion.com/2010/07/02/clobber-registers.html */
++	asm volatile(
++            "movl %%ebx,%%edi\n"
++            "cpuid\n"
++            "movl %%ebx,%1\n"
++            "movl %%edi,%%ebx\n"
++		: "=a" (*eax), "=m" (*ebx), "=c" (*ecx), "=d" (*edx)
++		: "0" (*eax), "2" (*ecx)
++		: "memory", "%edi");
++#else
+ 	asm volatile("cpuid"
+ 		: "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
+ 		: "0" (*eax), "2" (*ecx)
+ 		: "memory");
++#endif
+ }
+ 
+ static inline void cpuid(unsigned int op,
+
diff --git a/sys-block/fio/files/fio-2.1.10-json.patch b/sys-block/fio/files/fio-2.1.10-json.patch
new file mode 100644
index 0000000..526be9b
--- /dev/null
+++ b/sys-block/fio/files/fio-2.1.10-json.patch
@@ -0,0 +1,32 @@
+From a606a802173272002e37be6475802be8c37481d6 Mon Sep 17 00:00:00 2001
+From: Puthikorn Voravootivat <puthik@chromium.org>
+Date: Tue, 24 Jun 2014 15:59:53 -0700
+Subject: [PATCH] Cast input argument for json_object_add_value_int to long
+ long
+
+The latency related (and some other) variables type is uint32_t
+but the JSON integer type is long long. So we need to cast
+the numbers to long long type to make JSON output correctly.
+
+Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
+Signed-off-by: Jens Axboe <axboe@fb.com>
+---
+ json.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/json.h b/json.h
+index 081afd6..962c11c 100644
+--- a/json.h
++++ b/json.h
+@@ -52,7 +52,7 @@ void json_free_object(struct json_object *obj);
+ 
+ int json_object_add_value_type(struct json_object *obj, const char *name, int type, ...);
+ #define json_object_add_value_int(obj, name, val) \
+-	json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (val))
++	json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (long long) (val))
+ #define json_object_add_value_float(obj, name, val) \
+ 	json_object_add_value_type((obj), name, JSON_TYPE_FLOAT, (val))
+ #define json_object_add_value_string(obj, name, val) \
+-- 
+2.0.0
+
diff --git a/sys-block/fio/fio-2.1.14.ebuild b/sys-block/fio/fio-2.1.14.ebuild
new file mode 100644
index 0000000..679ba3d
--- /dev/null
+++ b/sys-block/fio/fio-2.1.14.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-block/fio/fio-2.1.14.ebuild,v 1.1 2014/11/18 19:32:01 vapier Exp $
+
+EAPI="5"
+PYTHON_COMPAT=( python2_7 )
+inherit eutils python-r1 toolchain-funcs
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="aio glusterfs gnuplot gtk numa rbd zlib"
+
+DEPEND="aio? ( dev-libs/libaio )
+	glusterfs? ( sys-cluster/glusterfs )
+	gtk? (
+		dev-libs/glib:2
+		x11-libs/gtk+:2
+	)
+	numa? ( sys-process/numactl )
+	rbd? ( sys-cluster/ceph )
+	zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}
+	gnuplot? (
+		sci-visualization/gnuplot
+		${PYTHON_DEPS}
+	)"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+	sed -i '/^DEBUGFLAGS/s, -D_FORTIFY_SOURCE=2,,g' Makefile || die
+	epatch_user
+
+	# Many checks don't have configure flags.
+	sed -i \
+		-e "s:\<pkg-config\>:$(tc-getPKG_CONFIG):" \
+		-e '/if compile_prog "" "-lz" "zlib" *; *then/  '"s::if $(usex zlib true false) ; then:" \
+		-e '/if compile_prog "" "-laio" "libaio" ; then/'"s::if $(usex aio true false) ; then:" \
+		configure || die
+}
+
+src_configure() {
+	chmod g-w "${T}"
+	# not a real configure script
+	./configure \
+		--extra-cflags="${CFLAGS} ${CPPFLAGS}" \
+		--cc="$(tc-getCC)" \
+		$(usex glusterfs '' '--disable-gfapi') \
+		$(usex gtk '--enable-gfio' '') \
+		$(usex numa '' '--disable-numa') \
+		$(usex rbd '' '--disable-rbd') \
+		|| die 'configure failed'
+}
+
+src_compile() {
+	emake V=1 OPTFLAGS=
+}
+
+src_install() {
+	emake install DESTDIR="${D}" prefix="${EPREFIX}/usr" mandir="${EPREFIX}/usr/share/man"
+
+	if use gnuplot ; then
+		python_replicate_script "${ED}/usr/bin/fio2gnuplot"
+	else
+		rm "${ED}"/usr/bin/{fio2gnuplot,fio_generate_plots} || die
+		rm "${ED}"/usr/share/man/man1/{fio2gnuplot,fio_generate_plots}.1 || die
+		rm "${ED}"/usr/share/fio/*.gpm || die
+		rmdir "${ED}"/usr/share/fio/ 2>/dev/null
+	fi
+
+	# This tool has security/parallel issues -- it hardcodes /tmp/template.fio.
+	rm "${ED}"/usr/bin/genfio || die
+
+	dodoc README REPORTING-BUGS HOWTO
+	docinto examples
+	dodoc examples/*
+}
diff --git a/sys-block/fio/metadata.xml b/sys-block/fio/metadata.xml
new file mode 100644
index 0000000..17877aa
--- /dev/null
+++ b/sys-block/fio/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer>
+		<email>robbat2@gentoo.org</email>
+	</maintainer>
+	<maintainer>
+		<email>prometheanfire@gentoo.org</email>
+	</maintainer>
+	<use>
+		<flag name="aio">Enable AIO ioengine</flag>
+		<flag name="glusterfs">Enable GlusterFS gfapi support via <pkg>sys-cluster/glusterfs</pkg></flag>
+		<flag name="gnuplot">Install tools for generating gnuplots</flag>
+		<flag name="numa">Enable numa support</flag>
+		<flag name="rbd">Enable Rados block device support via <pkg>sys-cluster/ceph</pkg></flag>
+	</use>
+</pkgmetadata>