authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-04-20 11:32:11-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-04-20 16:38:05-07:00
logf887bea4d34da6e4dcfdf1eb18cca6afca3dc546
treefee4c27f9b7c2eec84303e0d4ac01ce7efec439d
parent5586a1f4eef7103398c595aed451157a07d15e27

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

2 files changed, 14 insertions(+), 4 deletions(-)

lib/std/zig.zig+1
......@@ -744,6 +744,7 @@ pub fn parseTargetQueryOrReportFatalError(
744744pub const EnvVar = enum {
745745 ZIG_GLOBAL_CACHE_DIR,
746746 ZIG_LOCAL_CACHE_DIR,
747 ZIG_LOCAL_PKG_DIR,
747748 ZIG_LIB_DIR,
748749 ZIG_LIBC,
749750 ZIG_BUILD_RUNNER,
src/main.zig+13-4
......@@ -4958,6 +4958,7 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
49584958 var override_lib_dir: ?[]const u8 = EnvVar.ZIG_LIB_DIR.get(environ_map);
49594959 var override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);
49604960 var override_local_cache_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_CACHE_DIR.get(environ_map);
4961 var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
49614962 var override_build_runner: ?[]const u8 = EnvVar.ZIG_BUILD_RUNNER.get(environ_map);
49624963 var child_argv: std.ArrayList([]const u8) = .empty;
49634964 var forks: std.ArrayList(Fork) = .empty;
......@@ -5048,6 +5049,11 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
50485049 i += 1;
50495050 override_local_cache_dir = args[i];
50505051 continue;
5052 } else if (mem.eql(u8, arg, "--pkg-dir")) {
5053 if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
5054 i += 1;
5055 override_pkg_dir = args[i];
5056 continue;
50515057 } else if (mem.eql(u8, arg, "--global-cache-dir")) {
50525058 if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
50535059 i += 1;
......@@ -5340,7 +5346,10 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8,
53405346 .http_client = &http_client,
53415347 .global_cache = dirs.global_cache,
53425348 .local_cache = .{ .root_dir = dirs.local_cache, .sub_path = "" },
5343 .root_pkg_path = .{ .root_dir = build_root.directory, .sub_path = "zig-pkg" },
5349 .root_pkg_path = if (override_pkg_dir) |cwd_rel_path| .initCwd(cwd_rel_path) else .{
5350 .root_dir = build_root.directory,
5351 .sub_path = "zig-pkg",
5352 },
53445353 .read_only = false,
53455354 .recursive = true,
53465355 .debug_hash = false,
......@@ -7053,7 +7062,7 @@ fn cmdFetch(
70537062 const color: Color = .auto;
70547063 var opt_path_or_url: ?[]const u8 = null;
70557064 var override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);
7056 var override_pkg_dir: ?[]const u8 = null;
7065 var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
70577066 var debug_hash: bool = false;
70587067 var save: union(enum) {
70597068 no,
......@@ -7136,9 +7145,9 @@ fn cmdFetch(
71367145 .http_client = &http_client,
71377146 .global_cache = global_cache_directory,
71387147 .local_cache = local_cache_path,
7139 .root_pkg_path = .{
7148 .root_pkg_path = if (override_pkg_dir) |cwd_rel_path| .initCwd(cwd_rel_path) else .{
71407149 .root_dir = build_root.directory,
7141 .sub_path = override_pkg_dir orelse "zig-pkg",
7150 .sub_path = "zig-pkg",
71427151 },
71437152 .recursive = false,
71447153 .read_only = false,