|
30 | 30 |
|
31 | 31 | # Python 3.8.10 (matrix.python_version) is not available for linux aarch64 |
32 | 32 | # cf. https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json |
33 | | - "python-svm-build-gate-linux-aarch64" |
| 33 | + "linux-aarch64" |
34 | 34 | ) |
35 | 35 |
|
36 | | -# TODO build link using self.runs_on |
37 | 36 | DOWNLOADS_LINKS = { |
38 | | - "GRADLE_JAVA_HOME": { |
39 | | - "https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz": ["linux", "amd64"], |
40 | | - "https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz": ["linux", "aarch64"], |
41 | | - "https://download.oracle.com/java/21/latest/jdk-21_macos-aarch64_bin.tar.gz": ["darwin", "aarch64"], |
42 | | - "https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.zip": ["windows", "amd64"], |
43 | | - } |
| 37 | + "GRADLE_JAVA_HOME": "https://download.oracle.com/java/{major_version}/latest/jdk-{major_version}_{os}-{arch_short}_bin{ext}" |
44 | 38 | } |
45 | 39 |
|
46 | 40 | # Gitlab Runners OSS |
@@ -125,30 +119,38 @@ def python_packages(self) -> list[str]: |
125 | 119 | python_packages.append(f"'{k[4:]}{v}'" if self.runs_on != "windows-latest" else f"{k[4:]}{v}") |
126 | 120 | return python_packages |
127 | 121 |
|
128 | | - def get_download_steps(self, key: str) -> str: |
129 | | - download_link = self.get_download_link(key) |
| 122 | + def get_download_steps(self, key: str, version: str) -> str: |
| 123 | + download_link = self.get_download_link(key, version) |
130 | 124 | filename = download_link.split('/')[-1] |
131 | 125 | return (f"wget -q {download_link} && " |
132 | 126 | f"dirname=$(tar -tzf {filename} | head -1 | cut -f1 -d '/') && " |
133 | 127 | f"tar -xzf {filename} && " |
134 | 128 | f'echo {key}=$(realpath "$dirname") >> $GITHUB_ENV') |
135 | 129 |
|
136 | | - def get_download_link(self, key) -> str: |
137 | | - os_pair = OSS[self.runs_on] |
138 | | - oss_links = DOWNLOADS_LINKS[key] |
| 130 | + def get_download_link(self, key: str, version: str) -> str: |
| 131 | + os, arch = OSS[self.runs_on] |
| 132 | + major_version = version.split(".")[0] |
| 133 | + extension = ".tar.gz" if not os == "windows" else ".zip" |
| 134 | + os = os if os != "darwin" else "macos" |
| 135 | + arch_short = {"amd64": "x64", "aarch64": "aarch64"}[arch] |
| 136 | + |
| 137 | + vars = { |
| 138 | + "major_version": major_version, |
| 139 | + "os":os, |
| 140 | + "arch": arch, |
| 141 | + "arch_short": arch_short, |
| 142 | + "ext": extension, |
| 143 | + } |
139 | 144 |
|
140 | | - for k, v in oss_links.items(): |
141 | | - if os_pair == v: return k |
142 | | - |
143 | | - return "" |
| 145 | + return DOWNLOADS_LINKS[key].format(**vars) |
144 | 146 |
|
145 | 147 | @cached_property |
146 | 148 | def downloads(self) -> list[str]: |
147 | 149 | downloads = [] |
148 | | - for k, v in self.job.get("downloads", {}).items(): |
149 | | - if k in DOWNLOADS_LINKS: |
150 | | - downloads.append(self.get_download_steps(k)) |
151 | | - #print(f"[DEBUG] {k}, {downloads}") |
| 150 | + for k, download_info in self.job.get("downloads", {}).items(): |
| 151 | + if k in DOWNLOADS_LINKS and download_info["version"]: |
| 152 | + downloads.append(self.get_download_steps(k, download_info["version"])) |
| 153 | + |
152 | 154 | return downloads |
153 | 155 |
|
154 | 156 | @staticmethod |
|
0 commit comments