MCPcopy Create free account
hub / github.com/FastLED/FastLED / _resolve_tools

Method _resolve_tools

ci/util/crash_trace_decoder.py:174–230  ·  view source on GitHub ↗

Lazily find the ELF and addr2line paths.

(self)

Source from the content-addressed store, hash-verified

172 # ------------------------------------------------------------------
173
174 def _resolve_tools(self) -> None:
175 """Lazily find the ELF and addr2line paths."""
176 if self._resolved:
177 return
178 self._resolved = True
179
180 # --- ELF ---
181 if self._use_fbuild:
182 elf_candidates = [
183 self._build_dir
184 / ".fbuild"
185 / "build"
186 / self._environment
187 / "firmware.elf",
188 ]
189 else:
190 elf_candidates = [
191 self._build_dir
192 / ".fbuild"
193 / "build"
194 / self._environment
195 / "firmware.elf",
196 self._build_dir / ".pio" / "build" / self._environment / "firmware.elf",
197 ]
198
199 for p in elf_candidates:
200 if p.exists():
201 self._elf_path = p
202 break
203
204 if not self._elf_path:
205 print(
206 f"[CrashTraceDecoder] Warning: firmware.elf not found for '{self._environment}'",
207 file=sys.stderr,
208 )
209
210 # --- addr2line ---
211 # Try build_info.json first (fbuild).
212 build_info_path = (
213 self._build_dir
214 / ".fbuild"
215 / "build"
216 / self._environment
217 / "build_info.json"
218 )
219 if build_info_path.exists():
220 self._addr2line = find_addr2line_from_build_info(build_info_path)
221
222 # Fall back to PlatformIO toolchain search.
223 if not self._addr2line:
224 self._addr2line = find_addr2line()
225
226 if not self._addr2line:
227 print(
228 "[CrashTraceDecoder] Warning: addr2line not found; crash traces will not be decoded",
229 file=sys.stderr,
230 )
231

Callers 1

_decodeMethod · 0.95

Calls 3

find_addr2lineFunction · 0.90
printFunction · 0.50

Tested by

no test coverage detected