mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-11-28 04:34:25 +08:00
276e6d7bbc
It might be help. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5627>
78 lines
1.8 KiB
Bash
Executable File
78 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
FOSSILS_SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
|
FOSSILS_YAML="$(readlink -f "$1")"
|
|
FOSSILS_RESULTS="$2"
|
|
|
|
clone_fossils_db()
|
|
{
|
|
local repo="$1"
|
|
local commit="$2"
|
|
rm -rf fossils-db
|
|
git clone --no-checkout "$repo" fossils-db
|
|
(cd fossils-db; git reset "$commit" || git reset "origin/$commit")
|
|
}
|
|
|
|
query_fossils_yaml()
|
|
{
|
|
python3 "$FOSSILS_SCRIPT_DIR/query_fossils_yaml.py" \
|
|
--file "$FOSSILS_YAML" "$@"
|
|
}
|
|
|
|
create_clean_git()
|
|
{
|
|
rm -rf .clean_git
|
|
cp -R .git .clean_git
|
|
}
|
|
|
|
restore_clean_git()
|
|
{
|
|
rm -rf .git
|
|
cp -R .clean_git .git
|
|
}
|
|
|
|
fetch_fossil()
|
|
{
|
|
local fossil="${1//,/?}"
|
|
echo -n "[fetch_fossil] Fetching $1... "
|
|
local output=$(git lfs pull -I "$fossil" 2>&1)
|
|
local ret=0
|
|
if [[ $? -ne 0 || ! -f "$1" ]]; then
|
|
echo "ERROR"
|
|
echo "$output"
|
|
ret=1
|
|
else
|
|
echo "OK"
|
|
fi
|
|
restore_clean_git
|
|
return $ret
|
|
}
|
|
|
|
if [[ -n "$(query_fossils_yaml fossils_db_repo)" ]]; then
|
|
clone_fossils_db "$(query_fossils_yaml fossils_db_repo)" \
|
|
"$(query_fossils_yaml fossils_db_commit)"
|
|
cd fossils-db
|
|
else
|
|
echo "Warning: No fossils-db entry in $FOSSILS_YAML, assuming fossils-db is current directory"
|
|
fi
|
|
|
|
# During git operations various git objects get created which
|
|
# may take up significant space. Store a clean .git instance,
|
|
# which we restore after various git operations to keep our
|
|
# storage consumption low.
|
|
create_clean_git
|
|
|
|
for fossil in $(query_fossils_yaml fossils)
|
|
do
|
|
fetch_fossil "$fossil" || exit $?
|
|
fossilize-replay --num-threads 4 $fossil 1>&2 2> $FOSSILS_RESULTS/fossil_replay.txt
|
|
if [ $? != 0 ]; then
|
|
echo "Replay of $fossil failed"
|
|
grep "pipeline crashed or hung" $FOSSILS_RESULTS/fossil_replay.txt
|
|
exit 1
|
|
fi
|
|
rm $fossil
|
|
done
|
|
|
|
exit $ret
|