commit f887bea4d34da6e4dcfdf1eb18cca6afca3dc546 (tree)
parent 5586a1f4eef7103398c595aed451157a07d15e27
Author: Andrew Kelley <andrew@ziglang.org>
Date: Mon, 20 Apr 2026 11:32:11 -0700
fix overridden pkg dir path
the previous code made it relative to the build directory
also add a corresponding env var and logic for build command
Diffstat:
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/lib/std/zig.zig b/lib/std/zig.zig
@@ -744,6 +744,7 @@ pub fn parseTargetQueryOrReportFatalError(
pub const EnvVar = enum {
ZIG_GLOBAL_CACHE_DIR,
ZIG_LOCAL_CACHE_DIR,
+ ZIG_LOCAL_PKG_DIR,
ZIG_LIB_DIR,
ZIG_LIBC,
ZIG_BUILD_RUNNER,
diff --git a/src/main.zig b/src/main.zig
@@ -4958,6 +4958,7 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
var override_lib_dir: ?[]const u8 = EnvVar.ZIG_LIB_DIR.get(environ_map);
var override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);
var override_local_cache_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_CACHE_DIR.get(environ_map);
+ var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
var override_build_runner: ?[]const u8 = EnvVar.ZIG_BUILD_RUNNER.get(environ_map);
var child_argv: std.ArrayList([]const u8) = .empty;
var forks: std.ArrayList(Fork) = .empty;
@@ -5048,6 +5049,11 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
i += 1;
override_local_cache_dir = args[i];
continue;
+ } else if (mem.eql(u8, arg, "--pkg-dir")) {
+ if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
+ i += 1;
+ override_pkg_dir = args[i];
+ continue;
} else if (mem.eql(u8, arg, "--global-cache-dir")) {
if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
i += 1;
@@ -5340,7 +5346,10 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
.http_client = &http_client,
.global_cache = dirs.global_cache,
.local_cache = .{ .root_dir = dirs.local_cache, .sub_path = "" },
- .root_pkg_path = .{ .root_dir = build_root.directory, .sub_path = "zig-pkg" },
+ .root_pkg_path = if (override_pkg_dir) |cwd_rel_path| .initCwd(cwd_rel_path) else .{
+ .root_dir = build_root.directory,
+ .sub_path = "zig-pkg",
+ },
.read_only = false,
.recursive = true,
.debug_hash = false,
@@ -7053,7 +7062,7 @@ fn cmdFetch(
const color: Color = .auto;
var opt_path_or_url: ?[]const u8 = null;
var override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);
- var override_pkg_dir: ?[]const u8 = null;
+ var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
var debug_hash: bool = false;
var save: union(enum) {
no,
@@ -7136,9 +7145,9 @@ fn cmdFetch(
.http_client = &http_client,
.global_cache = global_cache_directory,
.local_cache = local_cache_path,
- .root_pkg_path = .{
+ .root_pkg_path = if (override_pkg_dir) |cwd_rel_path| .initCwd(cwd_rel_path) else .{
.root_dir = build_root.directory,
- .sub_path = override_pkg_dir orelse "zig-pkg",
+ .sub_path = "zig-pkg",
},
.recursive = false,
.read_only = false,