#!/bin/sh # clean up unnecessary data # shellcheck source=../conf/default.conf . "${0%/*}/../conf/default.conf" # TODO: clean database, too # we only clean if run interactive or if no one is logged in if ! tty -s && \ [ -n "$(users)" ]; then >&2 echo 'Skipping clean up.' exit fi if [ -s "${work_dir}/build-master-sanity" ]; then >&2 echo 'Build master is not sane.' exit fi # remove logs where package is not broken/locked anymore { find "${build_log_directory}/error" -maxdepth 1 -type f -printf 'file %f\n' # shellcheck disable=SC2016 printf 'SELECT "mysql",`failed_builds`.`log_file` FROM `failed_builds`;\n' | \ mysql_run_query | \ tr '\t' ' ' } | \ sort -k2,2 -k1,1 | \ uniq -uf 1 | \ sed -n ' s/^file // T p ' | \ while read -r file; do rm "${build_log_directory}/error/${file}" done # only keep 10 newest logs per failed package find "${build_log_directory}/error" -maxdepth 1 -type f -printf '%f\n' | \ sed 's|^\(.*\)\(\.\([^.]\+\)\.build-log\.gz\)$|\1\2 \3 \1|' | \ sort -k3,3 -k2r,2 | \ uniq -f2 --group=prepend | \ cut -d' ' -f1 | \ { count=0 while read -r a; do if [ -z "${a}" ]; then count=0 continue fi if [ ${count} -ge 10 ]; then rm "${build_log_directory}/error/${a}" fi count=$((count+1)) done } # only keep last 50 lines of ssh-log tail -n50 "${work_dir}/ssh-log" | \ sponge "${work_dir}/ssh-log" # only keep namcap logs of last 2 weeks for succeeded packages find "${build_log_directory}/success" -maxdepth 1 -type f -mtime +14 \ -not -exec zgrep -q '^+.*ELF file .* has text relocations' '{}' \; \ -delete exit 0