FROM debian:buster-slim as yosys ## YOSYS ## # Get yosys dependencies RUN apt-get update -qq && \ DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ ca-certificates \ gcc \ make \ bison \ flex \ libreadline-dev \ gawk \ tcl-dev \ libffi-dev \ graphviz \ xdot \ pkg-config \ python3 \ libboost-system-dev \ libboost-python-dev \ libboost-filesystem-dev \ clang \ curl \ git && \ apt-get autoclean && apt-get clean && apt-get -y autoremove && \ update-ca-certificates && \ rm -rf /var/lib/apt/lists/* && \ cd /root && \ git clone https://github.com/YosysHQ/yosys.git yosys && \ cd yosys && \ make -j$(nproc) PREFIX=/opt/yosys && \ make install PREFIX=/opt/yosys && \ mkdir /opt/yosys/doc && \ curl https://github.com/YosysHQ/yosys-manual-build/releases/download/manual/manual.pdf -o /opt/yosys/doc/yosys_manual.pdf # SymbiYosys, Solvers FROM yosys AS symbiyosys COPY packages/suprove /root/suprove COPY packages/avy.patch /root/avy.patch RUN apt-get update -qq && \ DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ autoconf \ gperf \ cmake \ libgmp-dev \ ninja-build \ g++ \ python-setuptools \ python-pip \ python-wheel \ libboost-program-options-dev \ mercurial && \ apt-get autoclean && apt-get clean && apt-get -y autoremove && \ rm -rf /var/lib/apt/lists/* && \ cd /root && \ git clone https://github.com/YosysHQ/SymbiYosys.git symbiyosys && \ cd symbiyosys && \ make install PREFIX=/opt/symbiyosys && \ mkdir /opt/symbiyosys/doc && \ curl https://symbiyosys.readthedocs.io/_/downloads/en/latest/pdf/ -o /opt/symbiyosys/doc/symbiyosys_manual.pdf && \ cd .. && \ git clone https://github.com/Z3Prover/z3.git z3 && \ cd z3 && \ python scripts/mk_make.py && \ cd build && \ make -j$(nproc) PREFIX=/opt/z3 && \ make install PREFIX=/opt/z3 && \ cd /root && \ git clone https://github.com/SRI-CSL/yices2.git yices2 && \ cd yices2 && \ autoconf && \ ./configure --prefix=/opt/yices2 && \ make -j$(nproc) && \ make install && \ cd /opt && \ mkdir cvc4 && mkdir cvc4/bin && \ curl -L -o cvc4/bin/cvc4 https://github.com/CVC4/CVC4/releases/download/1.7/cvc4-1.7-x86_64-linux-opt && \ chmod +x cvc4/bin/cvc4 && \ cd /root && \ git clone https://github.com/boolector/boolector && \ cd boolector && \ ./contrib/setup-btor2tools.sh && \ ./contrib/setup-lingeling.sh && \ ./configure.sh && \ make -C build -j$(nproc) PREFIX=/opt/boolector && \ cd /root/boolector && \ mkdir /opt/boolector && \ mkdir /opt/boolector/bin && \ cp build/bin/boolector /opt/boolector/bin/ && \ cp build/bin/btor* /opt/boolector/bin/ && \ cp deps/btor2tools/bin/btorsim /opt/boolector/bin/ && \ cd /root && \ git clone https://github.com/bitwuzla/bitwuzla && \ cd bitwuzla && \ ./contrib/setup-btor2tools.sh && \ ./contrib/setup-lingeling.sh && \ ./contrib/setup-symfpu.sh && \ ./configure.sh && \ make -C build -j$(nproc) PREFIX=/opt/bitwuzla && \ mkdir -p /opt/bitwuzla/bin && \ cp build/bin/bitwuzla /opt/bitwuzla/bin/ && \ cd /root && \ git clone --recursive https://github.com/sterin/super-prove-build && \ cd super-prove-build && \ mkdir build && \ cd build && \ cmake -DCMAKE_BUILD_TYPE=Release -G Ninja .. && \ ninja && \ ninja package && \ tar -C /opt -xzf super_prove*.tar.gz && \ mv /root/suprove /opt/super_prove/bin/ && \ chmod +x /opt/super_prove/bin/suprove RUN cd /root && \ git clone https://bitbucket.org/arieg/extavy.git && \ cd extavy && \ git checkout new_quip && \ git submodule update --init && \ mkdir build; cd build && \ cmake -DCMAKE_BUILD_TYPE=Debug .. && \ make -j$(nproc) && \ mkdir -p /opt/avy/bin && \ cp -r avy/src/av* /opt/avy/bin/ && \ rm -rf /root/*