diff --git a/docker/Dockerfile.template b/docker/Dockerfile.template index 791b48217e920b2518df1fd5b4be11fdb03522c7..1fffcefc8befb6002d86ee34176e20da5771660b 100644 --- a/docker/Dockerfile.template +++ b/docker/Dockerfile.template @@ -35,40 +35,26 @@ opam-2.1 update -y RUN sudo apt update && \ sudo apt install apt-utils wget && \ - sudo apt install -yy git wget gfortran cmake protobuf-compiler libprotobuf-dev libboost-all-dev libopenblas-dev zip && \ + sudo apt install -yy git wget gfortran cmake protobuf-compiler libprotobuf-dev libboost-all-dev libopenblas-dev zip python3.10-dev python3.10-venv && \ sudo apt clean && \ sudo rm -rf /var/lib/apt/lists/ ENV PATH "/home/opam/.local/bin:$PATH" -# Python Conda - -ENV SHACONDA "aef279d6baea7f67940f16aad17ebe5f6aac97487c7c03466ff01f4819e5a651" - -RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh -O ~/miniconda.sh - -RUN SHAFILE=$(sha256sum ~/miniconda.sh | awk '{print $1}') && if [ "$SHAFILE" != "$SHACONDA" ]; then echo "Mismatch between SHA256SUM of downloaded script and expected script, aborting installation."; echo "The expected SHA256SUM is $SHACONDA, but the SHA256SUM of downloaded script is $SHAFILE."; exit 1; fi - -RUN /bin/bash ~/miniconda.sh -b && rm ~/miniconda.sh - -ENV PATH "/home/opam/miniconda3/bin:$PATH" - -RUN conda init bash && conda create -n python_caisar_env python=3.10.9 - -SHELL ["conda", "run", "-n", "python_caisar_env", "/bin/bash", "-c"] - # External provers +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + ## Pyrat RUN git clone https://git.frama-c.com/pub/pyrat.git && \ git -C pyrat checkout 43c7389e5ce203b445ad3c7bfdcbf6bf408f3214 -RUN pip --default-timeout=1000 install -r pyrat/requirements.txt +RUN /usr/bin/python3.10 -m pip --default-timeout=1000 install -r pyrat/requirements.txt ENV PATH "/home/opam/pyrat/:$PATH" -RUN echo -e "#!/usr/bin/sh \n exec /home/opam/miniconda3/envs/python_caisar_env/bin/python /home/opam/pyrat/pyrat.pyc \"\$@\"" > /home/opam/pyrat/pyrat +RUN echo -e "#!/usr/bin/sh \n exec /usr/bin/python3.10 /home/opam/pyrat/pyrat.pyc \"\$@\"" > /home/opam/pyrat/pyrat RUN chmod u+x /home/opam/pyrat/pyrat RUN pyrat -h @@ -90,7 +76,6 @@ cmake --build . ENV PATH "/home/opam/Marabou/build:$PATH" - ## SAVer RUN git clone https://github.com/svm-abstract-verifier/saver.git && \ @@ -109,7 +94,7 @@ RUN git clone https://github.com/stanleybak/nnenum.git && \ git -C nnenum checkout cf7c0e72c13543011a7ac3fbe0f5c59c3aafa77e RUN cd nnenum && \ -pip3 install -r requirements.txt +/usr/bin/python3.10 -m pip install -r requirements.txt ENV PYTHONPATH "$PYTHONPATH:/home/opam/nnenum/src" @@ -122,14 +107,13 @@ git -C alpha-beta-CROWN checkout 7b3d507caf40a5f42d99f6894373526c6fd615b7 # https://github.com/Verified-Intelligence/alpha-beta-CROWN/blob/main/vnncomp_scripts/install_tool_general.sh, # and removing dependencies that are already in PyRAT # dependency set: pytorch, torchvision, torchaudio, tqdm, -# pandas +# pandas, protobuf # DNNV and onnx2pytorch set on a specific commit # WARNING: Result in Pillow version and networkx version # different than what is expected by PyRAT and/or nnenum! RUN cd alpha-beta-CROWN && \ -conda install --yes cudatoolkit=11.1 mkl=2020.0 pyyaml packaging appdirs protobuf sortedcontainers -c pytorch-lts -c nvidia -c gurobi && \ -pip install --no-input --no-cache-dir onnx onnxruntime git+https://github.com/KaidiXu/onnx2pytorch.git@fe7281b9b6c8c28f61e72b8f3b0e3181067c7399 git+https://github.com/dlshriver/DNNV.git@6ab81fff8b83e5e7d5d964e409d092190368c8f1 +/usr/bin/python3.10 -m pip install --no-input --no-cache-dir onnx onnxruntime git+https://github.com/KaidiXu/onnx2pytorch.git@fe7281b9b6c8c28f61e72b8f3b0e3181067c7399 git+https://github.com/dlshriver/DNNV.git@6ab81fff8b83e5e7d5d964e409d092190368c8f1 pyyaml packaging appdirs sortedcontainers mkl==2019.0 pyyaml appdirs ENV PYTHONPATH "$PYTHONPATH:/home/opam/alpha-beta-CROWN/complete_verifier" diff --git a/docker/Makefile b/docker/Makefile index d23909fed48417e4489a22e3f7e116a22ae9a953..ad671f21caf939d146222d4ab9e2ce780f7dcdc2 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -23,6 +23,7 @@ .PHONY: pub push FORCE OCAML_VERSION?=4.13 +UBUNTU_VERSION?=22.04 all: Dockerfile @echo "You may want to consider adding ARGS=--no-cache to force" @@ -33,7 +34,7 @@ push: all @echo "You may need to execute 'docker login' beforehand." docker push laiser/caisar:pub -SHA_DOCKER=$(shell docker manifest inspect ocaml/opam:ubuntu-ocaml-$(OCAML_VERSION) | jq '.manifests| .[] | select(.platform.architecture == "amd64") | .digest' --raw-output) +SHA_DOCKER=$(shell docker manifest inspect ocaml/opam:ubuntu-$(UBUNTU_VERSION)-ocaml-$(OCAML_VERSION) | jq '.manifests| .[] | select(.platform.architecture == "amd64") | .digest' --raw-output) SHA_DOCKER:=$(or $(SHA_DOCKER),sha256:9d471148a7acdaba15caa139710f89ca8668a191c0052eb1c80cb9729e337c40) CAISAR_COMMIT?=$(shell git rev-parse HEAD)