diff --git a/scripts/docker/fail-base/Dockerfile b/scripts/docker/fail-base/Dockerfile index 9fa3b8dd..443b0fd5 100644 --- a/scripts/docker/fail-base/Dockerfile +++ b/scripts/docker/fail-base/Dockerfile @@ -1,39 +1,46 @@ -# Set the base image to Ubuntu Utopic (14.10) -FROM ubuntu:utopic +# Set the base image to Ubuntu Xenial (16.04) +FROM ubuntu:xenial MAINTAINER Christian Dietrich # Install Packages required to build FAIL* -RUN sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list RUN apt-get update RUN apt-get install -y \ - binutils-dev \ build-essential \ - cmake \ - git \ - libboost-regex-dev \ - libboost-system-dev \ + libmysqlclient-dev \ + protobuf-compiler \ + libprotobuf-dev \ + libpcl1-dev \ libboost-thread-dev \ + libboost-system-dev \ + libboost-regex-dev \ libboost-coroutine-dev \ libboost-context-dev \ libdwarf-dev \ libelf-dev \ libfontconfig1-dev \ + zlib1g-dev \ + binutils-dev \ libiberty-dev \ - libmysqlclient-dev \ - libpcl1-dev \ - libprotobuf-dev \ - libsvga1-dev \ - llvm-3.4-dev \ + llvm-3.9-dev \ + clang-3.9 \ + libsdl1.2-dev \ + libgtk2.0-dev \ + libwxgtk3.0-dev \ + libncurses5-dev \ + + cmake \ + cmake-curses-gui \ + doxygen \ + git \ screen \ - protobuf-compiler \ wget \ openssh-server \ vim \ - zlib1g-dev + ranger -# Symlink llvm-config-3.4 so FindLLVM.cmake can find it -RUN ln -s /usr/bin/llvm-config-3.4 /usr/local/bin/llvm-config +# Symlink clang++ to match docs +RUN ln -sf /usr/bin/clang++-3.9 /usr/bin/clang++ # Add a user for compiling FAIL* RUN useradd fail; mkdir /home/fail; chown fail /home/fail @@ -51,13 +58,14 @@ USER fail ENV HOME /home/fail WORKDIR /home/fail -# Get AspectC++ v1.2 for 64 Bit -RUN wget --no-check-certificate http://www.aspectc.org/releases/1.2/ac-bin-linux-x86-64bit-1.2.tar.gz -RUN tar xvzf ac-bin-linux-x86-64bit-1.2.tar.gz; mkdir bin; mv aspectc++/ac++ aspectc++/ag++ bin/; rm -rf aspectc++ +# Get AspectC++ (originally v1.2) for 64 Bit +ARG acversion="2.0" +RUN wget http://www.aspectc.org/releases/"$acversion"/ac-bin-linux-x86-64bit-"$acversion".tar.gz +RUN tar xvzf ac-bin-linux-x86-64bit-"$acversion".tar.gz; mkdir bin; mv aspectc++/ac++ aspectc++/ag++ bin/; rm -rf aspectc++ ENV PATH /home/fail/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # Clone FAIL* -RUN git clone -c http.sslVerify=false https://github.com/danceos/fail.git +RUN git clone https://github.com/danceos/fail.git WORKDIR fail USER root diff --git a/scripts/docker/fail-demo/Dockerfile b/scripts/docker/fail-demo/Dockerfile index d04c9c7f..4266d2ca 100644 --- a/scripts/docker/fail-demo/Dockerfile +++ b/scripts/docker/fail-demo/Dockerfile @@ -7,7 +7,6 @@ FROM danceos/fail-generic-tracing MAINTAINER Christian Dietrich # Install Additional Packages -RUN sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list RUN apt-get install -y \ python-minimal \ grub-common \ @@ -28,14 +27,108 @@ WORKDIR /home/fail RUN echo 'export PATH=$HOME/bin:$PATH' >> ~/.profile;\ echo 'cd $HOME/fail-targets' >> ~/.profile -RUN git clone -c http.sslVerify=false https://github.com/danceos/fail-targets.git +RUN git clone https://github.com/danceos/fail-targets.git WORKDIR fail -RUN mkdir build; cd build; ../configurations/x86_pruning.sh generic-experiment +RUN mkdir build; cd build WORKDIR build +RUN cmake \ + -DAGXX=/home/fail/bin/ag++ \ + -DBOOST_THREAD_LIBRARY=/usr/lib/x86_64-linux-gnu/libpthread.so \ + + -DBUILD_ARM=OFF \ + -DBUILD_BOCHS=ON \ + -DBUILD_CAPSTONE_DISASSEMBLER=OFF \ + -DBUILD_COMPUTE_HOPS=OFF \ + -DBUILD_CONVERT_TRACE=OFF \ + -DBUILD_DATA_AGGREGATOR=OFF \ + -DBUILD_DUMP_HOPS=OFF \ + -DBUILD_DUMP_TRACE=OFF \ + -DBUILD_FAULTSPACEPLOT=OFF \ + -DBUILD_GEM5=OFF \ + -DBUILD_IMPORT_TRACE=OFF \ + -DBUILD_LLVM_DISASSEMBLER=ON \ + -DBUILD_PANDA=OFF \ + -DBUILD_PRUNE_TRACE=OFF \ + -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 + -DCMAKE_AGPP_FLAGS="-D__NO_MATH_INLINES" \ + + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DCONFIG_BOCHS_COMPRESS_STATE=ON \ + -DCONFIG_BOCHS_NON_VERBOSE=OFF \ + -DCONFIG_BOCHS_NO_ABORT=ON \ + -DCONFIG_DISABLE_KEYB_INTERRUPTS=OFF \ + -DCONFIG_EVENT_BREAKPOINTS=ON \ + -DCONFIG_EVENT_BREAKPOINTS_RANGE=ON \ + -DCONFIG_EVENT_GUESTSYS=ON \ + -DCONFIG_EVENT_INTERRUPT=ON \ + -DCONFIG_EVENT_IOPORT=ON \ + -DCONFIG_EVENT_JUMP=OFF \ + -DCONFIG_EVENT_MEMREAD=ON \ + -DCONFIG_EVENT_MEMWRITE=ON \ + -DCONFIG_EVENT_TRAP=ON \ + -DCONFIG_FAST_BREAKPOINTS=ON \ + -DCONFIG_FAST_WATCHPOINTS=ON \ + -DCONFIG_FIRE_INTERRUPTS=ON \ + -DCONFIG_INJECTIONPOINT_HOPS=OFF \ + -DCONFIG_SR_REBOOT=ON \ + -DCONFIG_SR_RESTORE=ON \ + -DCONFIG_SR_SAVE=ON \ + -DCONFIG_SUPPRESS_INTERRUPTS=ON \ + -DENABLE_DATABASE_TESTS=OFF \ + + # ;-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 + -DPLUGINS_ACTIVATED="serialoutput" \ + + -DSERVER_COMM_HOSTNAME=localhost \ + -DSERVER_COMM_TCP_PORT=1111 \ + -DSERVER_OUT_QUEUE_SIZE=0 \ + -DSERVER_PERFORMANCE_MEASURE=OFF \ + -DSERVER_PERF_LOG_PATH=perf.log \ + -DSERVER_PERF_STEPPING_SEC=1 \ + -DTEST_MYSQL_DATABASE=fail_test \ + -DTEST_MYSQL_HOST=localhost \ + -DTEST_MYSQL_PASSWORD=fail_test \ + -DTEST_MYSQL_PORT=3306 \ + -DTEST_MYSQL_USER=fail_test \ + -DVERBOSE_MAKE=OFF \ + -D_filename=/usr/include/wx-3.0/wx/version.h \ + + # ;-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) + +# Make FAIL* +RUN cmake --build . -- -j$(nproc) + # Make FAIL* -RUN make -j$(getconf _NPROCESSORS_ONLN) || make -j$(getconf _NPROCESSORS_ONLN) 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 diff --git a/scripts/docker/fail-demo/my.cnf b/scripts/docker/fail-demo/my.cnf index ed356aed..4dbe0c11 100644 --- a/scripts/docker/fail-demo/my.cnf +++ b/scripts/docker/fail-demo/my.cnf @@ -1,5 +1,5 @@ [client] -host=mysql +host=127.0.0.1 user=fail password=fail database=fail diff --git a/scripts/docker/fail-generic-tracing/Dockerfile b/scripts/docker/fail-generic-tracing/Dockerfile index aa67c31a..2e611b89 100644 --- a/scripts/docker/fail-generic-tracing/Dockerfile +++ b/scripts/docker/fail-generic-tracing/Dockerfile @@ -8,11 +8,103 @@ USER fail # Configure the Weather Monitor Experiment ENV PATH /home/fail/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin WORKDIR /home/fail/fail -RUN mkdir build-tracer; cd build-tracer; ../configurations/x86_pruning.sh generic-tracing +RUN mkdir build-tracer; cd build-tracer WORKDIR build-tracer +RUN cmake \ + -DAGXX=/home/fail/bin/ag++ \ + -DBOOST_THREAD_LIBRARY=/usr/lib/x86_64-linux-gnu/libpthread.so \ + + -DBUILD_ARM=OFF \ + -DBUILD_BOCHS=ON \ + -DBUILD_CAPSTONE_DISASSEMBLER=OFF \ + -DBUILD_COMPUTE_HOPS=OFF \ + -DBUILD_CONVERT_TRACE=OFF \ + -DBUILD_DATA_AGGREGATOR=OFF \ + -DBUILD_DUMP_HOPS=OFF \ + -DBUILD_DUMP_TRACE=OFF \ + -DBUILD_FAULTSPACEPLOT=OFF \ + -DBUILD_GEM5=OFF \ + -DBUILD_IMPORT_TRACE=OFF \ + -DBUILD_LLVM_DISASSEMBLER=ON \ + -DBUILD_PANDA=OFF \ + -DBUILD_PRUNE_TRACE=OFF \ + -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 + -DCMAKE_AGPP_FLAGS="-D__NO_MATH_INLINES" \ + + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DCONFIG_BOCHS_COMPRESS_STATE=ON \ + -DCONFIG_BOCHS_NON_VERBOSE=OFF \ + -DCONFIG_BOCHS_NO_ABORT=ON \ + -DCONFIG_DISABLE_KEYB_INTERRUPTS=OFF \ + -DCONFIG_EVENT_BREAKPOINTS=ON \ + -DCONFIG_EVENT_BREAKPOINTS_RANGE=ON \ + -DCONFIG_EVENT_GUESTSYS=ON \ + -DCONFIG_EVENT_INTERRUPT=ON \ + -DCONFIG_EVENT_IOPORT=ON \ + -DCONFIG_EVENT_JUMP=OFF \ + -DCONFIG_EVENT_MEMREAD=ON \ + -DCONFIG_EVENT_MEMWRITE=ON \ + -DCONFIG_EVENT_TRAP=ON \ + -DCONFIG_FAST_BREAKPOINTS=ON \ + -DCONFIG_FAST_WATCHPOINTS=ON \ + -DCONFIG_FIRE_INTERRUPTS=ON \ + -DCONFIG_INJECTIONPOINT_HOPS=OFF \ + -DCONFIG_SR_REBOOT=ON \ + -DCONFIG_SR_RESTORE=ON \ + -DCONFIG_SR_SAVE=ON \ + -DCONFIG_SUPPRESS_INTERRUPTS=ON \ + -DENABLE_DATABASE_TESTS=OFF \ + + # ;-separated list + -DEXPERIMENTS_ACTIVATED="generic-tracing" \ + + -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 + -DPLUGINS_ACTIVATED="tracing;serialoutput" \ + + -DSERVER_COMM_HOSTNAME=localhost \ + -DSERVER_COMM_TCP_PORT=1111 \ + -DSERVER_OUT_QUEUE_SIZE=0 \ + -DSERVER_PERFORMANCE_MEASURE=OFF \ + -DSERVER_PERF_LOG_PATH=perf.log \ + -DSERVER_PERF_STEPPING_SEC=1 \ + -DTEST_MYSQL_DATABASE=fail_test \ + -DTEST_MYSQL_HOST=localhost \ + -DTEST_MYSQL_PASSWORD=fail_test \ + -DTEST_MYSQL_PORT=3306 \ + -DTEST_MYSQL_USER=fail_test \ + -DVERBOSE_MAKE=OFF \ + -D_filename=/usr/include/wx-3.0/wx/version.h \ + + # ;-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) + # Make FAIL* -RUN make -j$(getconf _NPROCESSORS_ONLN) || make -j$(getconf _NPROCESSORS_ONLN) +RUN cmake --build . -- -j$(nproc) RUN ln -s /home/fail/fail/build-tracer/bin/fail-client /home/fail/bin/fail-x86-tracing; \ ln -s /home/fail/fail/build-tracer/bin/import-trace /home/fail/bin/; \