Auto merge of #92214 - ehuss:submodule-bg-exit, r=Mark-Simulacrum
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.
This commit is contained in:
commit
8769f4ef2f
3 changed files with 25 additions and 14 deletions
18
.github/workflows/ci.yml
vendored
18
.github/workflows/ci.yml
vendored
|
@ -104,6 +104,9 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
- name: checkout submodules
|
||||||
|
run: src/ci/scripts/checkout-submodules.sh
|
||||||
|
if: success() && !env.SKIP_JOB
|
||||||
- name: install MSYS2
|
- name: install MSYS2
|
||||||
run: src/ci/scripts/install-msys2.sh
|
run: src/ci/scripts/install-msys2.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
@ -119,9 +122,6 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
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
|
- name: ensure line endings are correct
|
||||||
run: src/ci/scripts/verify-line-endings.sh
|
run: src/ci/scripts/verify-line-endings.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
@ -502,6 +502,9 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
- name: checkout submodules
|
||||||
|
run: src/ci/scripts/checkout-submodules.sh
|
||||||
|
if: success() && !env.SKIP_JOB
|
||||||
- name: install MSYS2
|
- name: install MSYS2
|
||||||
run: src/ci/scripts/install-msys2.sh
|
run: src/ci/scripts/install-msys2.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
@ -517,9 +520,6 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
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
|
- name: ensure line endings are correct
|
||||||
run: src/ci/scripts/verify-line-endings.sh
|
run: src/ci/scripts/verify-line-endings.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
@ -615,6 +615,9 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
- name: checkout submodules
|
||||||
|
run: src/ci/scripts/checkout-submodules.sh
|
||||||
|
if: success() && !env.SKIP_JOB
|
||||||
- name: install MSYS2
|
- name: install MSYS2
|
||||||
run: src/ci/scripts/install-msys2.sh
|
run: src/ci/scripts/install-msys2.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
@ -630,9 +633,6 @@ jobs:
|
||||||
- name: disable git crlf conversion
|
- name: disable git crlf conversion
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
if: success() && !env.SKIP_JOB
|
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
|
- name: ensure line endings are correct
|
||||||
run: src/ci/scripts/verify-line-endings.sh
|
run: src/ci/scripts/verify-line-endings.sh
|
||||||
if: success() && !env.SKIP_JOB
|
if: success() && !env.SKIP_JOB
|
||||||
|
|
|
@ -169,6 +169,10 @@ x--expand-yaml-anchors--remove:
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
<<: *step
|
<<: *step
|
||||||
|
|
||||||
|
- name: checkout submodules
|
||||||
|
run: src/ci/scripts/checkout-submodules.sh
|
||||||
|
<<: *step
|
||||||
|
|
||||||
- name: install MSYS2
|
- name: install MSYS2
|
||||||
run: src/ci/scripts/install-msys2.sh
|
run: src/ci/scripts/install-msys2.sh
|
||||||
<<: *step
|
<<: *step
|
||||||
|
@ -194,10 +198,6 @@ x--expand-yaml-anchors--remove:
|
||||||
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
||||||
<<: *step
|
<<: *step
|
||||||
|
|
||||||
- name: checkout submodules
|
|
||||||
run: src/ci/scripts/checkout-submodules.sh
|
|
||||||
<<: *step
|
|
||||||
|
|
||||||
- name: ensure line endings are correct
|
- name: ensure line endings are correct
|
||||||
run: src/ci/scripts/verify-line-endings.sh
|
run: src/ci/scripts/verify-line-endings.sh
|
||||||
<<: *step
|
<<: *step
|
||||||
|
|
|
@ -43,6 +43,11 @@ function fetch_github_commit_archive {
|
||||||
curl -f -sSL -o $cached $2"
|
curl -f -sSL -o $cached $2"
|
||||||
mkdir $module
|
mkdir $module
|
||||||
touch "$module/.git"
|
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
|
tar -C $module --strip-components=1 -xf $cached
|
||||||
rm $cached
|
rm $cached
|
||||||
}
|
}
|
||||||
|
@ -62,6 +67,7 @@ for i in ${!modules[@]}; do
|
||||||
url=${urls[$i]}
|
url=${urls[$i]}
|
||||||
url=${url/\.git/}
|
url=${url/\.git/}
|
||||||
fetch_github_commit_archive $module "$url/archive/$commit.tar.gz" &
|
fetch_github_commit_archive $module "$url/archive/$commit.tar.gz" &
|
||||||
|
bg_pids[${i}]=$!
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
use_git="$use_git $module"
|
use_git="$use_git $module"
|
||||||
|
@ -70,4 +76,9 @@ done
|
||||||
retry sh -c "git submodule deinit -f $use_git && \
|
retry sh -c "git submodule deinit -f $use_git && \
|
||||||
git submodule sync && \
|
git submodule sync && \
|
||||||
git submodule update -j 16 --init --recursive $use_git"
|
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}
|
||||||
|
|
Loading…
Add table
Reference in a new issue