| #!/bin/bash | |
| set -ex | |
| ignore_warning() { | |
| # Invert match to filter out $1. | |
| set +e | |
| grep -v "$1" doxygen-log.txt > temp.txt | |
| set -e | |
| mv temp.txt doxygen-log.txt | |
| } | |
| command -v doxygen >/dev/null 2>&1 || { echo >&2 "doxygen is not supported. Aborting."; exit 1; } | |
| pushd "$(dirname "$0")/../../.." | |
| cp torch/_utils_internal.py tools/shared | |
| python -m torchgen.gen --source-path aten/src/ATen | |
| python tools/setup_helpers/generate_code.py \ | |
| --native-functions-path aten/src/ATen/native/native_functions.yaml \ | |
| --tags-path aten/src/ATen/native/tags.yaml | |
| popd | |
| # Run doxygen and log all output. | |
| doxygen "$(dirname $0)" 2> original-doxygen-log.txt | |
| cp original-doxygen-log.txt doxygen-log.txt | |
| # Uncomment this if you need it for debugging; we're not printing this | |
| # by default because it is confusing. | |
| # echo "Original output" | |
| # cat original-doxygen-log.txt | |
| # Filter out some warnings. | |
| ignore_warning "warning: no uniquely matching class member found for" | |
| ignore_warning "warning: explicit link request to 'Item' could not be resolved" | |
| ignore_warning "warning: Included by graph for 'types.h' not generated, too many nodes" | |
| # Count the number of remaining warnings. | |
| warnings="$(grep 'warning:' doxygen-log.txt | wc -l)" | |
| echo "Treating all remaining warnings as errors" | |
| if [[ "$warnings" -ne "0" ]]; then | |
| echo "Failing Doxygen test because the following warnings were treated fatally:" | |
| cat doxygen-log.txt | |
| echo "Please fix these warnings. To run this test locally, use docs/cpp/source/check-doxygen.sh" | |
| rm -f doxygen-log.txt original-doxygen-log.txt | |
| exit 1 | |
| fi | |
| rm -f doxygen-log.txt original-doxygen-log.txt |