The GitHub Actions job "Required Checks" on texera.git/feat/local-dev-toolchain-install has failed. Run started by GitHub user Yicong-Huang (triggered by Yicong-Huang).
Head commit for run: 78e091faeb1a51e0b5e196469a22e27bf7e27427 / Yicong Huang <[email protected]> feat(local-dev): pick a usable Python and offer to install a missing toolchain Two halves of the same fresh-machine problem. **The interpreter that runs Python UDFs was picked blindly.** `UDF_PYTHON_PATH` defaulted to `command -v python3` at source time — the system interpreter, which almost never has `amber/requirements.txt` installed. Python UDFs then failed at worker launch on a stack of import errors that pointed nowhere near the interpreter choice, and the venv AGENTS.md tells contributors to create (`<workspace>/venv312`) was ignored, as was an already-activated `$VIRTUAL_ENV`. Now resolved lazily, taking the first candidate that is Python 3.12 *and* can import the worker's deps: $UDF_PYTHON_PATH -> $VIRTUAL_ENV -> <workspace>/venv312 -> pyenv 3.12 -> python3.12 on PATH -> python3 on PATH The chosen interpreter is reported the way the JDK probe reports JAVA_HOME. An explicit `UDF_PYTHON_PATH` still wins — it's the documented override — but now says so when it can't import what a worker needs. "No 3.12 anywhere" and "3.12 without amber's deps" are reported differently, because they need different fixes and the old default silently produced the second one. Resolution is lazy so `status` / `logs` / `--help` don't spawn an interpreter per candidate, and never fatal: the JVM services run fine without a Python toolchain. **A missing tool was described, never offered.** `_install_hint` printed a suggestion and gave up, so a fresh machine meant hand-installing several things and re-running `up` after each one to find the next gap. A missing JDK 17, Node or Python 3.12 is now offered for install after showing the exact command: the distro package manager for the JDK (SDKMAN when there is none), nvm for Node, pyenv for Python — both bootstrapping themselves if absent. The decision helpers (`_pkg_manager`, `_install_cmd_for`) only ever print what would run; a separate step executes it. That keeps the choice unit-testable without installing anything, and means the user is shown the command — `sudo` included — before being asked. Deliberately unchanged for non-interactive callers: without a TTY nothing is ever prompted and the old print-a-hint-and-fail behaviour stands, so scripted and CI runs can't hang on a read. `--install-missing` answers yes without asking, `--no-install` only ever prints; the contradiction is refused rather than silently resolved. docker and sbt stay hint-only — docker needs a daemon, group membership and a re-login, which isn't something to do behind a y/n prompt. Closes #7066 Report URL: https://github.com/apache/texera/actions/runs/30497240338 With regards, GitHub Actions via GitBox
