Subject: sysbench (New package)
From: Eric Brown <[email-masked]>
To: [email-masked]
Date: Mon, 13 Apr 2020 20:55:25 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Dear All,

Please see attached a patch for sysbench, a benchmarking utility.

Best regards,
Eric

From 4906fb3db0482cbb5862f8f56e6e107499dee2d8 Mon Sep 17 00:00:00 2001
From: Eric Brown <[email-masked]>
Date: Mon, 13 Apr 2020 20:34:11 -0500
Subject: [PATCH] gnu: Add sysbench.

* gnu/packages/benchmark.scm (sysbench): New variable.
---
 gnu/packages/benchmark.scm | 64 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 4e6c416518..b27cd5436e 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2019 Gábor Boskovits <[email-masked]>
 ;;; Copyright © 2019 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2020 Vincent Legoll <[email-masked]>
+;;; Copyright © 2020 Eric Brown <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,16 +32,22 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages storage)
+  #:use-module (gnu packages tls)
   #:use-module (ice-9 match))
 
 (define-public fio
@@ -258,3 +265,60 @@ benchmark how your file systems perform with respect to data read and write
 speed, the number of seeks that can be performed per second, and the number of
 file metadata operations that can be performed per second.")
     (license license:gpl2)))   ;GPL 2 only, see copyright.txt
+
+(define-public sysbench
+  (package
+    (name "sysbench")
+    (version "1.0.19")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/akopytov/sysbench")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zgqb9cr7ld3vw4a3jhq1mlszhcyjlpr0c8q1jcp1d27l9dcvd1w"))
+       (modules '((guix build utils)))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; until shebangs fixed
+       #:configure-flags '("--with-system-luajit")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'bootstrap)
+         (add-after 'patch-source-shebangs 'libtoolize
+           (lambda _ (invoke "libtoolize" "--copy" "--force")))
+         (add-after 'libtoolize 'aclocal
+           (lambda _ (invoke "aclocal" "-I" "m4")))
+         (add-after 'aclocal 'autoreconf
+           (lambda _ (invoke "autoreconf" "--install")))
+         (add-after 'autoreconf 'automake
+           (lambda _ (invoke "automake"
+                             "-c" "--foreign" "--add-missing")))
+         (add-after 'automake 'autoconf
+           (lambda _ (invoke "autoconf"))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("lua" ,lua)
+       ("m4" ,m4)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-minimal)))
+    (inputs
+     `(("libaio" ,libaio)
+       ("luajit" ,luajit)
+       ("mysql" ,mysql)
+       ("openssl" ,openssl)
+       ("postgresql" ,postgresql)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/akopytov/sysbench/")
+    (synopsis "Scriptable multi-threaded benchmark tool ")
+    (description "sysbench is a scriptable multi-threaded benchmark tool based
+on LuaJIT. It is most frequently used for database benchmarks, but can also be
+used to create arbitrarily complex workloads that do not involve a database
+server.")
+    (license license:gpl2+)))
+
-- 
2.26.0