nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 writeScript,
4}:
5
6{ version }:
7
8let
9 prefix = "hsa-amd-aqlprofile";
10 extVersion = lib.strings.concatStrings (
11 lib.strings.intersperse "0" (lib.versions.splitVersion version)
12 );
13 major = lib.versions.major version;
14 minor = lib.versions.minor version;
15 patch = lib.versions.patch version;
16
17 updateScript = writeScript "update.sh" ''
18 #!/usr/bin/env nix-shell
19 #!nix-shell -i bash -p curl common-updater-scripts
20 apt="https://repo.radeon.com/rocm/apt"
21 pool="pool/main/h/${prefix}/"
22 url="$apt/latest/$pool"
23 res="$(curl -sL "$url")"
24 deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)"
25 patch="${patch}"
26
27 # Try up to 10 patch versions
28 for i in {1..10}; do
29 ((patch++))
30 extVersion="$(echo "$deb" | grep -o -P "(?<=\.....).*(?=\..*-)")"
31
32 if (( ''${#extVersion} == 6 )) && (( $extVersion <= ${extVersion} )); then
33 url="https://repo.radeon.com/rocm/apt/${major}.${minor}.$patch/pool/main/h/${prefix}/"
34 res="$(curl -sL "$url")"
35 deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)"
36 else
37 break
38 fi
39 done
40
41 extVersion="$(echo $deb | grep -o -P "(?<=\.....).*(?=\..*-)")"
42 version="$(echo $extVersion | sed "s/0/./1" | sed "s/0/./1")"
43 IFS='.' read -a version_arr <<< "$version"
44
45 if (( ''${version_arr[0]} > 6 )); then
46 echo "'rocmPackages_6.${prefix}-bin' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${prefix}-bin'." 1>&2
47 exit 1
48 fi
49
50 if (( ''${#extVersion} == 6 )); then
51 repoVersion="$version"
52
53 if (( ''${version:4:1} == 0 )); then
54 repoVersion=''${version:0:3}
55 fi
56
57 update-source-version rocmPackages_6.${prefix}-bin "$version" "" "$apt/$repoVersion/$pool$deb" --ignore-same-hash
58 fi
59 '';
60in
61[ updateScript ]