mame/quine-relay · error
$(1) interpreter not found!
Error message
$(1) interpreter not found!
What it means
src/Makefile.gen.rb is the generator that emits the root Makefile (File.write('../Makefile', ...) at line 80), and line 21 is the heredoc template of the check macro whose $(error $(1) interpreter not found!) aborts make when find_any finds none of the candidate interpreters for JAVASCRIPT (nodejs node js), SCHEME (guile csi gosh), GBS (gbs3 gbs2 gba3), or WASI_RUNTIME (wasmtime node). The error itself manifests at Makefile:7 of the generated file whenever the environment lacks a whole group; pointing at this line means the fix belongs in the generator, not in the generated Makefile (the two must stay in sync, and the Makefile is checksum-tracked via SHA256SUMS).
Source
Thrown at src/Makefile.gen.rb:21
OUT = []
def banner(s1, s2=nil, i=nil)
s = "## #{ "#{ i + 1 }: " if i }#{ s1 }#{ ' -> ' + s2 if s2 } ##"
OUT << "\t@echo"
OUT << "\t@echo \"#{ "#" * s.size }\""
OUT << "\t@echo \"#{ s }\""
OUT << "\t@echo \"#{ "#" * s.size }\""
OUT << "\t@echo"
end
OUT << <<-END
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:
END
OUT << "all: QR2.rb"
banner("CHECK")View on GitHub (pinned to c2aa5098d3)
Solutions
- First confirm the environment actually has the tools: which nodejs node guile csi gosh gbs3 gbs2 gba3 wasmtime; install what is missing (apt-get install nodejs guile-3.0 gambas3-scripter wasmtime)
- To support another runtime, edit the candidate list in this heredoc (e.g. WASI runtime,wasmtime wasmer node) and regenerate with cd src && rake ../Makefile so Makefile and generator stay consistent
- Use the repo Dockerfile for a known-good toolchain instead of hand-satisfying every group
- Do not hand-edit the generated Makefile: the next rake run will overwrite it and SHA256SUMS will mismatch
Example fix
# before (src/Makefile.gen.rb heredoc) WASI_RUNTIME := $(call find_any,WASI runtime,wasmtime node) # after -- widen the candidates, then regenerate (cd src && rake ../Makefile) WASI_RUNTIME := $(call find_any,WASI runtime,wasmtime wasmer node)
Defensive patterns
Strategy: validation
Validate before calling
# Before regenerating or running make, confirm each find_any group resolves
%w[nodejs node js guile csi gosh gbs3 gbs2 gba3 wasmtime].each do |x|
puts "#{x}: #{`which #{x} 2>/dev/null`.empty? ? 'MISSING' : 'ok'}"
end Prevention
- Fix the environment first (install interpreters); only edit src/Makefile.gen.rb to add new candidate runtimes
- After editing the generator, regenerate via cd src && rake ../Makefile so the root Makefile and its generator stay in sync
- Never hand-edit the generated Makefile: rake overwrites it and SHA256SUMS will mismatch; run make check after regeneration
When it happens
Trigger: Running make on a freshly generated Makefile in an environment missing every candidate of a group (no node/js, no guile/csi/gosh, no gbs3/gbs2/gba3, no wasmtime/node); regenerating the Makefile (cd src && rake ../Makefile) after editing the candidate lists without installing the tools; CI images missing /usr/games (gbs3) or vendor/local/bin.
Common situations: Maintainers adding a language stage that needs a new runtime and forgetting to extend the candidate lists; environments where an interpreter exists under a different name (deno instead of node, wasmer instead of wasmtime) and nobody added it to the lists; portable builds where gambas is not packaged.
Related errors
AI-assisted analysis of mame/quine-relay@c2aa5098d3 (2026-08-21).
Data as JSON: /api/errors/dc4ccc53d5500705.
Report an issue: GitHub.