aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-12-08 16:13:51 -0800
committerAndrew Kelley <andrew@ziglang.org>2025-12-23 22:15:08 -0800
commit9ccd68de0b79c3723bd11071fd836bc24ff25b33 (patch)
tree3441f2a7030f40a6b625f4ff9fc7d719a60a32d3 /lib/std/Build
parent7f5bb118d4d90e2b883ee66e17592ac8d7808ac8 (diff)
downloadzig-9ccd68de0b79c3723bd11071fd836bc24ff25b33.tar.gz
zig-9ccd68de0b79c3723bd11071fd836bc24ff25b33.zip
std: move abort and exit from posix into process
and delete the unit tests that called fork() no forking allowed in the std lib, including unit tests, except to implement child process spawning.
Diffstat (limited to 'lib/std/Build')
-rw-r--r--lib/std/Build/Cache/Path.zig4
-rw-r--r--lib/std/Build/Step/ConfigHeader.zig3
-rw-r--r--lib/std/Build/Step/ObjCopy.zig3
-rw-r--r--lib/std/Build/Step/Run.zig7
-rw-r--r--lib/std/Build/Step/UpdateSourceFiles.zig2
-rw-r--r--lib/std/Build/Step/WriteFile.zig6
6 files changed, 14 insertions, 11 deletions
diff --git a/lib/std/Build/Cache/Path.zig b/lib/std/Build/Cache/Path.zig
index 93e0c0d792..941948a9cd 100644
--- a/lib/std/Build/Cache/Path.zig
+++ b/lib/std/Build/Cache/Path.zig
@@ -128,14 +128,14 @@ pub fn access(p: Path, sub_path: []const u8, flags: Io.Dir.AccessOptions) !void
return p.root_dir.handle.access(joined_path, flags);
}
-pub fn makePath(p: Path, sub_path: []const u8) !void {
+pub fn makePath(p: Path, io: Io, sub_path: []const u8) !void {
var buf: [fs.max_path_bytes]u8 = undefined;
const joined_path = if (p.sub_path.len == 0) sub_path else p: {
break :p std.fmt.bufPrint(&buf, "{s}" ++ fs.path.sep_str ++ "{s}", .{
p.sub_path, sub_path,
}) catch return error.NameTooLong;
};
- return p.root_dir.handle.makePath(joined_path);
+ return p.root_dir.handle.makePath(io, joined_path);
}
pub fn toString(p: Path, allocator: Allocator) Allocator.Error![]u8 {
diff --git a/lib/std/Build/Step/ConfigHeader.zig b/lib/std/Build/Step/ConfigHeader.zig
index ea7d9d99ff..f377959610 100644
--- a/lib/std/Build/Step/ConfigHeader.zig
+++ b/lib/std/Build/Step/ConfigHeader.zig
@@ -184,6 +184,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
const gpa = b.allocator;
const arena = b.allocator;
+ const io = b.graph.io;
var man = b.graph.cache.obtain();
defer man.deinit();
@@ -257,7 +258,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
const sub_path = b.pathJoin(&.{ "o", &digest, config_header.include_path });
const sub_path_dirname = std.fs.path.dirname(sub_path).?;
- b.cache_root.handle.makePath(sub_path_dirname) catch |err| {
+ b.cache_root.handle.makePath(io, sub_path_dirname) catch |err| {
return step.fail("unable to make path '{f}{s}': {s}", .{
b.cache_root, sub_path_dirname, @errorName(err),
});
diff --git a/lib/std/Build/Step/ObjCopy.zig b/lib/std/Build/Step/ObjCopy.zig
index 4aa1c0a9dc..b81f59b9a1 100644
--- a/lib/std/Build/Step/ObjCopy.zig
+++ b/lib/std/Build/Step/ObjCopy.zig
@@ -143,6 +143,7 @@ pub fn getOutputSeparatedDebug(objcopy: *const ObjCopy) ?std.Build.LazyPath {
fn make(step: *Step, options: Step.MakeOptions) !void {
const prog_node = options.progress_node;
const b = step.owner;
+ const io = b.graph.io;
const objcopy: *ObjCopy = @fieldParentPtr("step", step);
try step.singleUnchangingWatchInput(objcopy.input_file);
@@ -176,7 +177,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
const cache_path = "o" ++ fs.path.sep_str ++ digest;
const full_dest_path = try b.cache_root.join(b.allocator, &.{ cache_path, objcopy.basename });
const full_dest_path_debug = try b.cache_root.join(b.allocator, &.{ cache_path, b.fmt("{s}.debug", .{objcopy.basename}) });
- b.cache_root.handle.makePath(cache_path) catch |err| {
+ b.cache_root.handle.makePath(io, cache_path) catch |err| {
return step.fail("unable to make path {s}: {s}", .{ cache_path, @errorName(err) });
};
diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig
index af6bc20438..54e77bd614 100644
--- a/lib/std/Build/Step/Run.zig
+++ b/lib/std/Build/Step/Run.zig
@@ -973,7 +973,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
.output_directory => output_sub_path,
else => unreachable,
};
- b.cache_root.handle.makePath(output_sub_dir_path) catch |err| {
+ b.cache_root.handle.makePath(io, output_sub_dir_path) catch |err| {
return step.fail("unable to make path '{f}{s}': {s}", .{
b.cache_root, output_sub_dir_path, @errorName(err),
});
@@ -1005,7 +1005,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
.output_directory => output_sub_path,
else => unreachable,
};
- b.cache_root.handle.makePath(output_sub_dir_path) catch |err| {
+ b.cache_root.handle.makePath(io, output_sub_dir_path) catch |err| {
return step.fail("unable to make path '{f}{s}': {s}", .{
b.cache_root, output_sub_dir_path, @errorName(err),
});
@@ -1241,6 +1241,7 @@ fn runCommand(
const b = step.owner;
const arena = b.allocator;
const gpa = options.gpa;
+ const io = b.graph.io;
const cwd: ?[]const u8 = if (run.cwd) |lazy_cwd| lazy_cwd.getPath2(b, step) else null;
@@ -1470,7 +1471,7 @@ fn runCommand(
const sub_path = b.pathJoin(&output_components);
const sub_path_dirname = fs.path.dirname(sub_path).?;
- b.cache_root.handle.makePath(sub_path_dirname) catch |err| {
+ b.cache_root.handle.makePath(io, sub_path_dirname) catch |err| {
return step.fail("unable to make path '{f}{s}': {s}", .{
b.cache_root, sub_path_dirname, @errorName(err),
});
diff --git a/lib/std/Build/Step/UpdateSourceFiles.zig b/lib/std/Build/Step/UpdateSourceFiles.zig
index f5d95182e9..44c6ae1ed4 100644
--- a/lib/std/Build/Step/UpdateSourceFiles.zig
+++ b/lib/std/Build/Step/UpdateSourceFiles.zig
@@ -78,7 +78,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
var any_miss = false;
for (usf.output_source_files.items) |output_source_file| {
if (fs.path.dirname(output_source_file.sub_path)) |dirname| {
- b.build_root.handle.makePath(dirname) catch |err| {
+ b.build_root.handle.makePath(io, dirname) catch |err| {
return step.fail("unable to make path '{f}{s}': {t}", .{ b.build_root, dirname, err });
};
}
diff --git a/lib/std/Build/Step/WriteFile.zig b/lib/std/Build/Step/WriteFile.zig
index 85dc9b3fa2..21346959e7 100644
--- a/lib/std/Build/Step/WriteFile.zig
+++ b/lib/std/Build/Step/WriteFile.zig
@@ -268,7 +268,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
for (write_file.files.items) |file| {
if (fs.path.dirname(file.sub_path)) |dirname| {
- cache_dir.makePath(dirname) catch |err| {
+ cache_dir.makePath(io, dirname) catch |err| {
return step.fail("unable to make path '{f}{s}{c}{s}': {t}", .{
b.cache_root, cache_path, fs.path.sep, dirname, err,
});
@@ -303,7 +303,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
const dest_dirname = dir.sub_path;
if (dest_dirname.len != 0) {
- cache_dir.makePath(dest_dirname) catch |err| {
+ cache_dir.makePath(io, dest_dirname) catch |err| {
return step.fail("unable to make path '{f}{s}{c}{s}': {s}", .{
b.cache_root, cache_path, fs.path.sep, dest_dirname, @errorName(err),
});
@@ -318,7 +318,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
const src_entry_path = try src_dir_path.join(arena, entry.path);
const dest_path = b.pathJoin(&.{ dest_dirname, entry.path });
switch (entry.kind) {
- .directory => try cache_dir.makePath(dest_path),
+ .directory => try cache_dir.makePath(io, dest_path),
.file => {
const prev_status = Io.Dir.updateFile(
src_entry_path.root_dir.handle,