summary refs log tree commit diff
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-05-16 07:52:30 +0200
committerGitHub <noreply@github.com>2023-05-16 07:52:30 +0200
commit43f5efa4933610657eaf1dc1c1b64cee4fa9faea (patch)
tree3025480edbcea40d60fc84061fb07190a2b55731
parent752edce5e0be2f52433bf1974a930dbf7ebd2863 (diff)
parentb30ab8f1de88aec7167439002b66e13be47e94a9 (diff)
downloadnixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar.gz
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar.bz2
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar.lz
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar.xz
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.tar.zst
nixpkgs-43f5efa4933610657eaf1dc1c1b64cee4fa9faea.zip
Merge pull request #231127 from Aleksanaa/unixbench
unixbench: init at unstable-2023-04-12
-rw-r--r--pkgs/development/tools/misc/unixbench/common.patch108
-rw-r--r--pkgs/development/tools/misc/unixbench/default.nix109
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 219 insertions, 0 deletions
diff --git a/pkgs/development/tools/misc/unixbench/common.patch b/pkgs/development/tools/misc/unixbench/common.patch
new file mode 100644
index 00000000000..68961cbe2ed
--- /dev/null
+++ b/pkgs/development/tools/misc/unixbench/common.patch
@@ -0,0 +1,108 @@
+diff --git a/UnixBench/Run b/UnixBench/Run
+index 34d2c72..130b56e 100755
+--- a/UnixBench/Run
++++ b/UnixBench/Run
+@@ -81,23 +81,23 @@ my $longIterCount = 10;
+ my $shortIterCount = 3;
+ 
+ # C compiler to use in compilation tests.
+-my $cCompiler = 'gcc';
++my $cCompiler = 'cc -w';
+ 
+ # Establish full paths to directories.  These need to be full pathnames
+ # (or do they, any more?).  They can be set in env.
+ # variable names are the first parameter to getDir() below.
+ 
+ # Directory where the test programs live.
+-my $BINDIR = getDir('UB_BINDIR', $FindBin::Bin . "/pgms");
++my $BINDIR = getDir('UB_BINDIR', '@out@/libexec/pgms');
+ 
+ # Temp directory, for temp files.
+-my $TMPDIR = getDir('UB_TMPDIR', $FindBin::Bin . "/tmp");
++my $TMPDIR = getDir('UB_TMPDIR', "$ENV{'PWD'}/unixbench/temp");
+ 
+ # Directory to put results in.
+-my $RESULTDIR = getDir('UB_RESULTDIR', $FindBin::Bin . "/results");
++my $RESULTDIR = getDir('UB_RESULTDIR', "$ENV{'PWD'}/unixbench/results");
+ 
+ # Directory where the tests are executed.
+-my $TESTDIR = getDir('UB_TESTDIR', $FindBin::Bin . "/testdir");
++my $TESTDIR = getDir('UB_TESTDIR', '@out@/share/testdir');
+ 
+ 
+ ############################################################################
+@@ -330,19 +330,19 @@ my $testParams = {
+         "logmsg" => "Shell Scripts (1 concurrent)",
+         "cat"    => 'system',
+         "prog" => "${BINDIR}/looper",
+-        "options" => "60 \"${BINDIR}/multi.sh\" 1",
++        "options" => "60 \"${BINDIR}/multi.sh\" 1 ${TMPDIR} ${TESTDIR}",
+     },
+     "shell8" => {
+         "logmsg" => "Shell Scripts (8 concurrent)",
+         "cat"    => 'system',
+         "prog" => "${BINDIR}/looper",
+-        "options" => "60 \"${BINDIR}/multi.sh\" 8",
++        "options" => "60 \"${BINDIR}/multi.sh\" 8 ${TMPDIR} ${TESTDIR}",
+     },
+     "shell16" => {
+         "logmsg" => "Shell Scripts (16 concurrent)",
+         "cat"    => 'system',
+         "prog" => "${BINDIR}/looper",
+-        "options" => "60 \"${BINDIR}/multi.sh\" 16",
++        "options" => "60 \"${BINDIR}/multi.sh\" 16 ${TMPDIR} ${TESTDIR}",
+     },
+ 
+     ##########################
+@@ -434,7 +434,7 @@ my $testParams = {
+         "logmsg" => "C Compiler Throughput ($cCompiler)",
+         "cat"    => 'misc',
+         "prog" => "${BINDIR}/looper",
+-        "options" => "60 $cCompiler cctest.c",
++        "options" => "60 $cCompiler $TESTDIR/cctest.c -o $TMPDIR/cctest",
+     },
+     "arithoh" => {
+         "logmsg" => "Arithoh",
+@@ -873,16 +873,6 @@ sub preChecks {
+     # Set the language.
+     $ENV{'LANG'} = $language;
+ 
+-    # Check that the required files are in the proper places.
+-    my $make = $ENV{MAKE} || "make";
+-    system("$make check");
+-    if ($? != 0) {
+-        system("$make all");
+-        if ($? != 0) {
+-            abortRun("\"$make all\" failed");
+-        }
+-    }
+-
+     # Create a script to kill this run.
+     system("echo \"kill -9 $$\" > \"${TMPDIR}/kill_run\"");
+     chmod(0755, $TMPDIR . "/kill_run");
+@@ -923,7 +913,10 @@ sub parseArgs {
+                 $params->{'copies'} = [ ];
+             }
+             push(@{$params->{'copies'}}, shift(@words));
+-        } else {
++        } elsif ($word eq "--help" || $word eq "-h") {
++	    print "Run: please see ubench(1) for available options\n";
++	    exit 0;
++	}else {
+             die("Run: unknown option $word\n");
+         }
+     }
+diff --git a/UnixBench/pgms/multi.sh b/UnixBench/pgms/multi.sh
+index 72e8716..d2f5f48 100755
+--- a/UnixBench/pgms/multi.sh
++++ b/UnixBench/pgms/multi.sh
+@@ -15,7 +15,8 @@
+ ###############################################################################
+ ID="@(#)multi.sh:3.4 -- 5/15/91 19:30:24";
+ instance=1
+-sort_src=sort.src
++sort_src=$3/sort.src
++cd $2
+ work_factor=${MULTI_SH_WORK_FACTOR:-1}
+ if [ $work_factor -gt 1 ]; then
+ 	inputs=
diff --git a/pkgs/development/tools/misc/unixbench/default.nix b/pkgs/development/tools/misc/unixbench/default.nix
new file mode 100644
index 00000000000..3d1b424ab0b
--- /dev/null
+++ b/pkgs/development/tools/misc/unixbench/default.nix
@@ -0,0 +1,109 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, pandoc
+, installShellFiles
+, perl
+, xorg
+, libGL
+, coreutils
+, unixtools
+, targetPackages
+, gnugrep
+, gawk
+, withGL? true
+, withX11perf? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "unixbench";
+  version = "unstable-2023-02-27";
+
+  src = fetchFromGitHub {
+    owner = "kdlucas";
+    repo = "byte-unixbench";
+    rev = "a07fcc03264915c624f0e4818993c5b4df3fa703";
+    hash = "sha256-gmRWAqE9/HBb0S9rK0DXoaCoiGbtat0gmdeozhbv0NI=";
+  };
+
+  patches = [
+    ./common.patch
+  ];
+
+  patchFlags = [ "-p2" ];
+
+  sourceRoot = "source/UnixBench";
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "-Wa,-q" ""
+  '';
+
+  nativeBuildInputs = [
+    makeWrapper
+    pandoc
+    installShellFiles
+  ];
+
+  buildInputs = [ perl ] ++ lib.optionals withGL [
+    xorg.libX11
+    xorg.libXext
+    libGL
+  ];
+
+  runtimeDependencies = [
+    coreutils
+    unixtools.nettools
+    unixtools.locale
+    targetPackages.stdenv.cc
+    gnugrep
+    gawk
+  ] ++ lib.optionals withX11perf [
+    xorg.x11perf
+  ];
+
+  makeFlags = [
+    "CC=${stdenv.cc.targetPrefix}cc"
+  ] ++ lib.optionals withGL [
+    "GRAPHIC_TESTS=defined"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/{bin,libexec,share}
+    install -D Run $out/bin/ubench
+    cp -r pgms $out/libexec/
+    cp -r testdir $out/share/
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    substituteInPlace USAGE \
+      --replace 'Run"' 'ubench"' \
+      --replace './Run' 'ubench' \
+      --replace 'Run ' 'ubench '
+    pandoc -f rst -t man USAGE -o ubench.1
+    installManPage ubench.1
+  '';
+
+  preFixup = ''
+    substituteInPlace $out/libexec/pgms/multi.sh \
+      --replace '/bin/sh "$' '${targetPackages.runtimeShell} "$'
+
+    substituteInPlace $out/bin/ubench \
+      --subst-var out
+
+    wrapProgram $out/bin/ubench \
+      --prefix PATH : ${lib.makeBinPath runtimeDependencies}
+  '';
+
+  meta = with lib; {
+    description = "A basic indicator of the performance of a Unix-like system";
+    homepage = "https://github.com/kdlucas/byte-unixbench";
+    license = licenses.gpl2Plus;
+    mainProgram = "ubench";
+    maintainers = with maintainers; [ aleksana ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5a3bf852817..ab527c5ac7f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -13290,6 +13290,8 @@ with pkgs;
 
   unfs3 = callPackage ../servers/unfs3 { };
 
+  unixbench = callPackage ../development/tools/misc/unixbench { };
+
   unoconv = callPackage ../tools/text/unoconv { };
 
   unrtf = callPackage ../tools/text/unrtf { };