# based on https://github.com/BinaryAnalysisPlatform/bap/blob/master/docker/Dockerfile FROM phusion/baseimage:0.11 RUN apt-get -y update \ && install_clean sudo \ && useradd -m bap \ && echo "bap:bap" | chpasswd \ && adduser bap sudo \ && sed -i.bkp -e 's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers USER bap WORKDIR /home/bap ENV PATH="/home/bap/.opam/4.05.0/bin/:${PATH}" COPY . /home/bap/cwe_checker/ RUN sudo apt-get -y update \ && sudo install_clean \ binutils-multiarch \ build-essential \ clang \ curl \ git \ libgmp-dev \ libx11-dev \ libzip-dev \ llvm-6.0-dev \ m4 \ pkg-config \ software-properties-common \ unzip \ wget \ zlib1g-dev \ && wget https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh \ && yes /usr/local/bin | sudo sh install.sh \ # install Bap && opam init --auto-setup --comp=4.05.0 --disable-sandboxing --yes \ && git clone -b testing --depth 1 https://github.com/BinaryAnalysisPlatform/opam-repository.git \ && opam repo add bap opam-repository \ && opam update \ && opam install depext --yes \ && OPAMJOBS=1 opam depext --install bap --yes \ # install CWE_Checker and dependencies && OPAMJOBS=1 opam install yojson alcotest --yes \ && sudo chown -R bap:bap /home/bap/cwe_checker \ && cd /home/bap/cwe_checker/src \ && bapbuild -r -Is checkers,utils -pkgs yojson,unix cwe_checker.plugin \ && bapbundle install cwe_checker.plugin \ && sudo apt-get remove -y \ build-essential \ clang \ curl \ gcc \ g++ \ git \ libgmp-dev \ libx11-dev \ libzip-dev \ llvm-6.0-dev \ unzip \ wget \ zlib1g-dev \ && sudo apt-get -y autoremove \ && sudo apt-get -y clean \ && rm -rf /home/bap/.opam/4.05.0/.opam-switch/sources WORKDIR /home/bap/cwe_checker/src ENTRYPOINT ["opam", "config", "exec", "--"]