gallivm: add indirect texture switch statement builder.
[mesa.git] / .gitlab-ci / fossils / fossils.sh
1 #!/usr/bin/env bash
2
3 FOSSILS_SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
4 FOSSILS_YAML="$(readlink -f "$1")"
5 FOSSILS_RESULTS="$2"
6
7 clone_fossils_db()
8 {
9 local repo="$1"
10 local commit="$2"
11 rm -rf fossils-db
12 git clone --no-checkout "$repo" fossils-db
13 (cd fossils-db; git reset "$commit" || git reset "origin/$commit")
14 }
15
16 query_fossils_yaml()
17 {
18 python3 "$FOSSILS_SCRIPT_DIR/query_fossils_yaml.py" \
19 --file "$FOSSILS_YAML" "$@"
20 }
21
22 create_clean_git()
23 {
24 rm -rf .clean_git
25 cp -R .git .clean_git
26 }
27
28 restore_clean_git()
29 {
30 rm -rf .git
31 cp -R .clean_git .git
32 }
33
34 fetch_fossil()
35 {
36 local fossil="${1//,/?}"
37 echo -n "[fetch_fossil] Fetching $1... "
38 local output=$(git lfs pull -I "$fossil" 2>&1)
39 local ret=0
40 if [[ $? -ne 0 || ! -f "$1" ]]; then
41 echo "ERROR"
42 echo "$output"
43 ret=1
44 else
45 echo "OK"
46 fi
47 restore_clean_git
48 return $ret
49 }
50
51 if [[ -n "$(query_fossils_yaml fossils_db_repo)" ]]; then
52 clone_fossils_db "$(query_fossils_yaml fossils_db_repo)" \
53 "$(query_fossils_yaml fossils_db_commit)"
54 cd fossils-db
55 else
56 echo "Warning: No fossils-db entry in $FOSSILS_YAML, assuming fossils-db is current directory"
57 fi
58
59 # During git operations various git objects get created which
60 # may take up significant space. Store a clean .git instance,
61 # which we restore after various git operations to keep our
62 # storage consumption low.
63 create_clean_git
64
65 for fossil in $(query_fossils_yaml fossils)
66 do
67 fetch_fossil "$fossil" || exit $?
68 fossilize-replay --num-threads 4 $fossil 1>&2 2> $FOSSILS_RESULTS/fossil_replay.txt
69 if [ $? != 0 ]; then
70 echo "Replay of $fossil failed"
71 grep "pipeline crashed or hung" $FOSSILS_RESULTS/fossil_replay.txt
72 exit 1
73 fi
74 rm $fossil
75 done
76
77 exit $ret