| #!/bin/sh | |
| # Install the packages listed in `deps_packages.lst` and `dev_packages.lst`. | |
| # See `Help/dev/devcontainer.rst`. | |
| set -e | |
| # Install without asking questions, e.g. the time zone `tzdata` wants. | |
| export DEBIAN_FRONTEND=noninteractive | |
| # Unlike our CI images, keep the documentation that packages carry: the base | |
| # image excludes man pages and the like, which is not what one wants in a | |
| # development environment. Packages already installed in the base image | |
| # remain without their documentation; `unminimize` restores that. | |
| rm -f /etc/dpkg/dpkg.cfg.d/excludes | |
| apt-get update | |
| apt-get install -y $(grep -h '^[^#]\+$' /root/deps_packages.lst /root/dev_packages.lst) | |
| # Add locales, the way our CI images do, for the tests that need them. | |
| sed -i -E '/^# en_US[ .](ISO-8859-1|UTF-8)( |$)/ s/^# //' /etc/locale.gen | |
| dpkg-reconfigure --frontend=noninteractive locales | |
| # `Utilities/Scripts/clang-format.bash` finds `clang-format-18` by name, but | |
| # make the unversioned name resolve to version 18 as well so that tools | |
| # looking for it get the version our style rules require. `CMakeLists.txt` | |
| # searches for `clang-tidy` only under the unversioned name, so the version | |
| # installed by name needs one too. | |
| ln -s "$(command -v clang-format-18)" /usr/local/bin/clang-format | |
| ln -s "$(command -v clang-tidy-22)" /usr/local/bin/clang-tidy |