Skip to content

Commit

Permalink
Auto merge of #92214 - ehuss:submodule-bg-exit, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Error if submodule fetch fails.

In CI, if fetching a submodule fails, the script would exit successfully. Later parts of the build will fail due to the missing files, but it is a bit confusing, and I think it would be better to error out earlier.

The reason is that in bash, `wait` without arguments will exit 0 even if a background job exits with an error. The solution here is to wait on each individual job, which will return the exit code of the job.

This was encountered in #92177.
  • Loading branch information
bors committed Mar 2, 2022
2 parents 08504c6 + 43f83bc commit 8769f4e
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 14 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Expand Up @@ -104,6 +104,9 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: install MSYS2
run: src/ci/scripts/install-msys2.sh
if: success() && !env.SKIP_JOB
Expand All @@ -119,9 +122,6 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: ensure line endings are correct
run: src/ci/scripts/verify-line-endings.sh
if: success() && !env.SKIP_JOB
Expand Down Expand Up @@ -502,6 +502,9 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: install MSYS2
run: src/ci/scripts/install-msys2.sh
if: success() && !env.SKIP_JOB
Expand All @@ -517,9 +520,6 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: ensure line endings are correct
run: src/ci/scripts/verify-line-endings.sh
if: success() && !env.SKIP_JOB
Expand Down Expand Up @@ -615,6 +615,9 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: install MSYS2
run: src/ci/scripts/install-msys2.sh
if: success() && !env.SKIP_JOB
Expand All @@ -630,9 +633,6 @@ jobs:
- name: disable git crlf conversion
run: src/ci/scripts/disable-git-crlf-conversion.sh
if: success() && !env.SKIP_JOB
- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
if: success() && !env.SKIP_JOB
- name: ensure line endings are correct
run: src/ci/scripts/verify-line-endings.sh
if: success() && !env.SKIP_JOB
Expand Down
8 changes: 4 additions & 4 deletions src/ci/github-actions/ci.yml
Expand Up @@ -169,6 +169,10 @@ x--expand-yaml-anchors--remove:
run: src/ci/scripts/disable-git-crlf-conversion.sh
<<: *step

- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
<<: *step

- name: install MSYS2
run: src/ci/scripts/install-msys2.sh
<<: *step
Expand All @@ -194,10 +198,6 @@ x--expand-yaml-anchors--remove:
run: src/ci/scripts/disable-git-crlf-conversion.sh
<<: *step

- name: checkout submodules
run: src/ci/scripts/checkout-submodules.sh
<<: *step

- name: ensure line endings are correct
run: src/ci/scripts/verify-line-endings.sh
<<: *step
Expand Down
13 changes: 12 additions & 1 deletion src/ci/init_repo.sh
Expand Up @@ -43,6 +43,11 @@ function fetch_github_commit_archive {
curl -f -sSL -o $cached $2"
mkdir $module
touch "$module/.git"
# On Windows, the default behavior is to emulate symlinks by copying
# files. However, that ends up being order-dependent while extracting,
# which can cause a failure if the symlink comes first. This env var
# causes tar to use real symlinks instead, which are allowed to dangle.
export MSYS=winsymlinks:nativestrict
tar -C $module --strip-components=1 -xf $cached
rm $cached
}
Expand All @@ -62,6 +67,7 @@ for i in ${!modules[@]}; do
url=${urls[$i]}
url=${url/\.git/}
fetch_github_commit_archive $module "$url/archive/$commit.tar.gz" &
bg_pids[${i}]=$!
continue
else
use_git="$use_git $module"
Expand All @@ -70,4 +76,9 @@ done
retry sh -c "git submodule deinit -f $use_git && \
git submodule sync && \
git submodule update -j 16 --init --recursive $use_git"
wait
STATUS=0
for pid in ${bg_pids[*]}
do
wait $pid || STATUS=1
done
exit ${STATUS}

0 comments on commit 8769f4e

Please sign in to comment.