Commit 5ccabf2
committed
feat(docker): default dev container to Ubuntu 24.04, keep 22.04 selectable
The Util/Docker dev environment isolates the CARLA UE5 toolchain (CMake,
ninja, clang, Python, libtiff, libpng, glibc shims, UE5 prerequisites)
from whatever the host happens to have installed. That isolation gives
contributors three things that matter in practice:
1. Host independence: building CARLA does not require uninstalling or
shadowing the system Python, system CMake, or other versions a host
distro and other projects already rely on.
2. Reproducibility: a build or test failure inside the image reproduces
bit-for-bit on a different machine by rebuilding the same image,
instead of turning into a per-host investigation of CMake versions
and LD_LIBRARY_PATH state.
3. Stable compilation across many computers: the recipe travels
unchanged across Ubuntu 22.04, Ubuntu 24.04, Fedora, Pop_OS, etc.,
which keeps "works on my machine" from becoming a per-developer
scavenger hunt.
PR #9596 added host-side Ubuntu 24.04 build support (the
__isoc23_strtol glibc shim, the libtiff5-dev to libtiff-dev swap, and
the PEP 668 pip handling) but deferred the Docker side. This PR closes
the developer-facing half of that gap so a contributor on a 24.04 host
no longer gets a 22.04 image whose Base.Dockerfile fails on a missing
libtiff5-dev package.
Layout
* The two Dockerfiles that the helper scripts actually invoke are
reorganised into a per-distro layout: Util/Docker/22.04 and
Util/Docker/24.04, each holding a linear, conditional-free
Base.Dockerfile and Development.Dockerfile. Util/Docker/build.sh
resolves --ubuntu-distro to the matching subdirectory and refuses
values with no directory; Util/Docker/run.sh defaults to the
ue5-24.04 image and container names.
* Util/Docker/Release.Dockerfile has no caller anywhere in the repo
(build.sh, run.sh, .github/workflows, Util/Tools/Deploy.{sh,bat},
the CMake graph) and is left untouched. Cleaning up that orphan is
out of scope for this PR.
* build.sh passes --build-context carla-root=<repo root> so each
Dockerfile reads requirements.txt and PythonAPI/{examples,util}/
requirements.txt directly via COPY --from=carla-root, replacing the
previous .tmp staging copy.
24.04 image
* Base.Dockerfile installs libtiff-dev (the noble package name),
upgrades pip with --ignore-installed (the dpkg-managed pip on noble
has no RECORD file so a normal self-upgrade fails), and compiles
Python 3.10.14 from source via Util/Docker/24.04/build_scripts/
build_cpython.sh so the Python API can target either 3.10 or 3.12
via -DPython_ROOT_DIR. CMake comes from apt and resolves to 3.28.3,
which clears CARLA's current 3.27.2 minimum.
* Development.Dockerfile reuses an existing group when the host
docker GID collides with systemd-journal at GID 999 inside the
noble base image, instead of failing groupadd.
22.04 image
* Base.Dockerfile keeps its previous shape minus the upstream CMake
tarball download. apt cmake on jammy is 3.22.1, below the project
minimum, so users opting back into 22.04 must upgrade CMake
themselves; the Dockerfile keeps a single apt install cmake line
and the 22.04 path becomes best-effort.
Docs and CHANGELOG
* Docs/build_devcontainer.md documents the new default, adds a "Build
for a different Ubuntu version" subsection, and updates every
docker exec example plus the devcontainer.json snippet.
* Docs/build_linux_ue5.md no longer says "Ubuntu 22.04 at minimum",
it lists 22.04 and 24.04 as supported and points at the Docker
fallback for any other host.
* CHANGELOG.md gains one user-facing bullet.
Out of scope
CI workflow changes are intentionally not included. PR #9601 owns the
_ci-ubuntu.yml matrix and is blocked on the carlasim/carla-builder
image being available, which this PR produces locally so the same
recipe can be published.
Validated on Ubuntu 24.04 (RTX 50, driver 590.48): carla-base and
carla-development images build clean, libcarla_test_server 44/44 and
libcarla_test_client 58/58 pass, cmake --build Build --target package
succeeds with both Python 3.10 and Python 3.12 wheels.
Related: #9596 (host-side 24.04, merged), #9597 (umbrella issue,
"24.04 CI image" checkbox), #9601 (CI matrix, open).1 parent ffd9d27 commit 5ccabf2
10 files changed
Lines changed: 307 additions & 64 deletions
File tree
- Docs
- Util/Docker
- 22.04
- 24.04
- build_scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
| 23 | + | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
34 | 44 | | |
35 | 45 | | |
36 | 46 | | |
| |||
66 | 76 | | |
67 | 77 | | |
68 | 78 | | |
69 | | - | |
| 79 | + | |
70 | 80 | | |
71 | 81 | | |
72 | 82 | | |
| |||
146 | 156 | | |
147 | 157 | | |
148 | 158 | | |
149 | | - | |
| 159 | + | |
150 | 160 | | |
151 | 161 | | |
152 | 162 | | |
153 | 163 | | |
154 | | - | |
| 164 | + | |
155 | 165 | | |
156 | 166 | | |
157 | 167 | | |
158 | 168 | | |
159 | 169 | | |
160 | 170 | | |
161 | | - | |
| 171 | + | |
162 | 172 | | |
163 | 173 | | |
164 | | - | |
| 174 | + | |
165 | 175 | | |
166 | 176 | | |
167 | | - | |
| 177 | + | |
168 | 178 | | |
169 | 179 | | |
170 | | - | |
| 180 | + | |
171 | 181 | | |
172 | 182 | | |
173 | 183 | | |
| |||
181 | 191 | | |
182 | 192 | | |
183 | 193 | | |
184 | | - | |
| 194 | + | |
185 | 195 | | |
186 | | - | |
| 196 | + | |
187 | 197 | | |
188 | 198 | | |
189 | 199 | | |
| |||
201 | 211 | | |
202 | 212 | | |
203 | 213 | | |
204 | | - | |
| 214 | + | |
205 | 215 | | |
206 | 216 | | |
207 | 217 | | |
208 | 218 | | |
209 | 219 | | |
210 | 220 | | |
211 | | - | |
| 221 | + | |
212 | 222 | | |
213 | 223 | | |
214 | 224 | | |
215 | 225 | | |
216 | 226 | | |
| 227 | + | |
| 228 | + | |
217 | 229 | | |
218 | 230 | | |
219 | 231 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
Lines changed: 12 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
| 1 | + | |
6 | 2 | | |
7 | 3 | | |
8 | 4 | | |
| |||
20 | 16 | | |
21 | 17 | | |
22 | 18 | | |
23 | | - | |
| 19 | + | |
24 | 20 | | |
25 | 21 | | |
26 | 22 | | |
| |||
31 | 27 | | |
32 | 28 | | |
33 | 29 | | |
34 | | - | |
| 30 | + | |
35 | 31 | | |
36 | 32 | | |
37 | | - | |
| 33 | + | |
| 34 | + | |
38 | 35 | | |
39 | 36 | | |
40 | 37 | | |
| |||
57 | 54 | | |
58 | 55 | | |
59 | 56 | | |
60 | | - | |
| 57 | + | |
61 | 58 | | |
62 | 59 | | |
63 | 60 | | |
| |||
73 | 70 | | |
74 | 71 | | |
75 | 72 | | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
83 | 79 | | |
84 | 80 | | |
85 | 81 | | |
| |||
91 | 87 | | |
92 | 88 | | |
93 | 89 | | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | 90 | | |
99 | 91 | | |
100 | 92 | | |
| |||
Lines changed: 5 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
| 1 | + | |
6 | 2 | | |
7 | 3 | | |
8 | 4 | | |
| |||
31 | 27 | | |
32 | 28 | | |
33 | 29 | | |
34 | | - | |
35 | | - | |
| 30 | + | |
| 31 | + | |
36 | 32 | | |
37 | 33 | | |
38 | 34 | | |
39 | 35 | | |
40 | 36 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | 37 | | |
48 | 38 | | |
49 | 39 | | |
50 | 40 | | |
51 | 41 | | |
52 | 42 | | |
53 | 43 | | |
54 | | - | |
| 44 | + | |
| 45 | + | |
55 | 46 | | |
56 | 47 | | |
57 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
0 commit comments