git: 05857c1ba030 - main - benchmarks/shellbench: add new port

Stefan Eßer se at FreeBSD.org
Thu Sep 23 10:21:31 UTC 2021


The branch main has been updated by se:

URL: https://cgit.FreeBSD.org/ports/commit/?id=05857c1ba0303241bbd497f3e21930c4fe23111c

commit 05857c1ba0303241bbd497f3e21930c4fe23111c
Author:     Stefan Eßer <se at FreeBSD.org>
AuthorDate: 2021-09-23 10:17:26 +0000
Commit:     Stefan Eßer <se at FreeBSD.org>
CommitDate: 2021-09-23 10:21:21 +0000

    benchmarks/shellbench: add new port
    
    This program allows to compare the performance of different POSIX
    shells (e.g. sh, bash, dash, ksh, zsh, ...).
    
    A number of sample scripts are included and can be easily extended to
    cover more areas.
---
 benchmarks/Makefile                          |  1 +
 benchmarks/shellbench/Makefile               | 29 ++++++++++
 benchmarks/shellbench/distinfo               |  3 ++
 benchmarks/shellbench/files/patch-shellbench | 80 ++++++++++++++++++++++++++++
 benchmarks/shellbench/pkg-descr              |  7 +++
 benchmarks/shellbench/pkg-plist              | 10 ++++
 6 files changed, 130 insertions(+)

diff --git a/benchmarks/Makefile b/benchmarks/Makefile
index d45d58ee2676..511849625cf8 100644
--- a/benchmarks/Makefile
+++ b/benchmarks/Makefile
@@ -85,6 +85,7 @@
     SUBDIR += scimark2c
     SUBDIR += siege
     SUBDIR += sipp
+    SUBDIR += shellbench
     SUBDIR += slowloris
     SUBDIR += smhasher
     SUBDIR += spp
diff --git a/benchmarks/shellbench/Makefile b/benchmarks/shellbench/Makefile
new file mode 100644
index 000000000000..872e8bd8c507
--- /dev/null
+++ b/benchmarks/shellbench/Makefile
@@ -0,0 +1,29 @@
+PORTNAME=	shellbench
+PORTVERSION=	20200806
+CATEGORIES=	benchmarks
+
+MAINTAINER=	se at FreeBSD.org
+COMMENT=	Benchmark utility for POSIX shell comparison
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	shellspec
+GH_TAGNAME=	ce43ba49d3
+
+NO_ARCH=	yes
+NO_BUILD=	yes
+
+OPTIONS_DEFINE=	DOCS
+
+do-install:
+		${REINPLACE_CMD} 's:%%DATADIR%%:${DATADIR}:g' ${WRKSRC}/shellbench
+		${REINPLACE_CMD} 's:%%DOCSDIR%%:${DOCSDIR}:g' ${WRKSRC}/shellbench
+		${INSTALL_SCRIPT} ${WRKSRC}/shellbench ${STAGEDIR}${PREFIX}/bin
+		${MKDIR} ${STAGEDIR}${DATADIR}
+		${INSTALL_DATA} ${WRKSRC}/sample/* ${STAGEDIR}${DATADIR}/
+		${MKDIR} ${STAGEDIR}${DOCSDIR}
+		${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}/
+
+.include <bsd.port.mk>
diff --git a/benchmarks/shellbench/distinfo b/benchmarks/shellbench/distinfo
new file mode 100644
index 000000000000..a51ec99c57a6
--- /dev/null
+++ b/benchmarks/shellbench/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1632383851
+SHA256 (shellspec-shellbench-20200806-ce43ba49d3_GH0.tar.gz) = 84abc9341c79092c1818d5f8bfa72566374fb011550b969c86d2f3bef23a5e4f
+SIZE (shellspec-shellbench-20200806-ce43ba49d3_GH0.tar.gz) = 7379
diff --git a/benchmarks/shellbench/files/patch-shellbench b/benchmarks/shellbench/files/patch-shellbench
new file mode 100644
index 000000000000..7a110cc447e1
--- /dev/null
+++ b/benchmarks/shellbench/files/patch-shellbench
@@ -0,0 +1,80 @@
+--- shellbench.orig	2020-08-06 15:07:20 UTC
++++ shellbench
+@@ -12,6 +12,8 @@ COUNT_WIDTH=${SHELLBENCH_COUNT_WIDTH:-10}
+ SHOW_ERROR=''
+ CORRECTION_MODE=''
+ NULLLOOP_COUNT=''
++ALL_SAMPLES=''
++SAMPLE_DIR=%%DATADIR%%
+ 
+ usage() {
+ cat<<HERE
+@@ -20,10 +22,19 @@ Usage: shellbench [options] files...
+   -s, --shell SHELL[,SHELL...]  The shell(s) to run the benchmark. [default: sh]
+   -t, --time SECONDS            Benchmark execution time. (SECONDS > 0) [default: 3]
+   -w, --warmup SECONDS          Benchmark preparation time. (SECONDS > 0) [default: 1]
++  -a, --allsamples              Execute all sample scripts
+   -c, --correct                 Enable correction mode to eliminate loop overhead.
+   -e, --error                   Display error details.
+   -h, --help                    You're looking at it.
++  -l, --listsamples             List names of the sample scripts
++
++The sample scripts can be found in %%DATADIR%% .
+ HERE
++if [ -r "%%DOCSDIR%%/README.md" ]; then
++cat<<HERE
++Their format is documented in %%DOCSDIR%%/README.md .
++HERE
++fi
+ }
+ 
+ preprocess() {
+@@ -313,6 +324,14 @@ display_footer() {
+ 
+ PARAMS=''
+ 
++all_samples() {
++  PARAMS="$PARAMS "$(echo %%DATADIR%%/*.sh)
++}
++
++list_samples() {
++  cd %%DATADIR%%; echo *.sh
++}
++
+ abort() { echo "$@" >&2; exit 1; }
+ unknown() { abort "Unrecognized option '$1'"; }
+ required() { [ $# -gt 1 ] || abort "Option '$1' requires an argument"; }
+@@ -327,9 +346,11 @@ parse_options() {
+       -s | --shell  ) required "$@" && shift; SHELLS=$1 ;;
+       -t | --time   ) required "$@" && shift; BENCHMARK_TIME=$1 ;;
+       -w | --warmup ) required "$@" && shift; WARMUP_TIME=$1 ;;
++      -a | --allsamples ) ALL_SAMPLES=1 ;;
+       -c | --correct) CORRECTION_MODE=1 ;;
+       -e | --error  ) SHOW_ERROR=1 ;;
+       -h | --help   ) usage; exit ;;
++      -l | --listsamples ) list_samples; exit ;;
+       --) shift; params PARAMS $(($OPTIND - $#)) $OPTIND; break ;;
+       -?*) unknown "$@" ;;
+       *) param PARAMS $(($OPTIND - $#))
+@@ -342,6 +363,11 @@ ${__SOURCED__:+return}
+ 
+ trap '' HUP
+ parse_options "$@"
++
++[ "$ALL_SAMPLES" ] && all_samples
++
++[ -z "$PARAMS" ] && { usage; exit; }
++
+ eval "set -- $PARAMS"
+ 
+ [ "$CORRECTION_MODE" ] && NULLLOOP_COUNT=${SHELLBENCH_NULLLOOP_COUNT:-}
+@@ -352,6 +378,9 @@ display_header "$SHELLS"
+   $(printf '%s\n' '#bench "loop only"' '@begin' '@end' | preprocess)
+ HERE
+ for file in "$@"; do
++  [ -r "$file" ] || if [ -r "%%DATADIR%%/$file" ]; then
++     file="%%DATADIR%%/$file"
++  fi
+   preprocess < "$file" | process "${file##*/}"
+ done
+ display_footer
diff --git a/benchmarks/shellbench/pkg-descr b/benchmarks/shellbench/pkg-descr
new file mode 100644
index 000000000000..029454588e05
--- /dev/null
+++ b/benchmarks/shellbench/pkg-descr
@@ -0,0 +1,7 @@
+Shellbench is a benchmark utility for POSIX shell comparison.
+
+It allows to compare the performance of shell commands and operations
+and comes with a set of sample scripts. Supported shells are sh, bash,
+dash, ksh, zsh and many more.
+
+WWW: https://github.com/shellspec/shellbench
diff --git a/benchmarks/shellbench/pkg-plist b/benchmarks/shellbench/pkg-plist
new file mode 100644
index 000000000000..cad1436c8071
--- /dev/null
+++ b/benchmarks/shellbench/pkg-plist
@@ -0,0 +1,10 @@
+bin/shellbench
+%%PORTDOCS%%%%DOCSDIR%%/README.md
+%%DATADIR%%/assign.sh
+%%DATADIR%%/cmp.sh
+%%DATADIR%%/count.sh
+%%DATADIR%%/eval.sh
+%%DATADIR%%/func.sh
+%%DATADIR%%/null.sh
+%%DATADIR%%/output.sh
+%%DATADIR%%/subshell.sh


More information about the dev-commits-ports-all mailing list