Merge pull request #203 from chrboesch/new_build

workaround for new build system
This commit is contained in:
Chris Boesch 2023-03-19 18:28:47 +01:00 committed by GitHub
commit 2ba268a0b0
2 changed files with 42 additions and 42 deletions

View file

@ -40,7 +40,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:
@ -50,11 +50,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
@ -80,7 +87,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`)

View file

@ -8,7 +8,7 @@ const print = std.debug.print;
// When changing this version, be sure to also update README.md in two places: // When changing this version, be sure to also update README.md in two places:
// 1) Getting Started // 1) Getting Started
// 2) Version Changes // 2) Version Changes
const needed_version = std.SemanticVersion.parse("0.11.0-dev.1844") catch unreachable; const needed_version = std.SemanticVersion.parse("0.11.0-dev.2157") catch unreachable;
const Exercise = struct { const Exercise = struct {
/// main_file must have the format key_name.zig. /// main_file must have the format key_name.zig.
@ -505,7 +505,7 @@ fn checkVersion() bool {
return order != .lt; return order != .lt;
} }
pub fn build(b: *Builder) void { pub fn build(b: *Builder) !void {
// Use a comptime branch for the version check. // Use a comptime branch for the version check.
// If this fails, code after this block is not compiled. // If this fails, code after this block is not compiled.
// It is parsed though, so versions of zig from before 0.6.0 // It is parsed though, so versions of zig from before 0.6.0
@ -533,10 +533,6 @@ pub fn build(b: *Builder) void {
} }
use_color_escapes = false; use_color_escapes = false;
switch (b.color) {
.on => use_color_escapes = true,
.off => use_color_escapes = false,
.auto => {
if (std.io.getStdErr().supportsAnsiEscapeCodes()) { if (std.io.getStdErr().supportsAnsiEscapeCodes()) {
use_color_escapes = true; use_color_escapes = true;
} else if (builtin.os.tag == .windows) { } else if (builtin.os.tag == .windows) {
@ -556,8 +552,6 @@ pub fn build(b: *Builder) void {
use_color_escapes = w32.SetConsoleMode(handle, mode) != 0; use_color_escapes = w32.SetConsoleMode(handle, mode) != 0;
} }
} }
},
}
if (use_color_escapes) { if (use_color_escapes) {
red_text = "\x1b[31m"; red_text = "\x1b[31m";
@ -566,7 +560,7 @@ pub fn build(b: *Builder) void {
reset_text = "\x1b[0m"; reset_text = "\x1b[0m";
} }
const header_step = b.addLog( const logo =
\\ \\
\\ _ _ _ \\ _ _ _
\\ ___(_) __ _| (_)_ __ __ _ ___ \\ ___(_) __ _| (_)_ __ __ _ ___
@ -576,10 +570,12 @@ pub fn build(b: *Builder) void {
\\ |___/ |___/ \\ |___/ |___/
\\ \\
\\ \\
, .{}); ;
const header_step = b.step("info", logo);
print("{s}\n", .{logo});
const verify_all = b.step("ziglings", "Check all ziglings"); const verify_all = b.step("ziglings", "Check all ziglings");
verify_all.dependOn(&header_step.step); verify_all.dependOn(header_step);
b.default_step = verify_all; b.default_step = verify_all;
var prev_chain_verify = verify_all; var prev_chain_verify = verify_all;
@ -610,11 +606,11 @@ pub fn build(b: *Builder) void {
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.initNoOp(.custom, b.fmt("chain {s}", .{key}), b.allocator); 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.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);
@ -637,7 +633,7 @@ 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 }),
.exercise = exercise, .exercise = exercise,
.builder = builder, .builder = builder,
.use_healed = use_healed, .use_healed = use_healed,
@ -645,7 +641,8 @@ const ZiglingStep = struct {
return self; return self;
} }
fn make(step: *Step) anyerror!void { fn make(step: *Step, prog_node: *std.Progress.Node) anyerror!void {
_ = prog_node;
const self = @fieldParentPtr(@This(), "step", step); const self = @fieldParentPtr(@This(), "step", step);
self.makeInternal() catch { self.makeInternal() catch {
if (self.exercise.hint.len > 0) { if (self.exercise.hint.len > 0) {
@ -756,11 +753,6 @@ const ZiglingStep = struct {
zig_args.append("-lc") catch unreachable; zig_args.append("-lc") catch unreachable;
} }
if (builder.color != .auto) {
zig_args.append("--color") catch unreachable;
zig_args.append(@tagName(builder.color)) catch unreachable;
}
const zig_file = std.fs.path.join(builder.allocator, &[_][]const u8{ if (self.use_healed) "patches/healed" else "exercises", self.exercise.main_file }) catch unreachable; const zig_file = std.fs.path.join(builder.allocator, &[_][]const u8{ if (self.use_healed) "patches/healed" else "exercises", self.exercise.main_file }) catch unreachable;
zig_args.append(builder.pathFromRoot(zig_file)) catch unreachable; zig_args.append(builder.pathFromRoot(zig_file)) catch unreachable;