diff --git a/.dockerignore b/.dockerignore index 2100edb..8233962 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,5 @@ +target_injections target_bins target_configs -target_injections tests -docs -panda -docker +docs \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 4bc498d..e1ab942 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG BASE_IMAGE="ubuntu:22.04" ### BASE IMAGE -FROM $BASE_IMAGE as base +FROM $BASE_IMAGE AS base ARG BASE_IMAGE ENV DEBIAN_FRONTEND=noninteractive @@ -14,6 +14,8 @@ ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python # do in a COPY command. COPY ./dependencies/* /tmp COPY ./requirements.txt /tmp +COPY ./tools/ /tools +COPY ./scripts/ /scripts RUN mv /tmp/$(echo "$BASE_IMAGE" | sed 's/:/_/g')_build.txt /tmp/build_dep.txt && \ mv /tmp/$(echo "$BASE_IMAGE" | sed 's/:/_/g')_base.txt /tmp/base_dep.txt @@ -26,25 +28,23 @@ RUN [ -e /tmp/base_dep.txt ] && \ # Finally: Install panda debian package, you need a version that has the Dwarf2 Plugin RUN curl -LJO https://github.com/panda-re/panda/releases/download/v1.8.23/pandare_22.04.deb -RUN apt install -qq -y ./pandare_22.04.deb +RUN mv ./pandare_22.04.deb /tmp +RUN apt install -qq -y /tmp/pandare_22.04.deb RUN pip install -r /tmp/requirements.txt ### BUILD IMAGE - STAGE 2 -FROM base AS builder -ARG BASE_IMAGE - RUN [ -e /tmp/build_dep.txt ] && \ apt-get -qq update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $(cat /tmp/build_dep.txt | grep -o '^[^#]*') && \ + apt-get install -y --no-install-recommends $(cat /tmp/build_dep.txt | grep -o '^[^#]*') && \ apt-get clean -#### Develop setup: panda built + pypanda installed (in develop mode) - Stage 3 -FROM builder as developer - -COPY ./tools/ /tools -COPY ./scripts /scripts +RUN cd /tmp && \ + git clone https://github.com/capstone-engine/capstone/ -b v4 && \ + cd capstone/ && ./make.sh && make install && cd /tmp && \ + rm -rf /tmp/capstone && ldconfig -# Essentially same as setup_container.sh +#### Develop setup: panda built + pypanda installed (in develop mode) - Stage 3 +#### Essentially same as setup_container.sh RUN cd /tools/btrace && ./compile.sh RUN rm -rf /tools/build @@ -53,5 +53,12 @@ RUN mkdir -p /tools/install RUN cmake -B"/tools/build" -H"/tools" -DCMAKE_INSTALL_PREFIX="/tools/install" RUN make --no-print-directory -j4 install -C "/tools/build/lavaTool" - RUN make --no-print-directory -j4 install -C "/tools/build/fbi" + +# We need 32-bit support inside the container for now +RUN dpkg --add-architecture i386 && apt-get update && apt-get -y install zlib1g-dev:i386 gcc-multilib + +# RUN useradd volcana +# RUN chown -R volcana:volcana /tools/ +# RUN chown -R volcana:volcana /scripts/ +# USER volcana diff --git a/scripts/funcs.sh b/scripts/funcs.sh index 0dc546e..2469359 100755 --- a/scripts/funcs.sh +++ b/scripts/funcs.sh @@ -82,6 +82,7 @@ if [ -z "$LAVA_FUNCS_INCLUDED" ]; then -v /etc/shadow:/etc/shadow:ro \ -v /etc/gshadow:/etc/gshadow:ro \ -v /home:/home:ro \ + -v $HOME/.panda:$HOME/.panda \ --add-host=database:$DOCKER_IP \ $docker_map_args \ $extradockerargs \