diff --git a/npm_install.py b/npm_install.py index 1459f23..272e6ea 100644 --- a/npm_install.py +++ b/npm_install.py @@ -1991,10 +1991,19 @@ def _build_frontend(src_frontend: Path, dest_frontend: Path): # Check yarn in PATH yarn_bin = shutil.which("yarn") if yarn_bin: - result = subprocess.run([yarn_bin, "--version"], capture_output=True, text=True, timeout=5) - if DEBUG: - print(f" debug pick: yarn_bin={yarn_bin}, version={result.stdout.strip()}, major={_get_yarn_major_version(['yarn'])}") - major = _get_yarn_major_version(["yarn"]) + try: + result = subprocess.run([yarn_bin, "--version"], capture_output=True, text=True, timeout=3) + if DEBUG: + print(f" debug pick: yarn_bin={yarn_bin}, version={result.stdout.strip()}") + major = _get_yarn_major_version(["yarn"]) + except (subprocess.TimeoutExpired, Exception): + if DEBUG: + print(f" debug pick: yarn_bin={yarn_bin} HANGS, removing...") + try: + subprocess.run(["rm", "-f", yarn_bin], check=False) + major = None + except Exception: + major = None if major and major >= 4: return ["yarn"] elif major: