diff options
| author | The Miri Conjob Bot <miri@cron.bot> | 2023-12-24 05:00:43 +0000 |
|---|---|---|
| committer | The Miri Conjob Bot <miri@cron.bot> | 2023-12-24 05:00:43 +0000 |
| commit | 29f25ee3f381922b39a67089bb07d70bfbe2f17e (patch) | |
| tree | b3d97623b0f43b549734a6730ef55f0adf29dbea /src/ci/docker | |
| parent | f3db65df94bf9a086837f979b06de2c966125c07 (diff) | |
| parent | c350d3c5dd00ed0727ffe72fc33637d8c7537733 (diff) | |
| download | rust-29f25ee3f381922b39a67089bb07d70bfbe2f17e.tar.gz rust-29f25ee3f381922b39a67089bb07d70bfbe2f17e.zip | |
Merge from rustc
Diffstat (limited to 'src/ci/docker')
| -rwxr-xr-x | src/ci/docker/run.sh | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/ci/docker/run.sh b/src/ci/docker/run.sh index 636692a0954..55eed95492d 100755 --- a/src/ci/docker/run.sh +++ b/src/ci/docker/run.sh @@ -36,6 +36,11 @@ root_dir="`dirname $src_dir`" objdir=$root_dir/obj dist=$objdir/build/dist + +if [ -d "$root_dir/.git" ]; then + IS_GIT_SOURCE=1 +fi + source "$ci_dir/shared.sh" CACHE_DOMAIN="${CACHE_DOMAIN:-ci-caches.rust-lang.org}" @@ -194,6 +199,14 @@ else args="$args --env SCCACHE_DIR=/sccache --volume $HOME/.cache/sccache:/sccache" fi +# By default, container volumes are bound as read-only; therefore doing experimental work +# or debugging within the container environment (such as fetching submodules and +# building them) is not possible. Setting READ_ONLY_SRC to 0 enables this capability by +# binding the volumes in read-write mode. +if [ "$READ_ONLY_SRC" != "0" ]; then + SRC_MOUNT_OPTION=":ro" +fi + # Run containers as privileged as it should give them access to some more # syscalls such as ptrace and whatnot. In the upgrade to LLVM 5.0 it was # discovered that the leak sanitizer apparently needs these syscalls nowadays so @@ -228,7 +241,7 @@ if [ -f /.dockerenv ]; then docker cp . checkout:/checkout args="$args --volumes-from checkout" else - args="$args --volume $root_dir:/checkout:ro" + args="$args --volume $root_dir:/checkout$SRC_MOUNT_OPTION" args="$args --volume $objdir:/checkout/obj" args="$args --volume $HOME/.cargo:/cargo" args="$args --volume $HOME/rustsrc:$HOME/rustsrc" @@ -249,9 +262,13 @@ if [ "$dev" = "1" ] then # Interactive + TTY args="$args -it" - command="/bin/bash" + if [ $IS_GIT_SOURCE -eq 1 ]; then + command=(/bin/bash -c 'git config --global --add safe.directory /checkout;bash') + else + command=(/bin/bash) + fi else - command="/checkout/src/ci/run.sh" + command=(/checkout/src/ci/run.sh) fi if [ "$CI" != "" ]; then @@ -301,7 +318,7 @@ docker \ --init \ --rm \ rust-ci \ - $command + "${command[@]}" cat $objdir/${SUMMARY_FILE} >> "${GITHUB_STEP_SUMMARY}" |
