| author | |
| committer | |
| log | 6220c754cf3387aebbcba270789ec67e652398cb |
| tree | de071d2dc7ecde7a1615d52a839fa01b198b6a8c |
| parent | c533233f4211f353ca532da48132ee4069ba2841 |
Closes #15373.3 files changed, 43 insertions(+), 0 deletions(-)
lib/std/Build.zig+4| ... | ... | @@ -1058,6 +1058,10 @@ pub fn addRemoveDirTree(b: *Build, dir_path: []const u8) *Step.RemoveDir { |
| 1058 | 1058 | return Step.RemoveDir.create(b, dir_path); |
| 1059 | 1059 | } |
| 1060 | 1060 | |
| 1061 | pub fn addFail(b: *Build, error_msg: []const u8) *Step.Fail { | |
| 1062 | return Step.Fail.create(b, error_msg); | |
| 1063 | } | |
| 1064 | ||
| 1061 | 1065 | pub fn addFmt(b: *Build, options: Step.Fmt.Options) *Step.Fmt { |
| 1062 | 1066 | return Step.Fmt.create(b, options); |
| 1063 | 1067 | } |
lib/std/Build/Step.zig+4| ... | ... | @@ -83,6 +83,7 @@ pub const Id = enum { |
| 83 | 83 | install_file, |
| 84 | 84 | install_dir, |
| 85 | 85 | remove_dir, |
| 86 | fail, | |
| 86 | 87 | fmt, |
| 87 | 88 | translate_c, |
| 88 | 89 | write_file, |
| ... | ... | @@ -102,6 +103,7 @@ pub const Id = enum { |
| 102 | 103 | .install_file => InstallFile, |
| 103 | 104 | .install_dir => InstallDir, |
| 104 | 105 | .remove_dir => RemoveDir, |
| 106 | .fail => Fail, | |
| 105 | 107 | .fmt => Fmt, |
| 106 | 108 | .translate_c => TranslateC, |
| 107 | 109 | .write_file => WriteFile, |
| ... | ... | @@ -119,6 +121,7 @@ pub const Id = enum { |
| 119 | 121 | pub const CheckFile = @import("Step/CheckFile.zig"); |
| 120 | 122 | pub const CheckObject = @import("Step/CheckObject.zig"); |
| 121 | 123 | pub const ConfigHeader = @import("Step/ConfigHeader.zig"); |
| 124 | pub const Fail = @import("Step/Fail.zig"); | |
| 122 | 125 | pub const Fmt = @import("Step/Fmt.zig"); |
| 123 | 126 | pub const InstallArtifact = @import("Step/InstallArtifact.zig"); |
| 124 | 127 | pub const InstallDir = @import("Step/InstallDir.zig"); |
| ... | ... | @@ -551,6 +554,7 @@ pub fn writeManifest(s: *Step, man: *std.Build.Cache.Manifest) !void { |
| 551 | 554 | test { |
| 552 | 555 | _ = CheckFile; |
| 553 | 556 | _ = CheckObject; |
| 557 | _ = Fail; | |
| 554 | 558 | _ = Fmt; |
| 555 | 559 | _ = InstallArtifact; |
| 556 | 560 | _ = InstallDir; |
lib/std/Build/Step/Fail.zig created+35| ... | ... | @@ -0,0 +1,35 @@ |
| 1 | //! Fail the build with a given message. | |
| 2 | const std = @import("std"); | |
| 3 | const Step = std.Build.Step; | |
| 4 | const Fail = @This(); | |
| 5 | ||
| 6 | step: Step, | |
| 7 | error_msg: []const u8, | |
| 8 | ||
| 9 | pub const base_id: Step.Id = .fail; | |
| 10 | ||
| 11 | pub fn create(owner: *std.Build, error_msg: []const u8) *Fail { | |
| 12 | const fail = owner.allocator.create(Fail) catch @panic("OOM"); | |
| 13 | ||
| 14 | fail.* = .{ | |
| 15 | .step = Step.init(.{ | |
| 16 | .id = base_id, | |
| 17 | .name = "fail", | |
| 18 | .owner = owner, | |
| 19 | .makeFn = make, | |
| 20 | }), | |
| 21 | .error_msg = owner.dupe(error_msg), | |
| 22 | }; | |
| 23 | ||
| 24 | return fail; | |
| 25 | } | |
| 26 | ||
| 27 | fn make(step: *Step, prog_node: std.Progress.Node) !void { | |
| 28 | _ = prog_node; // No progress to report. | |
| 29 | ||
| 30 | const fail: *Fail = @fieldParentPtr("step", step); | |
| 31 | ||
| 32 | try step.result_error_msgs.append(step.owner.allocator, fail.error_msg); | |
| 33 | ||
| 34 | return error.MakeFailed; | |
| 35 | } |