From cdae2fe589ca2904c7f46f79bdfe611370364b95 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 7 Jun 2016 21:35:39 +0000
Subject: time: initial inclusion. dep of hdf5

---
 abs/extra/time/PKGBUILD                            | 47 ++++++++++++++
 ...-Recompute-CPU-usage-at-microsecond-level.patch | 72 ++++++++++++++++++++++
 ...me-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch | 32 ++++++++++
 3 files changed, 151 insertions(+)
 create mode 100644 abs/extra/time/PKGBUILD
 create mode 100644 abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch
 create mode 100644 abs/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch

diff --git a/abs/extra/time/PKGBUILD b/abs/extra/time/PKGBUILD
new file mode 100644
index 0000000..6f08a73
--- /dev/null
+++ b/abs/extra/time/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id$
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
+# Contributor: Stéphane Gaudreault <stephane@archlinux.us>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=time
+pkgver=1.7
+pkgrel=8
+pkgdesc="Utility for monitoring a program's use of system resources"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/directory/time.html"
+license=('GPL')
+depends=('glibc')
+source=(http://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz
+        time-1.7-Recompute-CPU-usage-at-microsecond-level.patch
+        time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch)
+sha1sums=('dde0c28c7426960736933f3e763320680356cc6a'
+          'fff80e05dd41f0a59bb1f49d1c6e581d5e8e92e5'
+          'b2a909e1d92f7af1bc99a4524ad84d467ed79a06')
+
+prepare() {
+  cd "$pkgname-$pkgver"
+
+  # cf https://bugzilla.redhat.com/show_bug.cgi?id=527276
+  patch -Np1 < "$srcdir"/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch
+
+  # cf https://bugzilla.redhat.com/show_bug.cgi?id=702826
+  patch -Np1 < "$srcdir"/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch
+
+  # rebuild the ancient autoconf setup to fix a variety of build issues
+  # surrounding missing/incorrect includes.
+  autoreconf -fisv
+}
+
+build() {
+  cd "$pkgname-$pkgver"
+
+  ./configure --prefix=/usr --infodir=/usr/share/info
+  make
+}
+
+package() {
+  cd "$pkgname-$pkgver"
+
+  make exec_prefix="$pkgdir/usr" infodir="$pkgdir/usr/share/info" install
+}
diff --git a/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch b/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch
new file mode 100644
index 0000000..008f46c
--- /dev/null
+++ b/abs/extra/time/time-1.7-Recompute-CPU-usage-at-microsecond-level.patch
@@ -0,0 +1,72 @@
+From 0d743a7d946fe176a07baf2586a6af0e867fd89c Mon Sep 17 00:00:00 2001
+From: H.J. Lu <hongjiu.lu@intel.com>
+Date: Wed, 11 May 2011 16:19:55 +0200
+Subject: [PATCH] Recompute CPU usage at microsecond level
+
+If job finishes quickly, miliseconds arithmetic rounds to zero. If
+that happens, recalculate CPU usage ratio with microsecond accuracy
+to raise chance to get non-zero values.
+---
+ resuse.h |    2 ++
+ time.c   |   15 +++++++++++++++
+ 2 files changed, 17 insertions(+), 0 deletions(-)
+
+diff --git a/resuse.h b/resuse.h
+index 992143f..7a3ee66 100644
+--- a/resuse.h
++++ b/resuse.h
+@@ -33,9 +33,11 @@ struct timeval
+ #if HAVE_SYS_RUSAGE_H
+ /* This rusage structure measures nanoseconds instead of microseconds.  */
+ # define TV_MSEC tv_nsec / 1000000
++# define TV_USEC tv_nsec / 1000
+ # include <sys/rusage.h>
+ #else
+ # define TV_MSEC tv_usec / 1000
++# define TV_USEC tv_usec
+ # if HAVE_WAIT3
+ #  include <sys/resource.h>
+ # else
+diff --git a/time.c b/time.c
+index 43aec0b..96cfdde 100644
+--- a/time.c
++++ b/time.c
+@@ -326,6 +326,8 @@ summarize (fp, fmt, command, resp)
+ {
+   unsigned long r;		/* Elapsed real milliseconds.  */
+   unsigned long v;		/* Elapsed virtual (CPU) milliseconds.  */
++  unsigned long ru;		/* Elapsed real microseconds.  */
++  unsigned long vu;		/* Elapsed virtual (CPU) microseconds.  */
+ 
+   if (verbose)
+   {
+@@ -350,6 +352,17 @@ summarize (fp, fmt, command, resp)
+   v = resp->ru.ru_utime.tv_sec * 1000 + resp->ru.ru_utime.TV_MSEC +
+     resp->ru.ru_stime.tv_sec * 1000 + resp->ru.ru_stime.TV_MSEC;
+ 
++  if (r == 0 && v == 0)
++    {
++      ru = resp->elapsed.tv_usec;
++      vu = resp->ru.ru_utime.TV_USEC + resp->ru.ru_stime.TV_USEC;
++    }
++  else
++    {
++      ru = 0;
++      vu = 0;
++    }
++
+   while (*fmt)
+     {
+       switch (*fmt)
+@@ -408,6 +421,8 @@ summarize (fp, fmt, command, resp)
+ 	      /* % cpu is (total cpu time)/(elapsed time).  */
+ 	      if (r > 0)
+ 		fprintf (fp, "%lu%%", (v * 100 / r));
++	      else if (ru > 0)
++		fprintf (fp, "%lu%%", (vu * 100 / ru));
+ 	      else
+ 		fprintf (fp, "?%%");
+ 	      break;
+-- 
+1.7.4.4
+
diff --git a/abs/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch b/abs/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch
new file mode 100644
index 0000000..1f68f9b
--- /dev/null
+++ b/abs/extra/time/time-1.7-ru_maxrss-is-in-kilobytes-on-Linux.patch
@@ -0,0 +1,32 @@
+From ad24a929bdcc15abae14a64ea21b821bcd8cb030 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Wed, 11 May 2011 15:19:11 +0200
+Subject: [PATCH] ru_maxrss is in kilobytes on Linux
+
+Since 2.6.32 Linux returns ru_maxrss in kilobytes. Not in pages.
+
+See http://lists.gnu.org/archive/html/bug-gnu-utils/2008-12/msg00047.html
+for discussion.
+---
+ time.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/time.c b/time.c
+index d15fee4..43aec0b 100644
+--- a/time.c
++++ b/time.c
+@@ -395,7 +395,11 @@ summarize (fp, fmt, command, resp)
+ 		       ptok ((UL) resp->ru.ru_ixrss) / MSEC_TO_TICKS (v));
+ 	      break;
+ 	    case 'M':		/* Maximum resident set size.  */
++#ifdef __linux__
++	      fprintf (fp, "%ld", resp->ru.ru_maxrss);
++#else
+ 	      fprintf (fp, "%lu", ptok ((UL) resp->ru.ru_maxrss));
++#endif
+ 	      break;
+ 	    case 'O':		/* Outputs.  */
+ 	      fprintf (fp, "%ld", resp->ru.ru_oublock);
+-- 
+1.7.4.4
+
-- 
cgit v0.12

