-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile.base
106 lines (100 loc) · 3.81 KB
/
Dockerfile.base
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Copyright (c) 2020 Mikael Simberg
# Copyright (c) 2015 Martin Stumpf
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
# The images built from this Dockerfile are versioned with an incrementing
# number in .github/workflows/build_and_deploy.yml.
#
# IMPORTANT: Unless you are 100% sure that the changes to this file will produce an image that is compatible with the previous image please increment the
# version! Incrementing the version means that the image used for e.g. pika CI
# can be updated and tested in a separate PR without risking breaking open pull
# request builds.
FROM ubuntu:24.04
# Update and install libraries and tools from repositories
RUN apt-get update && apt-get dist-upgrade --yes && \
apt-get install --no-install-recommends --yes \
bzip2 \
clang \
clang-format \
clang-tidy \
cmake \
codespell \
curl \
git \
graphviz \
grcov \
hwloc \
make \
libclang-rt-dev \
libboost-filesystem-dev \
libgoogle-perftools-dev \
libfmt-dev \
libhwloc-dev \
libspdlog-dev \
lld \
llvm \
mpi-default-dev \
ninja-build \
pipx \
shfmt \
valgrind \
xsltproc \
&& \
rm -rf /var/lib/apt/lists/* && \
apt-get clean && \
# Install black and cmake-format
pipx install black && \
pipx install cmakelang && \
# Use lld as the linker
rm /usr/bin/ld && \
ln -s /usr/bin/ld.lld /usr/bin/ld && \
# Install cpp-dependencies
cd /tmp && \
git clone https://github.com/tomtom-international/cpp-dependencies.git && \
cd cpp-dependencies && \
cmake -DWITH_BOOST=ON . && \
make -j install && \
cd /tmp && \
rm -rf /tmp/cpp-dependencies && \
# Install P2300 reference implementation
cd /tmp && \
git clone https://github.com/NVIDIA/stdexec.git && \
cd stdexec && \
git checkout nvhpc-24.09 && \
cmake . && \
make -j && \
make install && \
cd /tmp && \
rm -rf /tmp/stdexec && \
# Install inshpect (and dependencies ripgrep, fd, dasel). ripgrep needs
# PCRE2 support, which the package in the repositories doesn't have.
mkdir inshpect && \
cd inshpect && \
curl --output dasel \
--location https://github.com/TomWright/dasel/releases/download/v1.27.3/dasel_linux_amd64 && \
sha256sum dasel && \
(echo "1a5adbf8e5b69f48ad5d1665bf7ed056ea3ff8cf3312ce2dc7c3209939873489 dasel" | sha256sum --check) && \
chmod +x dasel && \
mv dasel /usr/local/bin && \
curl --output ripgrep.tar.gz \
--location https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep-13.0.0-x86_64-unknown-linux-musl.tar.gz && \
(echo "ee4e0751ab108b6da4f47c52da187d5177dc371f0f512a7caaec5434e711c091 ripgrep.tar.gz" | sha256sum --check) && \
tar --extract --strip-components 1 --file ripgrep.tar.gz && \
mv rg /usr/local/bin && \
curl --output fd.tar.gz \
--location https://github.com/sharkdp/fd/releases/download/v8.5.2/fd-v8.5.2-x86_64-unknown-linux-musl.tar.gz && \
(echo "1202ac2afd4dc4aba7e1ca74f1896ab563381f49363d578ee84f1bcfd0559e2f fd.tar.gz" | sha256sum --check) && \
tar --extract --strip-components 1 --file fd.tar.gz && \
mv fd /usr/local/bin && \
curl --output inshpect \
--location https://raw.githubusercontent.com/msimberg/inshpect/f7b6045cdf832da30be1b0fb88a35827cc443ffa/inshpect && \
(echo "04b6160cc0b1a45a38db319617697a0bb6a0c1413313d945a4ba73811dd5288a inshpect" | sha256sum --check) && \
chmod +x inshpect && \
mv inshpect /usr/local/bin && \
cd /tmp && \
rm -rf /tmp/inshpect
ENV CXX clang++
# Add pipx executables to the path
ENV PATH /root/.local/bin:$PATH
# IMPORTANT: Did you read the note at the top of the file?