-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcoqbot-ci.sh
executable file
·126 lines (111 loc) · 4.43 KB
/
coqbot-ci.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env bash
set -e
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
printf "::group::opam switch '%s'\n" "$COMPILER"
printf "::warning::Using opam switch '%s'\n" "$COMPILER"
opam switch "$COMPILER"
eval $(opam env)
printf "::warning::which ocamlfind: '%s'\n" "$(which ocamlfind)"
printf "::warning::ocamlfind ocamlopt -v: %s\n" "$(ocamlfind ocamlopt -v | tr '\n' '\r' | sed 's/\r/%0A/g')"
printf '::endgroup::\n'
printf '::group::df -h\n'
df -h
printf '::endgroup::\n'
mkdir -p "${CI_BASE_BUILD_DIR}"
pushd "${CI_BASE_BUILD_DIR}"
printf '::group::clone coq\n'
git clone https://github.com/coq/coq.git || true
sed 's,^\(\s*\)\(fetch =.*\)$,\1\2\n\1fetch = +refs/pull/*/head:refs/remotes/origin/pr/*,g' -i coq/.git/config
cat coq/.git/config
(cd coq; git remote update >/dev/null)
cp -a coq coq-failing
cp -a coq coq-passing
printf '::endgroup::\n'
printf '::group::df -h\n'
df -h
printf '::endgroup::\n'
printf "::group::download failing artifacts @ %s %s\n" "${COQ_FAILING_SHA}" "${FAILING_ARTIFACT_URLS}"
printf "::warning::download failing artifacts @ %s %s\n" "${COQ_FAILING_SHA}" "${FAILING_ARTIFACT_URLS}"
pushd coq-failing
# set up saved_build_ci -> _build_ci symlink so that unzips from https://github.com/coq/coq/pull/19925 go to the right place
mkdir -p _build_ci
ln -s _build_ci saved_build_ci
git checkout ${COQ_FAILING_SHA}
for i in ${FAILING_ARTIFACT_URLS}; do
hash="$(printf "%s" "$i" | sha1sum | cut -d" " -f1)"
wget $i -O "artifact-$hash.zip"
unzip -o "artifact-$hash.zip"
done
popd
printf '::endgroup::\n'
printf '::group::df -h\n'
df -h
printf '::endgroup::\n'
printf "::group::download passing artifacts @ %s %s\n" "${COQ_PASSING_SHA}" "${PASSING_ARTIFACT_URLS}"
printf "::warning::download passing artifacts @ %s %s\n" "${COQ_PASSING_SHA}" "${PASSING_ARTIFACT_URLS}"
pushd coq-passing
# set up saved_build_ci -> _build_ci symlink so that unzips from https://github.com/coq/coq/pull/19925 go to the right place
mkdir -p _build_ci
ln -s _build_ci saved_build_ci
git checkout ${COQ_PASSING_SHA}
for i in ${PASSING_ARTIFACT_URLS}; do
hash="$(printf "%s" "$i" | sha1sum | cut -d" " -f1)"
wget $i -O "artifact-$hash.zip"
unzip -o "artifact-$hash.zip"
done
popd
printf '::endgroup::\n'
printf '::group::df -h\n'
df -h
printf '::endgroup::\n'
printf '::group::set up COQ_CI_BASE_BUILD_DIR: %s\n' "${COQ_CI_BASE_BUILD_DIR}"
sudo mkdir -p "${COQ_CI_BASE_BUILD_DIR}"
sudo rm -rf "${COQ_CI_BASE_BUILD_DIR}"
printf '::endgroup::\n'
printf '::group::wrap binaries\n'
for coqdir in "${CI_BASE_BUILD_DIR}"/coq-{failing,passing}; do
tmpcoqdir="${COQ_CI_BASE_BUILD_DIR}"
mv "${coqdir}" "${tmpcoqdir}"
# ln -s "${coqdir}" "${tmpcoqdir}"
pushd "${tmpcoqdir}/_install_ci/bin" >/dev/null
printf "::warning::(%s) %s/coqc --config: %s\n" "${coqdir}" "$(pwd)" "$(./coqc --config | tr '\n' '\r' | sed 's/\r/%0A/g')"
./coqc --config | sed "s,${tmpcoqdir}/,${coqdir}/,g; "'s,^\([^=]*\)=\(.*\)$,\1="\2",g' > coq_environment.txt
printf "::warning::(%s) setting up coq_environment.txt: %s\n" "${coqdir}" "$(cat coq_environment.txt | tr '\n' '\r' | sed 's/\r/%0A/g')"
for i in $(ls); do
wrap_file "$i"
done
popd >/dev/null
mv "${tmpcoqdir}" "${coqdir}"
# rm "${tmpcoqdir}"
done
set +x
printf '::endgroup::\n'
printf "::group::make %s (%s) (passing)\n" "${CI_TARGET}" "${CI_TARGETS}"
set -x
# mv "${CI_BASE_BUILD_DIR}"/coq-passing "${COQ_CI_BASE_BUILD_DIR}"
ln -s "${CI_BASE_BUILD_DIR}"/coq-passing "${COQ_CI_BASE_BUILD_DIR}"
pushd "${COQ_CI_BASE_BUILD_DIR}"
for target in $CI_TARGETS; do
GITLAB_CI=1 dev/ci/ci-wrapper.sh "${target}";
done
# make -f Makefile.ci GITLAB_CI=1 ${CI_TARGET}
popd
# mv "${COQ_CI_BASE_BUILD_DIR}" "${CI_BASE_BUILD_DIR}"/coq-passing
rm "${COQ_CI_BASE_BUILD_DIR}"
set +x
printf '::endgroup::\n'
printf "::group::make %s (%s) (failing)\n" "${CI_TARGET}" "${CI_TARGETS}"
set -x
# mv "${CI_BASE_BUILD_DIR}"/coq-failing "${COQ_CI_BASE_BUILD_DIR}"
ln -s "${CI_BASE_BUILD_DIR}"/coq-failing "${COQ_CI_BASE_BUILD_DIR}"
pushd "${COQ_CI_BASE_BUILD_DIR}"
set +x
# { make -f Makefile.ci GITLAB_CI=1 ${CI_TARGET} 2>&1 | sed "s|${COQ_CI_BASE_BUILD_DIR}/|${CI_BASE_BUILD_DIR}/coq-failing/|g"; } || true
for target in $CI_TARGETS; do
{ GITLAB_CI=1 dev/ci/ci-wrapper.sh "${target}" 2>&1 | sed "s|${COQ_CI_BASE_BUILD_DIR}/|${CI_BASE_BUILD_DIR}/coq-failing/|g"; } || true
done
popd
# mv "${COQ_CI_BASE_BUILD_DIR}" "${CI_BASE_BUILD_DIR}"/coq-failing
rm "${COQ_CI_BASE_BUILD_DIR}"
printf '::endgroup::\n'
set -x