diff options
author | Erich Eckner <git@eckner.net> | 2017-06-21 15:48:48 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-06-21 15:48:48 +0200 |
commit | 4182bf1cad3c7903e5c9f6302cf1ccf1e9f5f90a (patch) | |
tree | 8fda438c530ffaf322aaf5be964368b6a1bd3d3a /bin/sanity-check | |
parent | ecceae922d481cc3dd4c1a1f8db7c38bdbc4743a (diff) | |
download | builder-4182bf1cad3c7903e5c9f6302cf1ccf1e9f5f90a.tar.xz |
bin/sanity-check: extend mirror testing
Diffstat (limited to 'bin/sanity-check')
-rwxr-xr-x | bin/sanity-check | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/bin/sanity-check b/bin/sanity-check index 631143f..70cccb9 100755 --- a/bin/sanity-check +++ b/bin/sanity-check @@ -4,6 +4,13 @@ . "${0%/*}/../conf/default.conf" +tmp_dir="$(mktemp -d)" +trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT + +if [ $# -eq 0 ]; then + set -- mirror +fi + while [ $# -gt 0 ]; do case "$1" in @@ -30,10 +37,12 @@ while [ $# -gt 0 ]; do for repo in ${repos}; do + >&2 printf ' checking "%s" ...\n' "${repo}" + packages="$( ls_master_mirror "i686/${repo}" | \ grep '\.pkg\.tar\.xz\(\.sig\)\?$' - )" + )" || true errors="$( echo "${packages}" | \ @@ -48,6 +57,51 @@ while [ $# -gt 0 ]; do exit 1 fi + ${master_mirror_command} \ + "${master_mirror_directory}/i686/${repo}/${repo}.db.tar.gz" \ + "${master_mirror_directory}/i686/${repo}/${repo}.files.tar.gz" \ + "${tmp_dir}/" + + errors="$( + ( + tar -tzf "${tmp_dir}/${repo}.db.tar.gz" | \ + grep '/$' | \ + sed 's|/$||' + echo "${packages}" | \ + sed 's|-[^-]\+$||' | \ + sort -u + ) | \ + sort | \ + uniq -u + )" + if [ -n "${errors}" ]; then + echo "The following packages in ${repo} are missing from the database or vice versa:" + echo "${errors}" + exit 1 + fi + + errors="$( + ( + tar -tzf "${tmp_dir}/${repo}.files.tar.gz" | \ + grep '/$' | \ + sed 's|/$||' + echo "${packages}" | \ + sed 's|-[^-]\+$||' | \ + sort -u + ) | \ + sort | \ + uniq -u + )" + if [ -n "${errors}" ]; then + echo "The following packages in ${repo} are missing from the file-database or vice versa:" + echo "${errors}" + exit 1 + fi + + rm -rf --one-file-system "${tmp_dir}/"* + + >&2 printf ' ... "%s" is ok.\n' "${repo}" + done >&2 echo '... passed.' |