mirror of
https://codeberg.org/ziglings/exercises.git
synced 2024-12-26 01:20:30 +00:00
workaround for parallel processing of the build steps
This commit is contained in:
parent
78e856f602
commit
3b85c24694
2 changed files with 38 additions and 36 deletions
16
README.md
16
README.md
|
@ -42,7 +42,7 @@ Verify the installation and build number of `zig` like so:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ zig version
|
$ zig version
|
||||||
0.11.0-dev.1844+xxxxxxxxx
|
0.11.0-dev.2157+xxxxxxxxx
|
||||||
```
|
```
|
||||||
|
|
||||||
Clone this repository with Git:
|
Clone this repository with Git:
|
||||||
|
@ -52,11 +52,18 @@ $ git clone https://github.com/ratfactor/ziglings
|
||||||
$ cd ziglings
|
$ cd ziglings
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run `zig build` and follow the instructions to begin!
|
Then run `zig build 1` and follow the instructions to begin!
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ zig build
|
$ zig build 1
|
||||||
```
|
```
|
||||||
|
## Note
|
||||||
|
Due to Zig's new build system, exercises can currently only be run manually with their number!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ zig build xy
|
||||||
|
```
|
||||||
|
We hope to be able to offer this again soon in the automatic way.
|
||||||
|
|
||||||
## A Note About Versions
|
## A Note About Versions
|
||||||
|
|
||||||
|
@ -82,7 +89,8 @@ about input:
|
||||||
|
|
||||||
### Version Changes
|
### Version Changes
|
||||||
|
|
||||||
Version-0.11.0-dev.1844+xxxxxxxxx
|
Version-0.11.0-dev.2157+xxxxxxxxx
|
||||||
|
* *2023-02-21* zig 0.11.0-dev.2157 - changes in `build system` - new: parallel processing of the build steps
|
||||||
* *2023-02-21* zig 0.11.0-dev.1711 - changes in `for loops` - new: Multi-Object For-Loops + Struct-of-Arrays
|
* *2023-02-21* zig 0.11.0-dev.1711 - changes in `for loops` - new: Multi-Object For-Loops + Struct-of-Arrays
|
||||||
* *2023-02-12* zig 0.11.0-dev.1638 - changes in `std.Build` cache_root now returns a directory struct
|
* *2023-02-12* zig 0.11.0-dev.1638 - changes in `std.Build` cache_root now returns a directory struct
|
||||||
* *2023-02-04* zig 0.11.0-dev.1568 - changes in `std.Build` (combine `std.build` and `std.build.Builder` into `std.Build`)
|
* *2023-02-04* zig 0.11.0-dev.1568 - changes in `std.Build` (combine `std.build` and `std.build.Builder` into `std.Build`)
|
||||||
|
|
58
build.zig
58
build.zig
|
@ -571,7 +571,7 @@ pub fn build(b: *Builder) !void {
|
||||||
\\
|
\\
|
||||||
\\
|
\\
|
||||||
;
|
;
|
||||||
const header_step = b.step("header", logo);
|
const header_step = b.step("info", logo);
|
||||||
print("{s}\n", .{logo});
|
print("{s}\n", .{logo});
|
||||||
|
|
||||||
const verify_all = b.step("ziglings", "Check all ziglings");
|
const verify_all = b.step("ziglings", "Check all ziglings");
|
||||||
|
@ -582,45 +582,40 @@ pub fn build(b: *Builder) !void {
|
||||||
|
|
||||||
const use_healed = b.option(bool, "healed", "Run exercises from patches/healed") orelse false;
|
const use_healed = b.option(bool, "healed", "Run exercises from patches/healed") orelse false;
|
||||||
|
|
||||||
// for (exercises) |ex| {
|
for (exercises) |ex| {
|
||||||
const ex = exercises[0];
|
const base_name = ex.baseName();
|
||||||
const base_name = ex.baseName();
|
const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
|
||||||
const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
|
if (use_healed) "patches/healed" else "exercises", ex.main_file,
|
||||||
if (use_healed) "patches/healed" else "exercises", ex.main_file,
|
}) catch unreachable;
|
||||||
}) catch unreachable;
|
const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });
|
||||||
const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });
|
|
||||||
|
|
||||||
build_step.install();
|
build_step.install();
|
||||||
// std.time.sleep(1000000);
|
|
||||||
|
|
||||||
const verify_step = ZiglingStep.create(b, ex, use_healed);
|
const verify_step = ZiglingStep.create(b, ex, use_healed);
|
||||||
|
|
||||||
const key = ex.key();
|
const key = ex.key();
|
||||||
|
|
||||||
const named_test = b.step(b.fmt("{s}_test", .{key}), b.fmt("Run {s} without checking output", .{ex.main_file}));
|
const named_test = b.step(b.fmt("{s}_test", .{key}), b.fmt("Run {s} without checking output", .{ex.main_file}));
|
||||||
const run_step = build_step.run();
|
const run_step = build_step.run();
|
||||||
named_test.dependOn(&run_step.step);
|
named_test.dependOn(&run_step.step);
|
||||||
|
|
||||||
const named_install = b.step(b.fmt("{s}_install", .{key}), b.fmt("Install {s} to zig-cache/bin", .{ex.main_file}));
|
const named_install = b.step(b.fmt("{s}_install", .{key}), b.fmt("Install {s} to zig-cache/bin", .{ex.main_file}));
|
||||||
named_install.dependOn(&build_step.install_step.?.step);
|
named_install.dependOn(&build_step.install_step.?.step);
|
||||||
|
|
||||||
const named_verify = b.step(key, b.fmt("Check {s} only", .{ex.main_file}));
|
const named_verify = b.step(key, b.fmt("Check {s} only", .{ex.main_file}));
|
||||||
named_verify.dependOn(&verify_step.step);
|
named_verify.dependOn(&verify_step.step);
|
||||||
|
|
||||||
const chain_verify = b.allocator.create(Step) catch unreachable;
|
const chain_verify = b.allocator.create(Step) catch unreachable;
|
||||||
chain_verify.* = Step.init(Step.Options{ .id = .custom, .name = b.fmt("chain {s}", .{key}), .owner = b });
|
chain_verify.* = Step.init(Step.Options{ .id = .custom, .name = b.fmt("chain {s}", .{key}), .owner = b });
|
||||||
chain_verify.dependOn(&verify_step.step);
|
chain_verify.dependOn(&verify_step.step);
|
||||||
|
|
||||||
const named_chain = b.step(b.fmt("{s}_start", .{key}), b.fmt("Check all solutions starting at {s}", .{ex.main_file}));
|
const named_chain = b.step(b.fmt("{s}_start", .{key}), b.fmt("Check all solutions starting at {s}", .{ex.main_file}));
|
||||||
named_chain.dependOn(header_step);
|
named_chain.dependOn(header_step);
|
||||||
named_chain.dependOn(chain_verify);
|
named_chain.dependOn(chain_verify);
|
||||||
|
|
||||||
prev_chain_verify.dependOn(chain_verify);
|
prev_chain_verify.dependOn(chain_verify);
|
||||||
prev_chain_verify = chain_verify;
|
prev_chain_verify = chain_verify;
|
||||||
// std.os.exit(0);
|
}
|
||||||
// while (true) {}
|
|
||||||
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var use_color_escapes = false;
|
var use_color_escapes = false;
|
||||||
|
@ -638,7 +633,6 @@ const ZiglingStep = struct {
|
||||||
pub fn create(builder: *Builder, exercise: Exercise, use_healed: bool) *@This() {
|
pub fn create(builder: *Builder, exercise: Exercise, use_healed: bool) *@This() {
|
||||||
const self = builder.allocator.create(@This()) catch unreachable;
|
const self = builder.allocator.create(@This()) catch unreachable;
|
||||||
self.* = .{
|
self.* = .{
|
||||||
// .step = Step.init(.custom, exercise.main_file, builder.allocator, make),
|
|
||||||
.step = Step.init(Step.Options{ .id = .custom, .name = exercise.main_file, .owner = builder, .makeFn = make }),
|
.step = Step.init(Step.Options{ .id = .custom, .name = exercise.main_file, .owner = builder, .makeFn = make }),
|
||||||
.exercise = exercise,
|
.exercise = exercise,
|
||||||
.builder = builder,
|
.builder = builder,
|
||||||
|
|
Loading…
Reference in a new issue