From 3dc98b9c58d6c0ba05e05114f032bc742cf9e540 Mon Sep 17 00:00:00 2001 From: Richard Palethorpe Date: Mon, 25 Sep 2023 10:19:03 +0100 Subject: [PATCH] Add simple Containerfile This adds a regular container (or Docker) file which builds LTP from source. This is initially intended for testing the LTP itself. The resulting container has just the LTP installation and runtime dependencies. However it is still quite large, probably due to debug symbols. The container can be built with a command like: podman build -t tumbleweed/ltp \ --build-arg PREFIX=registry.opensuse.org/opensuse/ \ --build-arg DISTRO_NAME=tumbleweed \ --build-arg DISTRO_RELEASE=20230925 . Or just podman build . which will create an Alpine container. It contains Kirk in /opt/kirk. So cd /opt/kirk && ./kirk -f ltp -r syscalls will run some tests. Note a much smaller container can be found at: https://registry.opensuse.org/cgi-bin/cooverview?srch_term=project%3D%5Ebenchmark+container%3D.* This is created with SUSE's build system which does not use container files Signed-off-by: Richard Palethorpe --- .dockerignore | 1 + Containerfile | 32 ++++++++++++++++++++++++++++++++ ci/alpine-runtime.sh | 16 ++++++++++++++++ ci/tumbleweed-runtime.sh | 13 +++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 .dockerignore create mode 100644 Containerfile create mode 100755 ci/alpine-runtime.sh create mode 100755 ci/tumbleweed-runtime.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..bbcd7072f06 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +Containerfile diff --git a/Containerfile b/Containerfile new file mode 100644 index 00000000000..2f8192c3b27 --- /dev/null +++ b/Containerfile @@ -0,0 +1,32 @@ +ARG PREFIX=docker.io/ +ARG DISTRO_NAME=alpine +ARG DISTRO_RELEASE=3.18 + +FROM $PREFIX$DISTRO_NAME:$DISTRO_RELEASE AS build +ARG LTPROOT=/opt/ltp +ARG DISTRO_NAME=alpine +ARG DISTRO_RELEASE=3.18 + +RUN mkdir /build +WORKDIR /build +COPY . /build +RUN ./ci/${DISTRO_NAME}.sh +RUN git clean -fdX +RUN ./build.sh -p $LTPROOT -i + +FROM $PREFIX$DISTRO_NAME:$DISTRO_RELEASE +ARG LTPROOT=/opt/ltp +ARG KIRKROOT=/opt/kirk +ARG DISTRO_NAME=alpine + +COPY --from=build /build/ci/${DISTRO_NAME}-runtime.sh $LTPROOT/runtime-deps.sh +RUN $LTPROOT/runtime-deps.sh + +COPY --from=build $LTPROOT $LTPROOT +ENV LTPROOT=$LTPROOT +ENV PATH=$LTPROOT/testcases/bin:$LTPROOT/bin:$PATH + +RUN mkdir -p $KIRKROOT +COPY --from=build /build/tools/kirk $KIRKROOT + +USER ltp diff --git a/ci/alpine-runtime.sh b/ci/alpine-runtime.sh new file mode 100755 index 00000000000..e4941f32920 --- /dev/null +++ b/ci/alpine-runtime.sh @@ -0,0 +1,16 @@ +#!/bin/sh -eux + +apk add \ + acl \ + keyutils \ + libaio \ + libacl \ + libcap \ + libselinux \ + libsepol \ + libtirpc \ + numactl \ + openssl \ + py3-msgpack + +adduser -D -g "Unprivileged LTP user" ltp diff --git a/ci/tumbleweed-runtime.sh b/ci/tumbleweed-runtime.sh new file mode 100755 index 00000000000..5207988e770 --- /dev/null +++ b/ci/tumbleweed-runtime.sh @@ -0,0 +1,13 @@ +#!/bin/sh -eux + +zyp="zypper --non-interactive install --force-resolution --no-recommends" + +$zyp \ + iproute2 \ + keyutils \ + libaio1 \ + libmnl0 \ + libnuma1 \ + libtirpc3 + +useradd ltp