Skip to content

Commit cfb7069

Browse files
Ariouztimfel
authored andcommitted
Fix running style gate on Github
1 parent 52b8a54 commit cfb7069

File tree

2 files changed

+46
-18
lines changed

2 files changed

+46
-18
lines changed

.github/scripts/extract_matrix.py

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@
7171
)
7272

7373
DOWNLOADS_LINKS = {
74-
"GRADLE_JAVA_HOME": "https://download.oracle.com/java/{major_version}/latest/jdk-{major_version}_{os}-{arch_short}_bin{ext}"
74+
"GRADLE_JAVA_HOME": "https://download.oracle.com/java/{major_version}/latest/jdk-{major_version}_{os}-{arch_short}_bin{ext}",
75+
"ECLIPSE": "https://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.26-202211231800/eclipse-SDK-4.26-linux-gtk-x86_64.tar.gz"
7576
}
7677

7778
# Gitlab Runners OSS
@@ -82,12 +83,24 @@
8283
"windows-latest": ["windows", "amd64"]
8384
}
8485

85-
# Override unavailable Python versions for some OS/Arch combinations
86+
# Override unavailable Python versions for some OS/Arch / job name combinations
8687
PYTHON_VERSIONS = {
8788
"ubuntu-24.04-arm": "3.12.8",
89+
"ubuntu-latest": "3.12.8",
90+
"style-gate": "3.8.12"
91+
}
92+
93+
EXCLUDED_SYSTEM_PACKAGES = {
94+
"devkit",
95+
"msvc_source",
8896
}
8997

9098

99+
PYTHON_PACKAGES_VERSIONS = {
100+
"pylint": "==2.4",
101+
"astroid": "==2.4"
102+
}
103+
91104
@dataclass
92105
class Artifact:
93106
name: str
@@ -148,8 +161,10 @@ def python_version(self) -> str | None:
148161
if "MX_PYTHON_VERSION" in self.env:
149162
del self.env["MX_PYTHON_VERSION"]
150163

151-
if self.runs_on in PYTHON_VERSIONS:
152-
python_version = PYTHON_VERSIONS[self.runs_on]
164+
for key, version in PYTHON_VERSIONS.items():
165+
if self.runs_on == key or key in self.name:
166+
python_version = version
167+
153168
return python_version
154169

155170
@cached_property
@@ -163,16 +178,20 @@ def system_packages(self) -> list[str]:
163178
continue
164179
elif k.startswith("00:") or k.startswith("01:"):
165180
k = k[3:]
181+
if any(excluded in k for excluded in EXCLUDED_SYSTEM_PACKAGES):
182+
continue
166183
system_packages.append(f"'{k}'" if self.runs_on != "windows-latest" else f"{k}")
167184
return system_packages
168185

169186
@cached_property
170187
def python_packages(self) -> list[str]:
171-
python_packages = []
188+
python_packages = [f"{key}{value}" for key, value in PYTHON_PACKAGES_VERSIONS.items()]
172189
for k, v in self.job.get("packages", {}).items():
173190
if k.startswith("pip:"):
174-
python_packages.append(f"'{k[4:]}{v}'" if self.runs_on != "windows-latest" else f"{k[4:]}{v}")
175-
return python_packages
191+
key = k[4:]
192+
if key in PYTHON_PACKAGES_VERSIONS: continue
193+
python_packages.append(f"{key}{v}")
194+
return [f"'{pkg}'" if self.runs_on != "windows-latest" else f"{pkg}" for pkg in python_packages]
176195

177196
def get_download_steps(self, key: str, version: str) -> str:
178197
download_link = self.get_download_link(key, version)
@@ -186,7 +205,7 @@ def get_download_steps(self, key: str, version: str) -> str:
186205
Add-Content $env:GITHUB_ENV "{key}=$(Resolve-Path $dirname)"
187206
""")
188207

189-
return (f"wget -q {download_link} && "
208+
return (f"wget -q '{download_link}' -O {filename} && "
190209
f"dirname=$(tar -tzf {filename} | head -1 | cut -f1 -d '/') && "
191210
f"tar -xzf {filename} && "
192211
f'echo {key}=$(realpath "$dirname") >> $GITHUB_ENV')
@@ -201,7 +220,7 @@ def get_download_link(self, key: str, version: str) -> str:
201220

202221
vars = {
203222
"major_version": major_version,
204-
"os":os,
223+
"os": os,
205224
"arch": arch,
206225
"arch_short": arch_short,
207226
"ext": extension,
@@ -261,6 +280,15 @@ def download_artifact(self) -> Artifact | None:
261280
return Artifact(pattern, os.path.normpath(artifacts[0].get("dir", ".")))
262281
return None
263282

283+
@staticmethod
284+
def safe_join(args: list[str]) -> str:
285+
safe_args = []
286+
for s in args:
287+
if s.startswith("$(") and s.endswith(")"):
288+
safe_args.append(s)
289+
else:
290+
safe_args.append(shlex.quote(s))
291+
return " ".join(safe_args)
264292

265293
@staticmethod
266294
def flatten_command(args: list[str | list[str]]) -> list[str]:
@@ -269,18 +297,19 @@ def flatten_command(args: list[str | list[str]]) -> list[str]:
269297
if isinstance(s, list):
270298
flattened_args.append(f"$( {shlex.join(s)} )")
271299
else:
272-
flattened_args.append(s)
300+
out = re.sub(r"\$\{([A-Z0-9_]+)\}", r"$\1", s).replace("'", "")
301+
flattened_args.append(out)
273302
return flattened_args
274303

275304
@cached_property
276305
def setup(self) -> str:
277306
cmds = [self.flatten_command(step) for step in self.job.get("setup", [])]
278-
return "\n".join(shlex.join(s) for s in cmds)
307+
return "\n".join(self.safe_join(s) for s in cmds)
279308

280309
@cached_property
281310
def run(self) -> str:
282311
cmds = [self.flatten_command(step) for step in self.job.get("run", [])]
283-
return "\n".join(shlex.join(s) for s in cmds)
312+
return "\n".join(self.safe_join(s) for s in cmds)
284313

285314
@cached_property
286315
def logs(self) -> str:
@@ -304,7 +333,7 @@ def to_dict(self):
304333
"require_artifact": [self.download_artifact.name, self.download_artifact.pattern] if self.download_artifact else None,
305334
"logs": self.logs.replace("../", "${{ env.PARENT_DIRECTORY }}/"),
306335
"env": self.env,
307-
"downloads_steps": " ".join(self.downloads),
336+
"downloads_steps": "\n".join(self.downloads),
308337
}
309338

310339
def __str__(self):

.github/workflows/ci-matrix-gen.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ jobs:
6868
matrix:
6969
include: ${{ fromJson(needs.generate-tier1.outputs.matrix) }}
7070
steps: &buildsteps
71+
- name: Process matrix downloads
72+
if: ${{ matrix.downloads_steps }}
73+
run: |
74+
${{ matrix.downloads_steps }}
7175
7276
- name: Setup env
7377
shell: bash
@@ -209,11 +213,6 @@ jobs:
209213
if: ${{ runner.os == 'Windows' }}
210214
uses: microsoft/setup-msbuild@v1.0.2
211215

212-
- name: Process matrix downloads
213-
if: ${{ matrix.downloads_steps }}
214-
run: |
215-
${{ matrix.downloads_steps }}
216-
217216
- name: Setup
218217
working-directory: main
219218
if: ${{ matrix.setup_steps }}

0 commit comments

Comments
 (0)