Skip to content

Commit 52bc2b0

Browse files
committed
Harden metallib discovery fallback
1 parent 4f2c28a commit 52bc2b0

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

.github/workflows/ci.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,11 @@ jobs:
218218
219219
spec = importlib.util.find_spec("mlx.backend.metal.kernels")
220220
if spec and spec.origin:
221-
candidate = pathlib.Path(spec.origin).resolve().parent
222-
if candidate.exists():
223-
kernels_dir = candidate
221+
candidate_origin = spec.origin
222+
if candidate_origin:
223+
candidate = pathlib.Path(candidate_origin).resolve().parent
224+
if candidate.exists():
225+
kernels_dir = candidate
224226
225227
if kernels_dir is None:
226228
try:
@@ -230,12 +232,21 @@ jobs:
230232
if resource is not None:
231233
try:
232234
with resources.as_file(resource) as extracted:
233-
extracted_path = pathlib.Path(extracted)
234-
if extracted_path.exists():
235-
kernels_dir = extracted_path
235+
if extracted is not None:
236+
extracted_path = pathlib.Path(extracted)
237+
if extracted_path.exists():
238+
kernels_dir = extracted_path
236239
except FileNotFoundError:
237240
pass
238241
242+
if kernels_dir is None:
243+
package_file = getattr(mlx, "__file__", None)
244+
if package_file:
245+
package_dir = pathlib.Path(package_file).resolve().parent
246+
candidate = package_dir / "backend" / "metal" / "kernels"
247+
if candidate.exists():
248+
kernels_dir = candidate
249+
239250
if kernels_dir is None or not kernels_dir.exists():
240251
print("::error::Could not locate the MLX metal kernels directory; checked module spec and importlib resources.")
241252
sys.exit(1)

0 commit comments

Comments
 (0)