dockerfile: finally produce a working dockerfile

This commit is contained in:
2026-01-18 15:04:41 +01:00
parent 81f30926a2
commit 7b0e79d45b
3 changed files with 172 additions and 113 deletions

View File

@ -4,19 +4,8 @@
# place (~fail/bin/*)
FROM danceos/fail-generic-tracing
MAINTAINER Christian Dietrich <stettberger@dokucode.de>
# Install Additional Packages
RUN apt-get install -y \
python-minimal \
grub-common \
xorriso \
grub-pc-bin \
mysql-client \
python-flask \
python-mysqldb \
python-yaml
LABEL org.opencontainers.image.authors="Christian Dietrich <stettberger@dokucode.de>"
# Passwort for MySQL Daemon
ADD my.cnf /home/fail/.my.cnf
@ -24,8 +13,8 @@ RUN chown fail /home/fail/.my.cnf
USER fail
WORKDIR /home/fail
RUN echo 'export PATH=$HOME/bin:$PATH' >> ~/.profile;\
echo 'cd $HOME/fail-targets' >> ~/.profile
RUN echo 'export PATH=$HOME/bin:$PATH' >> ~/.profile \
&& echo 'cd $HOME/fail-targets' >> ~/.profile
RUN git clone https://github.com/danceos/fail-targets.git
@ -36,7 +25,7 @@ WORKDIR build
RUN cmake \
-DAGXX=/home/fail/bin/ag++ \
-DBOOST_THREAD_LIBRARY=/usr/lib/x86_64-linux-gnu/libpthread.so \
# Enable / Disable features \
-DBUILD_ARM=OFF \
-DBUILD_BOCHS=ON \
-DBUILD_CAPSTONE_DISASSEMBLER=OFF \
@ -54,17 +43,16 @@ RUN cmake \
-DBUILD_QEMU=OFF \
-DBUILD_T32=OFF \
-DBUILD_X86=ON \
# \
-DCLIENT_JOB_INITIAL=1 \
-DCLIENT_JOB_LIMIT=1000 \
-DCLIENT_JOB_REQUEST_SEC=30 \
-DCLIENT_RAND_BACKOFF_TEND=8 \
-DCLIENT_RAND_BACKOFF_TSTART=3 \
-DCLIENT_RETRY_COUNT=3 \
# ;-separated list
# ;-separated list \
-DCMAKE_AGPP_FLAGS="-D__NO_MATH_INLINES" \
# \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCONFIG_BOCHS_COMPRESS_STATE=ON \
@ -89,18 +77,16 @@ RUN cmake \
-DCONFIG_SR_SAVE=ON \
-DCONFIG_SUPPRESS_INTERRUPTS=ON \
-DENABLE_DATABASE_TESTS=OFF \
# ;-separated list
# ;-separated list \
-DEXPERIMENTS_ACTIVATED="generic-experiment" \
# \
-DLibIberty_INCLUDE_DIRS=/usr/include/libiberty \
-DLibIberty_LIBRARIES=/usr/lib/x86_64-linux-gnu/libiberty.a \
-DMYSQL_CONFIG=/usr/bin/mysql_config \
-DMYSQL_CONFIG_PREFER_PATH=/bin \
# ;-separated list
# ;-separated list \
-DPLUGINS_ACTIVATED="serialoutput" \
# \
-DSERVER_COMM_HOSTNAME=localhost \
-DSERVER_COMM_TCP_PORT=1111 \
-DSERVER_OUT_QUEUE_SIZE=0 \
@ -114,26 +100,48 @@ RUN cmake \
-DTEST_MYSQL_USER=fail_test \
-DVERBOSE_MAKE=OFF \
-D_filename=/usr/include/wx-3.0/wx/version.h \
# ;-separated list
# ;-separated list \
-Dbochs_configure_params="--enable-a20-pin;--enable-x86-64;--enable-cpu-level=6;--enable-ne2000;--enable-acpi;--enable-pci;--enable-usb;--enable-trace-cache;--enable-fast-function-calls;--enable-host-specific-asms;--enable-disasm;--enable-readline;--enable-clgd54xx;--enable-fpu;--enable-vmx=2;--enable-monitor-mwait;--enable-cdrom;--enable-sb16=linux;--enable-gdb-stub;--disable-docbook;--with-nogui;--with-x11;--with-wx;--with-sdl" \
# \
-Dbochs_install_prefix=/home/fail/fail/simulators/bochs/install \
..
# We need to manually build Bochs first to generate the bochs/config.h - the external_project configure step
# (where this file is generated) is run at build time (not configure time), but the build order is not defined correctly.
RUN cmake --build . --target libfailbochs_external-configure -- -j$(nproc)
# RUN cmake --build . --target libfailbochs_external-configure \
# && cmake --build .
RUN cmake --build . --target libfailbochs_external-configure -- -j$(nproc) \
&& cmake --build . -- -j$(nproc)
# Make FAIL*
RUN cmake --build . -- -j$(nproc)
RUN ln -s /home/fail/fail/build/bin/fail-client /home/fail/bin/generic-experiment-client \
&& ln -s /home/fail/fail/build/bin/generic-experiment-server /home/fail/bin/ \
&& ln -s /home/fail/fail/tools/analysis/resultbrowser/run.py /home/fail/bin/resultbrowser
# Make FAIL*
RUN ln -s /home/fail/fail/build/bin/fail-client /home/fail/bin/generic-experiment-client; \
ln -s /home/fail/fail/build/bin/generic-experiment-server /home/fail/bin/; \
ln -s /home/fail/fail/tools/analysis/resultbrowser/run.py /home/fail/bin/resultbrowser
USER root
# Install additional packages
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive TZ=Europe/Berlin apt-get install -y --no-install-recommends \
grub-common \
xorriso \
grub-pc-bin \
mysql-client \
python2-minimal \
python2-dev \
# python2-flask \
# python2-mysqldb \
# python2-yaml \
unzip \
&& apt-get clean
RUN ln -sf /usr/bin/python2 /usr/bin/python
# Install python packages
RUN wget https://bootstrap.pypa.io/pip/2.7/get-pip.py \
&& python2 get-pip.py \
&& wget https://raw.githubusercontent.com/paulfitz/mysql-connector-c/master/include/my_config.h -O /usr/include/mysql/my_config.h \
&& pip2 install flask pyyaml MySQL-python
# For the resultbrowser, we expose port 5000 to the outside world.
EXPOSE 5000
USER root