mame/quine-relay · error
$(1) interpreter not found!
Error message
$(1) interpreter not found!
What it means
The generated Makefile resolves its optional toolchains at parse time: find_any0 picks the first candidate found via which, and check expands to $(error ...) when the list yields nothing, aborting make immediately with '<group> interpreter not found!'. Four groups are resolved this way at lines 10-13: JAVASCRIPT (nodejs/node/js), SCHEME (guile/csi/gosh), GBS (gbs3/gbs2/gba3), and WASI_RUNTIME (wasmtime/node). Because $(error) fires during variable expansion, no target can run until every group has at least one interpreter on PATH (the Makefile prepends $(CURDIR)/vendor/local/bin and /usr/games, where Ubuntu's gambas gbs3 lives).
Source
Thrown at Makefile:7
MAKEFLAGS += --no-print-directory PATH := $(CURDIR)/vendor/local/bin:/usr/games:$(PATH) CLASSPATH := . find_any0 = $(firstword $(foreach x,$(1),$(if $(shell which $(x) 2>/dev/null),$(x),))) check = $(if $(2),$(2),$(error $(1) interpreter not found!)) find_any = $(call check,$(1),$(call find_any0,$(2))) JAVASCRIPT := $(call find_any,JavaScript,nodejs node js) SCHEME := $(call find_any,Scheme,guile csi gosh) GBS := $(call find_any,Gambas script,gbs3 gbs2 gba3) WASI_RUNTIME := $(call find_any,WASI runtime,wasmtime node) ifeq ($(SCHEME),csi) SCHEME := csi -s endif ifeq ($(WASI_RUNTIME),node) WASI_RUNTIME := node --experimental-wasi-unstable-preview1 vendor/wasi-runtime.js endif .DELETE_ON_ERROR: all: QR2.rb @echo
View on GitHub (pinned to c2aa5098d3)
Solutions
- Install the missing groups: sudo apt-get install -y nodejs guile-3.0 gambas3-scripter (nodejs alone satisfies both JAVASCRIPT and WASI_RUNTIME since node is a wasmtime fallback)
- Or run everything in the provided environment: build the repo Dockerfile, which installs all interpreters including wabt and gambas
- Verify before re-running: which nodejs; which guile; which gbs3; which wasmtime (remember /usr/games must be in PATH for gbs3)
- If you legitimately lack a group, edit the find_any lists in src/Makefile.gen.rb and regenerate instead of patching the generated Makefile
Example fix
# before $ make Makefile:7: *** WASI runtime interpreter not found!. Stop. # after $ sudo apt-get install -y nodejs guile-3.0 gambas3-scripter wasmtime $ make
Defensive patterns
Strategy: validation
Validate before calling
# Run before make for group in 'nodejs node js' 'guile csi gosh' 'gbs3 gbs2 gba3' 'wasmtime node'; do found=0; for x in $group; do command -v "$x" >/dev/null 2>&1 && found=1 && break; done [ "$found" = 1 ] || echo "missing interpreter group: $group" done
Prevention
- Install the interpreter groups up front: sudo apt-get install -y nodejs guile-3.0 gambas3-scripter (nodejs also covers WASI_RUNTIME)
- Keep /usr/games in PATH for gbs3, and build vendor/local/bin (the Makefile prepends it) for vendored runtimes
- For reproducible builds use the repo Dockerfile, which installs the full README dependency list including wabt
When it happens
Trigger: Running make (or make check/all) on a machine missing one of the four groups: no nodejs/node/js; no guile/csi/gosh; no gbs3/gbs2/gba3; neither wasmtime nor node. Also triggered when PATH is stripped (sudo/env -i make) so which finds nothing, or vendor/local/bin was never populated.
Common situations: Fresh CI containers or minimal Debian/Ubuntu images without the README's apt-get line (nodejs, guile-3.0, gambas3-scripter, wabt, etc.); macOS where only node exists but scheme/gambas are absent; PATH lacking /usr/games so gbs3 is invisible; wasmtime not packaged and node missing.
Related errors
AI-assisted analysis of mame/quine-relay@c2aa5098d3 (2026-08-21).
Data as JSON: /api/errors/f6c73aa44e1e7713.
Report an issue: GitHub.