bonnie++: update to 2.00a
authorRosen Penev <rosenp@gmail.com>
Tue, 23 Feb 2021 03:49:29 +0000 (19:49 -0800)
committerRosen Penev <rosenp@gmail.com>
Tue, 23 Feb 2021 04:32:58 +0000 (20:32 -0800)
Add custom meson build since the Makefile requires too much patching
anyway.

Stop using uClibc++. It will be removed in the near future.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
utils/bonnie++/Makefile
utils/bonnie++/patches/010-meson.patch [new file with mode: 0644]
utils/bonnie++/patches/010-openwrt-fixes.patch [deleted file]
utils/bonnie++/patches/100-remove-using-namespace-std.patch [new file with mode: 0644]
utils/bonnie++/patches/101-fix-wrong-printf-off_t-format.patch [new file with mode: 0644]
utils/bonnie++/patches/102-add-missing-cast.patch [new file with mode: 0644]

index 6e6d6dfb6164c49a581590f56d202d003fe0dd77..5f3442749a58755c3ea6628497bda3c6b0df0316 100644 (file)
@@ -8,27 +8,27 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=bonnie++
-PKG_VERSION:=1.98
-PKG_RELEASE:=4
+PKG_VERSION:=2.00a
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_SOURCE_URL:=https://www.coker.com.au/bonnie++/
-PKG_HASH:=6e0bcbc08b78856fd998dd7bcb352d4615a99c26c2dc83d5b8345b102bad0b04
+PKG_SOURCE_URL:=https://www.coker.com.au/bonnie++
+PKG_HASH:=a8d33bbd81bc7eb559ce5bf6e584b9b53faea39ccfb4ae92e58f27257e468f0e
 
 PKG_MAINTAINER:=
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=copyright.txt
 
-PKG_FIXUP:=autoreconf
-PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+PKG_BUILD_DEPENDS:=meson/host
 
-include $(INCLUDE_DIR)/uclibc++.mk
 include $(INCLUDE_DIR)/package.mk
+include ../../devel/meson/meson.mk
 
 define Package/bonniexx
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS:=$(CXX_DEPENDS) +libpthread
+  DEPENDS:=+libstdcpp +libpthread
   TITLE:=Bonnie++ - hard drive bottleneck testing program.
   URL:=https://www.coker.com.au/bonnie++/
 endef
@@ -38,12 +38,17 @@ define Package/bonniexx/description
   tests of hard drive and file system performance.
 endef
 
-TARGET_CXXFLAGS += -ffunction-sections -fdata-sections -fno-rtti -flto
+MESON_ARGS += \
+       -Db_lto=true \
+       -Dcpp_eh=none \
+       -Dcpp_rtti=false
+
+TARGET_CXXFLAGS += -ffunction-sections -fdata-sections
 
 define Package/bonniexx/install
        $(INSTALL_DIR) $(1)/usr/bin
-       $(CP) $(PKG_BUILD_DIR)/bonnie++ $(1)/usr/bin/
-       $(CP) $(PKG_BUILD_DIR)/bon_csv2html $(1)/usr/bin/
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/bonnie++ $(1)/usr/bin/
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/bon_csv2html $(1)/usr/bin/
 endef
 
 $(eval $(call BuildPackage,bonniexx))
diff --git a/utils/bonnie++/patches/010-meson.patch b/utils/bonnie++/patches/010-meson.patch
new file mode 100644 (file)
index 0000000..91b4939
--- /dev/null
@@ -0,0 +1,80 @@
+--- /dev/null
++++ b/conf.h.meson
+@@ -0,0 +1 @@
++#mesondefine HAVE_ALGORITHM
+--- /dev/null
++++ b/meson.build
+@@ -0,0 +1,73 @@
++project('bonnie++', 'cpp',
++  version : '2.00a',
++  default_options : [ 'cpp_std=c++11' ])
++
++cxx = meson.get_compiler('cpp')
++cdata = configuration_data()
++
++cdata.set('HAVE_ALGORITHM', cxx.has_header('algorithm'))
++
++configure_file(input : 'conf.h.meson',
++  output : 'conf.h',
++  configuration : cdata)
++
++bonniepp_incdir = include_directories('.')
++thread_dep = dependency('threads')
++
++add_global_arguments('-DHAVE_CONFIG_H', language : 'cpp')
++
++executable('bonnie++',
++  'bonnie++.cpp',
++  'bon_io.cpp',
++  'bon_file.cpp',
++  'bon_time.cpp',
++  'semaphore.cpp',
++  'sync.cpp',
++  'thread.cpp',
++  'bon_suid.cpp',
++  'duration.cpp',
++  'util.cpp',
++  'rand.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++  dependencies : thread_dep,
++)
++
++executable('bon_csv2html',
++  'bon_csv2html.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++)
++
++executable('zcav',
++  'zcav.cpp',
++  'thread.cpp',
++  'zcav_io.cpp',
++  'bon_suid.cpp',
++  'duration.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++  dependencies : [ thread_dep ]
++)
++
++executable('getc_putc',
++  'getc_putc.cpp',
++  'bon_suid.cpp',
++  'duration.cpp',
++  'util.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++)
++
++executable('getc_putc_helper',
++  'getc_putc_helper.cpp',
++  'duration.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++)
++
++executable('generate_randfile',
++  'generate_randfile.cpp',
++  install: true,
++  include_directories : bonniepp_incdir,
++)
diff --git a/utils/bonnie++/patches/010-openwrt-fixes.patch b/utils/bonnie++/patches/010-openwrt-fixes.patch
deleted file mode 100644 (file)
index 123a481..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -7,12 +7,6 @@ SCRIPTS=bon_csv2txt
- prefix=@prefix@
- eprefix=@exec_prefix@
--#MORE_WARNINGS=-Weffc++
--WFLAGS=-Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -Wcast-align -Wsign-compare -Wpointer-arith -Wwrite-strings -Wformat-security -Wswitch-enum -Winit-self $(MORE_WARNINGS)
--CFLAGS=-O2 @debug@ -DNDEBUG $(WFLAGS) $(MORECFLAGS)
--CXX=@CXX@ $(CFLAGS)
--LINK=@CXX@
--THREAD_LFLAGS=@thread_ldflags@
- INSTALL=@INSTALL@
- INSTALL_PROGRAM=@INSTALL_PROGRAM@
-@@ -34,22 +28,22 @@ GETCHSRC=getc_putc_helper.cpp duration.c
- GETCHOBJS=$(GETCHSRC:.cpp=.o)
- bonnie++: $(BONOBJS)
--      $(LINK) -o bonnie++ $(BONOBJS) $(THREAD_LFLAGS)
-+      $(CXX) $(CXXFLAGS) -o bonnie++ $(BONOBJS) @thread_ldflags@
- zcav: $(ZCAVOBJS)
--      $(LINK) -o zcav $(ZCAVOBJS) $(THREAD_LFLAGS)
-+      $(CXX) $(CXXFLAGS) -o zcav $(ZCAVOBJS) @thread_ldflags@
- getc_putc: $(GETCOBJS) getc_putc_helper
--      $(LINK) -o getc_putc $(GETCOBJS) $(THREAD_LFLAGS)
-+      $(CXX) $(CXXFLAGS) -o getc_putc $(GETCOBJS)
- getc_putc_helper: $(GETCHOBJS)
--      $(CXX) -o getc_putc_helper $(GETCHOBJS)
-+      $(CXX) $(CXXFLAGS) -o getc_putc_helper $(GETCHOBJS)
- bon_csv2html: bon_csv2html.o
--      $(LINK) bon_csv2html.o -o bon_csv2html
-+      $(CXX) $(CXXFLAGS) bon_csv2html.o -o bon_csv2html
- generate_randfile: generate_randfile.o
--      $(LINK) generate_randfile.o -o generate_randfile
-+      $(CXX) $(CXXFLAGS) generate_randfile.o -o generate_randfile
- install-bin: $(EXE) $(EXES)
-       mkdir -p $(eprefix)/bin $(eprefix)/sbin
-@@ -63,7 +57,7 @@ install: install-bin
-       @INSTALL_DATA@ $(MAN8) @mandir@/man8
- %.o: %.cpp
--      $(CXX) -c $<
-+      $(CXX) $(CXXFLAGS) -c $<
- clean:
-       rm -f $(EXE) $(EXES) *.o build-stamp install-stamp
---- a/configure.in
-+++ b/configure.in
-@@ -31,7 +31,6 @@ fi
- dnl Checks for programs.
- AC_LANG_CPLUSPLUS
--AC_PROG_CC
- AC_PROG_CXX
- AC_PROG_CXXCPP
- AC_PROG_INSTALL
-@@ -66,7 +65,7 @@ AC_SUBST(linux_pthread)
- AC_TRY_COMPILE([#define _GNU_SOURCE
- #include <pthread.h>
- ] , [pthread_mutexattr_t attr;
--    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);]
-+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);]
-   , linux_pthread="yes")
- if [[ -n "$linux_pthread" ]]; then
-    linux_pthread="#define LINUX_PTHREAD"
-@@ -83,7 +82,7 @@ void * thread_func(void * param) { retur
-   , thread_ldflags="-pthread")
- AC_SUBST(large_file)
--AC_TRY_RUN([#ifndef _LARGEFILE64_SOURCE
-+AC_TRY_COMPILE([#ifndef _LARGEFILE64_SOURCE
- #define _LARGEFILE64_SOURCE
- #endif
- #include <stdio.h>
diff --git a/utils/bonnie++/patches/100-remove-using-namespace-std.patch b/utils/bonnie++/patches/100-remove-using-namespace-std.patch
new file mode 100644 (file)
index 0000000..10574ab
--- /dev/null
@@ -0,0 +1,163 @@
+From 4f60ce245b3cfe2117fdaf00a9e74a49f769daca Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 22 Feb 2021 16:03:21 -0800
+Subject: [PATCH] remove using namespace std
+
+Fixes: warning: using directive refers to implicitly-defined namespace 'std'
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ bon_time.cpp  | 8 ++++----
+ bonnie++.cpp  | 8 ++++----
+ bonnie.h      | 2 --
+ duration.cpp  | 4 +---
+ getc_putc.cpp | 2 +-
+ rand.cpp      | 4 ++--
+ rand.h        | 5 ++---
+ 7 files changed, 14 insertions(+), 19 deletions(-)
+
+--- a/bon_time.cpp
++++ b/bon_time.cpp
+@@ -26,12 +26,12 @@ void BonTimer::add_delta_report(report_s
+   }
+   else
+   {
+-    m_delta[test].FirstStart = min(m_delta[test].FirstStart, rep.StartTime);
+-    m_delta[test].LastStop = max(m_delta[test].LastStop, rep.EndTime);
++    m_delta[test].FirstStart = std::min(m_delta[test].FirstStart, rep.StartTime);
++    m_delta[test].LastStop = std::max(m_delta[test].LastStop, rep.EndTime);
+   }
+   m_delta[test].CPU += rep.CPU;
+   m_delta[test].Elapsed = m_delta[test].LastStop - m_delta[test].FirstStart;
+-  m_delta[test].Latency = max(m_delta[test].Latency, rep.Latency);
++  m_delta[test].Latency = std::max(m_delta[test].Latency, rep.Latency);
+ }
+ BonTimer::BonTimer()
+@@ -56,7 +56,7 @@ BonTimer::Initialize()
+ void
+ BonTimer::add_latency(tests_t test, double t)
+ {
+-  m_delta[test].Latency = max(m_delta[test].Latency, t);
++  m_delta[test].Latency = std::max(m_delta[test].Latency, t);
+ }
+ int BonTimer::print_cpu_stat(tests_t test)
+--- a/bonnie++.cpp
++++ b/bonnie++.cpp
+@@ -75,7 +75,7 @@ public:
+   void set_io_chunk_size(int size)
+     { delete m_buf; pa_new(size, m_buf, m_buf_pa); m_io_chunk_size = size; }
+   void set_file_chunk_size(int size)
+-    { delete m_buf; m_buf = new char[max(size, m_io_chunk_size)]; m_file_chunk_size = size; }
++    { delete m_buf; m_buf = new char[std::max(size, m_io_chunk_size)]; m_file_chunk_size = size; }
+   // Return the page-aligned version of the local buffer
+   char *buf() { return m_buf_pa; }
+@@ -142,7 +142,7 @@ CGlobalItems::CGlobalItems(bool *exitFla
+  , m_buf(NULL)
+  , m_buf_pa(NULL)
+ {
+-  pa_new(max(m_io_chunk_size, m_file_chunk_size), m_buf, m_buf_pa);
++  pa_new(std::max(m_io_chunk_size, m_file_chunk_size), m_buf, m_buf_pa);
+   SetName(".");
+ }
+@@ -407,8 +407,8 @@ int main(int argc, char *argv[])
+     usage();
+   }
+ #endif
+-  globals.byte_io_size = min(file_size, globals.byte_io_size);
+-  globals.byte_io_size = max(0, globals.byte_io_size);
++  globals.byte_io_size = std::min(file_size, globals.byte_io_size);
++  globals.byte_io_size = std::max(0, globals.byte_io_size);
+   if(machine == NULL)
+   {
+--- a/bonnie.h
++++ b/bonnie.h
+@@ -1,8 +1,6 @@
+ #ifndef BONNIE
+ #define BONNIE
+-using namespace std;
+-
+ #define BON_VERSION "2.00"
+ #define CSV_VERSION "1.98"
+--- a/duration.cpp
++++ b/duration.cpp
+@@ -1,5 +1,3 @@
+-using namespace std;
+-
+ #include <stdlib.h>
+ #include "duration.h"
+@@ -38,7 +36,7 @@ double Duration_Base::stop()
+   getTime(&tv);
+   double ret;
+   ret = tv - m_start;
+-  m_max = max(m_max, ret);
++  m_max = std::max(m_max, ret);
+   return ret;
+ }
+--- a/getc_putc.cpp
++++ b/getc_putc.cpp
+@@ -140,7 +140,7 @@ int main(int argc, char *argv[])
+   int size = 0, wrote;
+   while(size < file_size)
+   {
+-    wrote = write(FILE_FD, buf, min(sizeof(buf), (size_t)file_size - size));
++    wrote = write(FILE_FD, buf, std::min(sizeof(buf), (size_t)file_size - size));
+     if(wrote < 0)
+     {
+       fprintf(stderr, "Can't extend file - disk full?\n");
+--- a/rand.cpp
++++ b/rand.cpp
+@@ -31,7 +31,7 @@ bool Rand::seedFile(CPCCHAR name)
+   }
+   close(fd);
+   m_ind = -1;
+-  m_name = string(name);
++  m_name = std::string(name);
+   return false;
+ }
+  
+@@ -44,7 +44,7 @@ void Rand::seedNum(UINT num)
+   m_init = num;
+   char buf[12];
+   sprintf(buf, "%u", num);
+-  m_name = string(buf);
++  m_name = std::string(buf);
+ }
+ void Rand::reset()
+--- a/rand.h
++++ b/rand.h
+@@ -1,7 +1,6 @@
+ #ifndef RAND_H
+ #define RAND_H
+-using namespace std;
+ #include "port.h"
+ #include <string>
+ #include <stdio.h>
+@@ -31,7 +30,7 @@ public:
+   int getSize() { return m_size; }
+-  string getSeed() { return m_name; }
++  std::string getSeed() { return m_name; }
+   void reset();
+@@ -39,7 +38,7 @@ private:
+   int *m_arr;
+   int m_size;
+   int m_ind;
+-  string m_name;
++  std::string m_name;
+   UINT m_init;
+   Rand(const Rand &t);
diff --git a/utils/bonnie++/patches/101-fix-wrong-printf-off_t-format.patch b/utils/bonnie++/patches/101-fix-wrong-printf-off_t-format.patch
new file mode 100644 (file)
index 0000000..a912089
--- /dev/null
@@ -0,0 +1,31 @@
+From 4f4d854b7758da89ced4dc800fcbec11667d61c8 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 22 Feb 2021 16:05:54 -0800
+Subject: [PATCH] fix wrong printf off_t format
+
+It's long vs. long long. There's a macro for this.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ port.h | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/port.h
++++ b/port.h
+@@ -3,14 +3,13 @@
+ #include "conf.h"
+-
+-
++#include <inttypes.h>
+ #ifndef _LARGEFILE64_SOURCE
+ #define _LARGEFILE64_SOURCE
+ #endif
+ #ifdef _LARGEFILE64_SOURCE
+-#define OFF_T_PRINTF "%lld"
++#define OFF_T_PRINTF "%" PRId64
+ #else
+ #define OFF_T_PRINTF "%d"
+ #endif
diff --git a/utils/bonnie++/patches/102-add-missing-cast.patch b/utils/bonnie++/patches/102-add-missing-cast.patch
new file mode 100644 (file)
index 0000000..04f5d37
--- /dev/null
@@ -0,0 +1,23 @@
+From 2e3e25454a165d55cbcd4fc78539454d4e0d8d51 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 22 Feb 2021 16:07:02 -0800
+Subject: [PATCH] add missing cast
+
+Fixes -Wformat
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ bon_time.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/bon_time.cpp
++++ b/bon_time.cpp
+@@ -146,7 +146,7 @@ int BonTimer::print_stat(tests_t test, i
+         }
+         else
+         {
+-          fprintf(m_fp, " %5d", stat);
++          fprintf(m_fp, " %5d", int(stat));
+         }
+       }
+       else