nixpkgs/pkgs/development/python-modules/av/update-test-samples.bash
Emily e577b966bd python3Packages.av: fix build
Many of the tests depend on sample files fetched over HTTP and they
keep adding more. Since they support a caching mechanism, use it to
pre‐fetch all the used samples instead.

It might be nice to have a package for the full FATE suite, but it’s
over 1 GiB in size so I just did this for now.

Fixes: ca258d2d39
2024-07-16 12:27:27 +01:00

45 lines
981 B
Bash
Executable File

#!/usr/bin/env bash
set -o errexit
set -o nounset
if test "$#" != 1; then
printf >&2 'usage: update-test-samples.bash /path/to/PyAV/source\n'
exit 2
fi
pyav_source=$1
exec > "$(dirname "$(readlink -f "$0")")/test-samples.toml"
fetch() {
path=$1
url=$2
prefetch_json=$(nix store prefetch-file --json "${url}")
sri_hash=$(jq -r .hash <<< "${prefetch_json}")
printf '"%s" = { url = "%s", hash = "%s" }\n' "${path}" "${url}" "${sri_hash}"
}
fetch_all() {
function=$1
base_path=$2
base_url=$3
samples=$(
rg \
--only-matching \
--no-filename \
"\\b${function}\\([\"']([^\"']+)[\"']\\)" \
--replace '$1' \
"${pyav_source}"
)
unique_samples=$(sort -u <<< "${samples}")
while IFS= read -r sample; do
fetch "${base_path}/${sample}" "${base_url}/${sample}"
done <<< "${unique_samples}"
}
fetch_all fate_suite fate-suite "http://fate.ffmpeg.org/fate-suite"
fetch_all curated pyav-curated "https://pyav.org/datasets"