mirror of https://github.com/crytic/slither
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
# syntax=docker/dockerfile:1.3
|
|
FROM ubuntu:jammy AS python-wheels
|
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
gcc \
|
|
git \
|
|
python3-dev \
|
|
python3-pip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . /slither
|
|
|
|
RUN cd /slither && \
|
|
pip3 install --no-cache-dir --upgrade pip && \
|
|
pip3 wheel -w /wheels . solc-select pip setuptools wheel
|
|
|
|
|
|
FROM ubuntu:jammy AS final
|
|
|
|
LABEL name=slither
|
|
LABEL src="https://github.com/trailofbits/slither"
|
|
LABEL creator=trailofbits
|
|
LABEL dockerfile_maintenance=trailofbits
|
|
LABEL desc="Static Analyzer for Solidity"
|
|
|
|
RUN export DEBIAN_FRONTEND=noninteractive \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends python3-pip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# improve compatibility with amd64 solc in non-amd64 environments (e.g. Docker Desktop on M1 Mac)
|
|
ENV QEMU_LD_PREFIX=/usr/x86_64-linux-gnu
|
|
RUN if [ ! "$(uname -m)" = "x86_64" ]; then \
|
|
export DEBIAN_FRONTEND=noninteractive \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends libc6-amd64-cross \
|
|
&& rm -rf /var/lib/apt/lists/*; fi
|
|
|
|
RUN useradd -m slither
|
|
USER slither
|
|
|
|
COPY --chown=slither:slither . /home/slither/slither
|
|
WORKDIR /home/slither/slither
|
|
|
|
ENV PATH="/home/slither/.local/bin:${PATH}"
|
|
|
|
# no-index ensures we install the freshly-built wheels
|
|
RUN --mount=type=bind,target=/mnt,source=/wheels,from=python-wheels \
|
|
pip3 install --user --no-cache-dir --upgrade --no-index --find-links /mnt --no-deps /mnt/*.whl
|
|
|
|
RUN solc-select use latest --always-install
|
|
|
|
CMD /bin/bash
|
|
|