summaryrefslogtreecommitdiff
path: root/tcwg-report-stale-rr-jobs.sh
blob: f06cef0d6e8247aff66166dc93412fcb70d13524 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash

set -euf -o pipefail

scripts=$(dirname "$0")
# shellcheck source=jenkins-helpers.sh
. "$scripts/jenkins-helpers.sh"

convert_args_to_variables "$@"

days="${days-10}"
human="${human-true}"
refs_prefix="${refs_prefix-refs/heads/linaro-local/ci/}"
refs_url_prefix="${refs_url_prefix-https://git.linaro.org/toolchain/ci}"
repos=("${repos[@]-default}")
verbose="${verbose-false}"

if $verbose; then
    set -x
fi

if [ x"${repos[*]}" = x"default" ]; then
    repos=(base-artifacts binutils-gdb gcc glibc linux llvm-project newlib qemu)
fi

process_git_url ()
{
    (
    set -euf -o pipefail
    local refs_url="$1"

    # Initialize base-artifacts repo (by cloning its "empty" branch).
    refs_repo=$(basename "$refs_url" .git)
    clone_or_update_repo_no_checkout "$refs_repo" "$refs_url" auto empty origin \
				     >/dev/null 2>&1
    git -C "$refs_repo" reset --hard >/dev/null 2>&1

    # Walk through all commits of all tcwg_bmk* branches and mark results
    # referenced in those results with "used_by" file.
    while IFS= read -r ref; do
	dst_ref="refs/remotes/origin/${ref#refs/heads/}"
	git -C "$refs_repo" fetch -q origin "+$ref:$dst_ref" >/dev/null 2>&1
	commit_stamp=$(git -C "$refs_repo" show --no-patch --pretty=%ct "$dst_ref")
	days_ago=$((($(date +%s) - $commit_stamp) / (24 * 3600)))
	if [ $days_ago -gt $days ]; then
	    if $human; then
		echo "$refs_repo: ${ref#$refs_prefix}: last updated $days_ago days ago"
	    else
		echo "$refs_repo:$ref"
	    fi
	fi
    done < <(git ls-remote "$refs_url" "${refs_prefix}*" | awk '{ print $2 }')
    )
}

for repo in "${repos[@]}"; do
    process_git_url "$refs_url_prefix/$repo" &
done | sort

wait