-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
65 lines (52 loc) · 2.35 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
FROM ghcr.io/buildsi/libabigail:2.0
# docker build -t ghcr.io/buildsi/spliced-experiment .
# docker run -it -v /p/vast1/build/spliced-cache:/cache /p/vast1/build/spack:/spack ghcr.io/buildsi/spliced-experiment
ENV CMAKE_VERSION=3.20.4
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y build-essential gfortran patchelf unzip bzip2
# always build with debug (this is in template script too)
ENV SPACK_ADD_DEBUG_FLAGS=true
# Abi laboratory wants this for better performance
ENV SPACK_DEBUG_FLAGS="-Og"
ENV SPACK_DISABLE_LOCAL_CONFIG=true
ENV SPACK_USER_CACHE_PATH=/cache/spack
# Always save to this cache (should be bound from the host)
ENV SPLICED_SMEAGLE_CACHE_DIR=/cache
ENV SPLICED_ABILAB_CACHE_DIR=/cache
# Assume spack bound to /spack
ENV PATH=/spack/bin:/code/scripts:$PATH
# Install cle (dependency of spliced)
RUN git clone https://github.com/vsoch/cle && \
cd cle && \
# archinfo, pyvex, pyelftools, then cle
pip install wheel && \
pip install git+https://github.com/angr/archinfo && \
pip install git+https://github.com/angr/pyvex && \
pip install git+https://github.com/eliben/pyelftools && \
pip install .
RUN pip install git+https://github.com/vsoch/elfcall@tweaks
RUN pip install git+https://github.com/buildsi/spliced@add/diff
# Install abi-laboratory tools
RUN git clone https://github.com/lvc/abi-dumper && \
cd abi-dumper && \
make install prefix=/usr && \
cd .. && \
git clone https://github.com/lvc/abi-compliance-checker && \
cd abi-compliance-checker && \
make install prefix=/usr
# Install "nice to haves" and try to provide cmake
RUN pip install ipython && apt-get install -y vim && \
curl -s -L https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.sh > cmake.sh && \
sh cmake.sh --prefix=/usr/local --skip-license && \
rm cmake.sh
# Try installing spack to inside of container (and will bind install on outside)
# Don't install modules, and change var cache path
RUN git clone --depth 1 -b vsoch/db-17-splice-july-25 https://github.com/vsoch/spack /spack && \
spack config add 'modules:default:enable::[]' && \
spack config add config:source_cache:/cache/spack-cache && \
/spack/bin/spack compiler find && \
spack external find automake autoconf && \
mkdir -p /results
# Add scripts
WORKDIR /code
COPY . /code