new file mode 100644
@@ -0,0 +1 @@
+Containerfile
new file mode 100644
@@ -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
@@ -184,6 +184,37 @@ Network tests
Network tests require certain setup, described in `testcases/network/README.md`
(online at https://github.com/linux-test-project/ltp/tree/master/testcases/network).
+Containers
+----------
+
+*Presently running the LTP inside a container is not a shortcut. It
+will make things much harder for you.*
+
+There is a Containerfile which can be used with Docker or
+Podman. Currently it can build Alpine and OpenSUSE images.
+
+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 the following will run some tests.
+
+```
+$ podman run -it --rm tumbleweed/ltp:latest
+$ cd /opt/kirk && ./kirk -f ltp -r syscalls
+```
+
+SUSE also publishes a
+[smaller LTP container](https://registry.opensuse.org/cgi-bin/cooverview?srch_term=project%3D%5Ebenchmark+container%3D.*)
+that is not based on the Containerfile.
+
Developers corner
=================
new file mode 100755
@@ -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
new file mode 100755
@@ -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
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 <rpalethorpe@suse.com> Cc: Petr Vorel <pvorel@suse.cz> Cc: Marius Kittler <mkittler@suse.de> --- V2: * Added some docs. I didn't say too much because I think we are likely to invalidate all of this info as we start testing in containers. .dockerignore | 1 + Containerfile | 32 ++++++++++++++++++++++++++++++++ README.md | 31 +++++++++++++++++++++++++++++++ ci/alpine-runtime.sh | 16 ++++++++++++++++ ci/tumbleweed-runtime.sh | 13 +++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 .dockerignore create mode 100644 Containerfile create mode 100755 ci/alpine-runtime.sh create mode 100755 ci/tumbleweed-runtime.sh