From c857dc5af02f0ebec8cb648ae1d6a1bb3e966004 Mon Sep 17 00:00:00 2001 From: nimlgen <138685161+nimlgen@users.noreply.github.com> Date: Tue, 4 Nov 2025 22:51:53 +0800 Subject: [PATCH] autogen: try/except in try_dlopen (#13094) * autogen: try/except in try_dlopen * ugh --- autogen_stubs.sh | 6 ++++-- tinygrad/runtime/autogen/comgr.py | 4 +++- tinygrad/runtime/autogen/mesa.py | 4 +++- tinygrad/runtime/autogen/rocprof.py | 8 +++++--- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/autogen_stubs.sh b/autogen_stubs.sh index 04b0e0d6d6..4dde2064d5 100755 --- a/autogen_stubs.sh +++ b/autogen_stubs.sh @@ -31,7 +31,9 @@ $(for p in "$@"; do echo " $p,"; done) ] def _try_dlopen_$name(): library = ctypes.util.find_library("$name") - if library: return ctypes.CDLL(library) + if library: + try: return ctypes.CDLL(library) + except OSError: pass for candidate in PATHS_TO_TRY: try: return ctypes.CDLL(candidate) except OSError: pass @@ -436,7 +438,7 @@ generate_sqtt() { fixup $BASE/rocprof.py sed -i '1s/^/# pylint: skip-file\n/' $BASE/rocprof.py sed -i "s/import ctypes/import ctypes, ctypes.util/g" $BASE/rocprof.py - patch_dlopen $BASE/rocprof.py rocprof-trace-decoder "'/usr/local/lib/rocprof-trace-decoder.so'" "'/usr/local/lib/rocprof-trace-decoder.dylib'" + patch_dlopen $BASE/rocprof.py rocprof-trace-decoder "'/usr/local/lib/librocprof-trace-decoder.so'" "'/usr/local/lib/librocprof-trace-decoder.dylib'" sed -i "s/def _try_dlopen_rocprof-trace-decoder():/def _try_dlopen_rocprof_trace_decoder():/g" $BASE/rocprof.py sed -i "s|FunctionFactoryStub()|_try_dlopen_rocprof_trace_decoder()|g" $BASE/rocprof.py } diff --git a/tinygrad/runtime/autogen/comgr.py b/tinygrad/runtime/autogen/comgr.py index 3c4a51488d..55779420a8 100644 --- a/tinygrad/runtime/autogen/comgr.py +++ b/tinygrad/runtime/autogen/comgr.py @@ -15,7 +15,9 @@ PATHS_TO_TRY = [ ] def _try_dlopen_amd_comgr(): library = ctypes.util.find_library("amd_comgr") - if library: return ctypes.CDLL(library) + if library: + try: return ctypes.CDLL(library) + except OSError: pass for candidate in PATHS_TO_TRY: try: return ctypes.CDLL(candidate) except OSError: pass diff --git a/tinygrad/runtime/autogen/mesa.py b/tinygrad/runtime/autogen/mesa.py index 8d12d23643..b70da41940 100644 --- a/tinygrad/runtime/autogen/mesa.py +++ b/tinygrad/runtime/autogen/mesa.py @@ -15,7 +15,9 @@ PATHS_TO_TRY = [ ] def _try_dlopen_tinymesa_cpu(): library = ctypes.util.find_library("tinymesa_cpu") - if library: return ctypes.CDLL(library) + if library: + try: return ctypes.CDLL(library) + except OSError: pass for candidate in PATHS_TO_TRY: try: return ctypes.CDLL(candidate) except OSError: pass diff --git a/tinygrad/runtime/autogen/rocprof.py b/tinygrad/runtime/autogen/rocprof.py index 00ecf75dc7..91ad8ce817 100644 --- a/tinygrad/runtime/autogen/rocprof.py +++ b/tinygrad/runtime/autogen/rocprof.py @@ -9,12 +9,14 @@ # import ctypes, ctypes.util PATHS_TO_TRY = [ - '/usr/local/lib/rocprof-trace-decoder.so', - '/usr/local/lib/rocprof-trace-decoder.dylib', + '/usr/local/lib/librocprof-trace-decoder.so', + '/usr/local/lib/librocprof-trace-decoder.dylib', ] def _try_dlopen_rocprof_trace_decoder(): library = ctypes.util.find_library("rocprof-trace-decoder") - if library: return ctypes.CDLL(library) + if library: + try: return ctypes.CDLL(library) + except OSError: pass for candidate in PATHS_TO_TRY: try: return ctypes.CDLL(candidate) except OSError: pass