There are three changes present in this PR. 1. Use github packages for libcxx-builder rather than dockerhub. The ldionne/libcxx-builder image will now be hosted at ghcr.io/libcxx/libcxx-builder. This has the benefit of allowing members of the github org to push new versions. In the future I hope to add github actions to rebuild the image as needed. 2. Add docker-compose file The compose file allows to to specify the package repository, so that users can simply write 'docker compose build' and 'docker compose push'. It also gives us a centralized place to manage version arguments which change frequently. 3. Use non-shell CMD form. This may help the google libcxx builders disconnect more gracefully as the shell form of CMD may eat the shutdown signal. I'm hoping this corrects inaccurate agent counts from the buildkite API, since when the VM's terminate, they do so without signaling it to buildkite, which hangs around waiting for them to reconnect. It's likely more changes will be needed though. --------- Co-authored-by: Mark de Wever <zar-rpg@xs4all.nl>
32 lines
1.4 KiB
Bash
Executable File
32 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script starts a shell in a container running the libc++ build bot Docker
|
|
# image. That image emulates the environment used by libc++'s Linux builders on
|
|
# BuildKite.
|
|
#
|
|
# Once you're inside the shell, you can run the various build jobs with the
|
|
# `run-buildbot` script.
|
|
#
|
|
# This script must be run from within the LLVM monorepo. Furthermore, the
|
|
# monorepo will be mounted as `/llvm` inside the container. Be careful, the
|
|
# state in `/llvm` is shared between the container and the host machine, which
|
|
# is useful for editing files on the host machine and re-running the build bot
|
|
# in the container.
|
|
#
|
|
# If you are on Linux you will likely not be able to write to the mount because
|
|
# the user in the container doesn't have permissions to do so.
|
|
# If you need to do this, give that user permission to do so after running
|
|
# the container or add this flag to run the container as your local user IDs:
|
|
# --user $(id -u):$(id -g)
|
|
|
|
set -e
|
|
|
|
MONOREPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
if [[ ! -d "${MONOREPO_ROOT}/libcxx/utils/ci" ]]; then
|
|
echo "Was unable to find the root of the LLVM monorepo; are you running from within the monorepo?"
|
|
exit 1
|
|
fi
|
|
docker pull ghcr.io/libcxx/libcxx-builder
|
|
docker run -it --volume "${MONOREPO_ROOT}:/llvm" --workdir "/llvm" --cap-add=SYS_PTRACE ghcr.io/libcxx/libcxx-builder \
|
|
bash -c 'git config --global --add safe.directory /llvm ; exec bash'
|