Skip to content

fix: pass process environ to Io backend, fixing AppDataDirUnavailable on Linux#98

Open
Revaycolizer wants to merge 1 commit intojustrach:mainfrom
Revaycolizer:fix/environ-inheritance
Open

fix: pass process environ to Io backend, fixing AppDataDirUnavailable on Linux#98
Revaycolizer wants to merge 1 commit intojustrach:mainfrom
Revaycolizer:fix/environ-inheritance

Conversation

@Revaycolizer
Copy link
Copy Markdown

Problem

mer dev, mer build, and mer update fail on Linux with:

error: unable to resolve zig cache directory: AppDataDirUnavailable

Root Cause

runtime.init() calls std.Io.Threaded.init(gpa, .{}) without passing the process environ. The default InitOptions.environ is .empty, so child processes get zero environment variables. Zig needs HOME to resolve its cache directory.

Fix

Accept environ as a parameter in runtime.init() and forward it to the Io backend. All callsites now pass init.environ from Init.Minimal.

Files changed (6 files):

  • src/runtime.zig and src/runtime_threaded.zig - accept environ param
  • cli.zig, src/main.zig, examples/ui-showcase/src/main.zig - pass init.environ
  • tools/codegen.zig - pass .empty (no child spawning needed)

runtime.init() was calling Threaded.init(gpa, .{}) without passing the
process environ. The default environ in InitOptions is .empty, so all
child processes spawned via std.process.run/spawn received zero
environment variables.

This caused 'mer dev', 'mer build', and 'mer update' to fail on Linux
with 'unable to resolve zig cache directory: AppDataDirUnavailable'
because the child zig process had no HOME variable.

Fix: accept environ as a parameter in runtime.init() and forward it to
the Io backend (Threaded or Evented). All callsites now pass
init.environ from the Init.Minimal entry point.

Fixes child process environment inheritance on all platforms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant