blob: 7ffc5f9a7e6cb1e99f99e02666d6443e5baf5135 (
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
61
62
63
|
{
lib,
writeScript,
}:
{
finalAttrs ? { },
name ? finalAttrs.pname,
owner ? finalAttrs.src.owner,
repo ? finalAttrs.src.repo,
page ? "releases?per_page=10",
# input: array of [ { tag_name: "rocm-6.x.x", }, ... ]. some entries may have bad names like rocm-test-date we want to skip
# output: first tag_name/name that's a proper version if any
filter ? "map(.tag_name // .name) | map(select(test(\"^rocm-[0-9]+\\\\.[0-9]+(\\\\.[0-9]+)?$\"))) | first | ltrimstr(\"rocm-\")",
}:
let
pname =
if lib.hasPrefix "rocm-llvm-" name then "llvm.${lib.removePrefix "rocm-llvm-" name}" else name;
updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts
set -euo pipefail
fetch_releases() {
local api_url="https://api.github.com/repos/${owner}/${repo}/${page}"
if [ "${page}" = "releases" ]; then
api_url="$api_url?per_page=4"
fi
>&2 echo $api_url
curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} -sL "$api_url"
}
find_valid_version() {
local releases="$1"
>&2 echo "$releases"
# Wrap in array if not already an array to make handling specific release or tags page the same
>&2 echo jq -r 'if type == "array" then . else [.] end | ${filter}'
echo "$releases" | jq -r 'if type == "array" then . else [.] end | ${filter}'
}
releases="$(fetch_releases)"
version="$(find_valid_version "$releases")"
if [ -z "$version" ]; then
echo "No valid version found in the fetched release(s)." >&2
exit 1
fi
IFS='.' read -ra version_arr <<< "$version"
>&2 echo parsed version "$version_arr" from "$version"
if (( ''${version_arr[0]} > 7 )); then
echo "'rocmPackages.${pname}' is already at its maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${pname}'." >&2
exit 1
fi
update-source-version rocmPackages.${pname} "$version" --ignore-same-hash
'';
in
[ updateScript ]
|