Revision d3285efeb37b483f7ad4abaa5bc46b280d7aa833 authored by harsimran pabla on 19 June 2024, 16:12:16 UTC, committed by Julian Wiedmann on 20 June 2024, 07:21:42 UTC
This change reorders peer creation and deletion order in peer reconciler. This is done because if ASN is modified, we need to delete old peer and then add new one. Signed-off-by: harsimran pabla <hpabla@isovalent.com>
1 parent 4775694
check-build.sh
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
# This was ported from the makefile, it can probably be converted
# to Python (see e.g. https://stackoverflow.com/a/47657926), that
# way we might be able to call Sphinx only once and make it quicker
# Update 2022-05: It seems that Sphinx cannot run multiple builders
# (e.g. html + spelling) at once so we're stuck calling it multiple
# times anyway.
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
root_dir="$(dirname "${script_dir}")"
build_dir="${script_dir}/_build"
warnings="${build_dir}/warnings.txt"
spelldir="${build_dir}/spelling"
target="${1:-"html"}"
shift
cd "${script_dir}"
mkdir -p "${build_dir}"
rm -f -- "${warnings}"
has_spelling_errors() {
# If spelling errors were found, Sphinx wrote them to files under
# ${spelldir}. Let's check whether the directory is empty.
test -n "$(ls "${spelldir}" 2>/dev/null)"
}
# Filter out some undesirable warnings
filter_warnings() {
test -s "${warnings}" || return
cat "${warnings}"
}
# Returns non-0 if we have relevant build warnings
has_build_warnings() {
test -s "${warnings}"
}
describe_spelling_errors() {
local new_words
# Show all misspelled words; display source path relative to root repository
find "${spelldir}" -type f -print0 | xargs -0 sed 's/^/* Documentation\//'
# Print a hint on how to add new correct words to the list of good words
new_words="$(find "${spelldir}" -type f -print0 | \
xargs -0 sed -E "s/^([^:]+:){2} \(([^ ]+)\).*/\2/g" | \
sort -u | \
tr '\r\n' ' ' | \
sed "s/'/\\\\\\\\'/g")"
printf "\nIf the words are not misspelled, run:\n%s %s\n" \
"Documentation/update-spelling_wordlist.sh" "${new_words}"
}
build_with_spellchecker() {
# The spell checker runs some Git commands to retreive the name of authors
# and consider them as acceptable words.
#
# Recent Git versions refuse to work by default if the repository owner is
# different from the user. This is the case when we run this script in a
# container on macOS, because pass --user "uid:gid", and these values
# differ from what Linux is used to (The gid from macOS seems to be 20,
# which corresponds to the "dialout" group in the container). We pass
# --user "uid:gid" to have the "install" command work in the workaround for
# versionwarning above.
#
# If running in a container, tell Git that the repository is safe.
set +o nounset
if [[ -n "$MAKE_GIT_REPO_SAFE" ]]; then
git config --global --add safe.directory "${root_dir}"
fi
set -o nounset
rm -rf "${spelldir}"
# Call with -W --keep-going: suppresses regular output (keeps warning;
# -Q would suppress warnings as well including those we write to a file),
# consider warnings as errors for exit status, but keep going on
# warning/errors so that we get the full list of errors.
sphinx-build -b spelling \
-d "${build_dir}/doctrees" . "${spelldir}" \
-E -n --color -w "${warnings}" -W --keep-going 2>/dev/null
}
run_linter() {
local CONF_PY_ROLES CONF_PY_SUBSTITUTIONS ignored_messages
CONF_PY_ROLES=$(sed -n "/^extlinks = {$/,/^}$/ s/^ *'\([^']\+\)':.*/\1/p" conf.py | tr '\n' ',')
CONF_PY_SUBSTITUTIONS="$(sed -n 's/^\.\. |\([^|]\+\)|.*/\1/p' conf.py | tr '\n' ',')release"
CONF_PY_TARGET_NAMES="(cilium slack)"
ignored_messages="("
ignored_messages="${ignored_messages}bpf/.*\.rst:.*: \(INFO/1\) Enumerated list start value not ordinal"
ignored_messages="${ignored_messages}|Hyperlink target .*is not referenced\."
ignored_messages="${ignored_messages}|Duplicate implicit target name:"
ignored_messages="${ignored_messages}|\(ERROR/3\) Indirect hyperlink target \".*\" refers to target \"${CONF_PY_TARGET_NAMES}\", which does not exist."
ignored_messages="${ignored_messages}|\(ERROR/3\) Unknown target name: \"${CONF_PY_TARGET_NAMES}\"."
ignored_messages="${ignored_messages})"
# Filter out the AttributeError reports that are due to a bug in rstcheck,
# see https://github.com/rstcheck/rstcheck-core/issues/3.
rstcheck \
--report-level info \
--ignore-languages "bash,c" \
--ignore-messages "${ignored_messages}" \
--ignore-directives "tabs,openapi" \
--ignore-roles "${CONF_PY_ROLES},spelling:ignore,spelling:word" \
--ignore-substitutions "${CONF_PY_SUBSTITUTIONS}" \
-r . ../README.rst 2>&1 | \
grep -v 'WARNING:rstcheck_core.checker:An `AttributeError` error occured. This is most probably due to a code block directive (code/code-block/sourcecode) without a specified language.'
}
read_all_opt=""
if [ -n "${SKIP_LINT-}" ]; then
if [ -z "${INCREMENTAL-}" ]; then
# Read all files for final build if we don't read them all with linting
read_all_opt="-E"
fi
echo ""
echo "Skipping syntax and spelling validations..."
else
echo ""
echo "Running linter..."
run_linter
echo ""
echo "Validating documentation (syntax, spelling)..."
if ! build_with_spellchecker ; then
status_ok=0
if has_build_warnings ; then
printf "\nPlease fix the following documentation warnings:\n"
filter_warnings
status_ok=1
fi
if has_spelling_errors ; then
printf "\nPlease fix the following spelling mistakes:\n"
describe_spelling_errors
status_ok=1
fi
if [ "${status_ok}" -ne 0 ] ; then
exit 1
fi
fi
fi
echo "Building documentation (${target})..."
sphinx-build -M "${target}" "${script_dir}" "${build_dir}" $@ \
${read_all_opt} -n --color -w "${warnings}" 2>/dev/null
# We can have warnings but no errors here, or sphinx-build would return non-0
# and we would have exited because of "set -o errexit".
if has_build_warnings ; then
echo "Please fix the documentation warnings below"
filter_warnings
exit 1
fi
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...