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

  1. 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)
  2. Or run everything in the provided environment: build the repo Dockerfile, which installs all interpreters including wabt and gambas
  3. Verify before re-running: which nodejs; which guile; which gbs3; which wasmtime (remember /usr/games must be in PATH for gbs3)
  4. 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

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.