Просмотр исходного кода

build: enable full parallelism when -Dhealed is set

The eowyn.sh script is used in a github workflow, but after
commit 0d56ba3 (build: restore the exercise chain), the github action
will take more time to complete.

Enable full build parallelism, when -Dhealed is true and -Dn is null.
Use the standard CompileStep and RunStep, instead of ZiglingStep.

On my PC, this change reduces the build time by about 30%.
Manlio Perillo 2 лет назад
Родитель
Сommit
1cf910fb51
1 измененных файлов с 23 добавлено и 1 удалено
  1. 23 1
      build.zig

+ 23 - 1
build.zig

@@ -594,6 +594,28 @@ pub fn build(b: *Build) !void {
         start_step.dependOn(&prev_step.step);
 
         return;
+    } else if (use_healed) {
+        const test_step = b.step("test", "Test the healed exercises");
+        b.default_step = test_step;
+
+        for (exercises) |ex| {
+            const base_name = ex.baseName();
+            const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
+                "patches/healed", ex.main_file,
+            }) catch unreachable;
+
+            const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });
+            if (ex.C) {
+                build_step.linkLibC();
+            }
+            build_step.install();
+
+            const run_step = build_step.run();
+
+            test_step.dependOn(&run_step.step);
+        }
+
+        return;
     }
 
     const ziglings_step = b.step("ziglings", "Check all ziglings");
@@ -604,7 +626,7 @@ pub fn build(b: *Build) !void {
     for (exercises, 0..) |ex, i| {
         const base_name = ex.baseName();
         const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
-            if (use_healed) "patches/healed" else "exercises", ex.main_file,
+            "exercises", ex.main_file,
         }) catch unreachable;
 
         const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });