From c23dbf461bb3834a3dc62a4cd0cfa0825f94eda9 Mon Sep 17 00:00:00 2001 From: Florian Fischer <florian.fischer@muhq.space> Date: Fri, 30 Jul 2021 14:56:48 +0200 Subject: [PATCH] add docker tooling --- Makefile | 5 ++++- docker.sh | 16 ++++++++++++++++ tools/docker-prepare | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100755 docker.sh create mode 100755 tools/docker-prepare diff --git a/Makefile b/Makefile index a86621d..f926c3d 100644 --- a/Makefile +++ b/Makefile @@ -8,11 +8,14 @@ LDFLAGS := -luring -pthread -lrt # CFLAGS := -Werror -Wall -g -O3 CFLAGS := -Werror -Wall -g -O0 -.PHONY: all clean eval +.PHONY: all clean eval docker-eval eval: all @for syscall in $(SYSCALLS); do echo -n "$$syscall " ; ./bench-$$syscall; done +docker-eval: + ./docker.sh make eval + all: $(OBJ) define generateTargets diff --git a/docker.sh b/docker.sh new file mode 100755 index 0000000..07ced4a --- /dev/null +++ b/docker.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# The directory of this script is also the project's root directory. +ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +IMAGE=$(sed --regexp-extended --quiet 's;^image: "([^"]*)"$;\1;p' "${ROOT}/.gitlab-ci.yml") + +docker run \ + --volume="${ROOT}:${ROOT}" \ + --interactive \ + --tty \ + --security-opt seccomp=.docker-seccomp-profile.json \ + --env USER_ID="${UID}" \ + --env GROUP_ID="$(id -g ${USER})" \ + "${IMAGE}" \ + "${ROOT}/tools/docker-prepare" "${ROOT}" $@ diff --git a/tools/docker-prepare b/tools/docker-prepare new file mode 100755 index 0000000..ca7d8a5 --- /dev/null +++ b/tools/docker-prepare @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -euo pipefail + +useradd -u "${USER_ID}" -o -m user +groupmod -g "${GROUP_ID}" user + +if [[ ! -f "/usr/lib/libomp.so" ]] && [[ -f /usr/lib/llvm-12/lib/libomp.so ]]; then + ln -s /usr/lib/llvm-12/lib/libomp.so /usr/lib +fi + +ln -s /usr/bin/perf_5.10 /usr/bin/perf + +OUTSIDE_ROOT="${1}" +shift + +cd "${OUTSIDE_ROOT}" + +# shellcheck disable=SC2068 +exec sudo -u user $@ -- GitLab