aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/build.zig
AgeCommit message (Collapse)Author
2023-05-14build: improve the help message in ZiglingStepManlio Perillo
Add the Mode enum, so that ZiglingStep can detect if it was called in normal mode or in named mode. Update the help method to print the correct message based on the current build mode.
2023-05-14build: remove unused declarationsManlio Perillo
Remove the `Exercise.addExecutable` method and the `SkipStep` struct, since they are no longer used.
2023-05-14build: show the logo in named modeManlio Perillo
When running `zig build -Dn=n`, ensure that the logo is printed. Update the tests. Closes #214
2023-05-14build: simplify the named build modeManlio Perillo
Remove the following steps, since they are rarely (if never) used and only increase the complexity of the `build.zig` file: - install step (zig build -Dn=n install) - test step (zig build -Dn=n test) - start step (zig build -Dn=n start) The only remaining step is the default zigling step (zig build -Dn=n), where the user can choose the exercise to solve. Update the tests. Additionally, update CheckNamedStep and CheckStep so that they can share the same functions. Closes #299
2023-05-14build: remove the install step in the normal build modeManlio Perillo
Removing the install step will simplify the current code. Copying the exercise executable to the zig-out directory can be done in `ZiglingStep. Closes #298
2023-05-14build: remove the special eowyn build modeManlio Perillo
The special eowyn mode was added in order to improve the performance of the Eowyn Github workflow. Remove it, since it adds unnecessary complexity to the `build.zig` file. Closes #297
2023-05-13Execution of test exercises added.Chris Boesch
2023-05-13Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-09Restore unit testsManlio Perillo
Commit dbd42bb (Cleaning up zig build output) broke the unit test. Always use exit code 2, instead of 0. This is the exit code used by the build runner to notify the compiler to not report any further diagnostics. Move the Ziglings logo from the `build` function scope to the global scope, and make it public so that tests.zig can use it to find the number of lines to skip, instead of using an hard coded value. Fixes #295
2023-05-09build: make literal paths portableManlio Perillo
Use fs.path.sep_str instead of a slash, in literal paths.
2023-05-09build: improve code formattingManlio Perillo
Avoid too long lines or too many line breaks.
2023-05-09build: add the dumpArgs functionManlio Perillo
Use it in Zigling.compile, in order to reduce code duplication.
2023-05-09build: fix doc-commentsManlio Perillo
Some functions and custom build steps incorrectly used a normal comment. Use a doc-comment instead. Additionally, use a present tense verb to describe the action of a function or custom build step.
2023-05-09build: use the blank identifier in the parameter listManlio Perillo
Instead of marking a parameter as unused inside the function body.
2023-05-09build: use self when using @fieldParentPtrManlio Perillo
Update PrintStep and SkipStep to use the `self` variable when getting the parent pointer from Step. This convention is used in `std.Build`.
2023-05-09build: don't install skipped exercisesManlio Perillo
Update the code in `zig build install` and `zig build -Dn=n install`, so that exercises that must be skipped are not installed, since it will cause an error. Ensure that a skip message is printed.
2023-05-09build: fix `zig build -Dhealed install`Manlio Perillo
The command fails because the path to the exercises directory was incorrectly set to "exercises" instead of `work_path`. The bug was introduced in commit b56bb7b (build: enable full parallelism when -Dhealed is set). Remove the comment about not using multi-object loop, since it is confusing.
2023-05-09Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-08Cleaning up zig build outputDave Gauer
* Only show actual Zig compiler errors, not build internals to confused and dismay. * Remove advanced usage instructions not needed in normal operation.
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06Merge branch 'main' into improve_instructionChris Boesch
2023-05-06Improve instructions.Chris Boesch
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06build: improve Exercise.addExecutableManlio Perillo
Replace the file_path variable with path.
2023-05-06build: use multiline string literals when necessaryManlio Perillo
Update the output and hint fields in the `exercises` slice to use a multiline string literal when the string have multiple lines or use the `"` character. This will greatly improve readability. Additionally, remove the trailing whitespace on each line and check it in the validate_exercises function. Update the output comparison logic in ZiglingStep, since the current code assumes that the string has only one line. Update test/tests.zig to use the new `CheckNamedStep` in test case 1, since RunStep.StdIo.Check is no longer able to correctly check the output. Fixes #283
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-06build: remove assertion in `Exercise.key`Manlio Perillo
Use `orelse unreachable` instead, in order to simplify the code. Fix doc-comments in the Exercise type.
2023-05-06build: make `Exercise.hint` optionalManlio Perillo
Use an optional type, instead of an empty string, since it is more idiomatic.
2023-05-05build: add the healed-path optionManlio Perillo
This is necessary in the unit tests, to ensure each test case use a different exercises directory. Update test/tests.zig to use the new healed-path option, ensuring that each temp directory is removed. In test case 3, 4 and 5, move case_step as the first step in the dependency chain. This will improve the build summary tree. In test case 5, remove the dependency to heal_step, since it is not necessary.
2023-05-03Merge branch 'ratfactor:main' into testingChris Boesch
2023-05-03Added new flag 'run_test' to support test steps for test exercises.Chris Boesch
Also created a simple exercise '102_testing' to test the new flag. After the new build system is ready, we skip the exercise in the flow to finish the actual testing exercise.
2023-05-03build: improve coding style in ZiglingStepManlio Perillo
- Use an anonymous struct when initializing std.Build.Step. - Rename the builder parameter in the create method to b - Avoid lines too long Additionally: - In the run method, rename output to raw_output in order to make the next variable names shorter. - In the compile method, rename zig_file to path.
2023-05-03build: use @panic("OOM") instead of unreachableManlio Perillo
The code in ZiglingStep copied the error handling used in std.Build in the past. Use @panic("OOM") when the error is caused by the allocator failing to allocate memory.
2023-05-03build: improve the exercise output checkManlio Perillo
Make the error message consistent with the one in std.Build.RunStep, using the "=" character instead of "-" and correctly aligning the text.
2023-05-03build: don't use @This() in ZiglingStepManlio Perillo
Use ZiglingStep, instead. This is consistent with the coding style in std.Build.
2023-05-03build: remove ZiglingStep.builder fieldManlio Perillo
It is not necessary, since the builder is available in self.step.owner.
2023-05-03build: use Child.exec in ZiglingStep.runManlio Perillo
Update the run method to use Child.exec, instead of Child.spawn followed by Child.wait. This simplifies the code.
2023-05-03build: fix incorrect error handling in ZiglingStep.compileManlio Perillo
When handling the error from the eval method, some possible errors are ignored. The make method will only print the exercise hint and the help message. Print the unexpected error message, in the else prong. Note that FileNotFound can also be considered unexpected.
2023-05-03build: remove the ZiglingStep.makeInternal methodManlio Perillo
Rename the doCompile method to compile and add the run method. The two methods are now called from the make method. Add the help method, since the error handling of compile and run methods are now separate. Remove the obsolete comment for the compile method.
2023-05-02Merge pull request #275 from perillo/heal-only-in-testChris Boesch
Heal only in test
2023-05-02Added Ex 101 "for loops part 5" (Closes #271)Dave Gauer
Also gave a shot at explaining data-oriented design, a Zig "hot topic" ever since the red Hawaiian shirt talk(s).
2023-05-02Restore unit testsManlio Perillo
2023-05-01comment for the issue addedChris Boesch
2023-05-01cli tests removed to solve 272Chris Boesch
2023-05-01build: don't override the top level stepsManlio Perillo
When running `zig build -Dn=n`, the install and uninstall steps where overridden in order to improve the description. In recent version of Zig this is no longer allowed.
2023-05-01build: rename Exercise.baseName to nameManlio Perillo
The name "baseName" is confusing, since it refers to the UNIX basename command, and not to the basename function in some programming languages including Zig. Use the std.fs.path.stem function to remove the file extension, instead of slicing. Remove the use of the assertion, since it is no longer necessary. Instead, add a check to ensure that the exercise must be a Zig source file in the validate_exercises function. Update the validate_exercises function to check the last exercise, too.
2023-05-01build: add the Exercise.addExecutable methodManlio Perillo
Currently addExecutable is called 3 times, unnecessarily making the code more complex. The method takes as argument the path to the exercises directory. Additionally, use the new std.Build.ExecutableOptions.link_libc field. The new field was added in ziglang/zig@adc9b77d5f on 2023-04-13. Update the required Zig compiler version. Note that I added the **current** zig version to the changelog, since the reason for the change is known only to the person updating the version.
2023-05-01build: rename the Exercise.C field to link_libcManlio Perillo
The name "C" does not follow the naming conventions for container fields.
2023-05-01build: reduce code duplication when setting the work pathManlio Perillo
Currently, the code for defining the path to the exercises directory is duplicate 4 times. Add the constants `healed_path` and `work_path`, and use work_path instead of the duplicated if expression. Update ZiglingStep to take `work_path` instead of `use_healed` as argument. Reduce code length by using `join` instead of `std.fs.path.join` and replace the use of a slice with a tuple. Additionally, in case of an error from the `join` function, use @panic instead of unreachable. Document why the special branch, when the exercises are healed by the eowyn script, has been disabled.
2023-05-01build: remove the Exercise.async fieldManlio Perillo
The stage1 C++ compiler is gone forever. Remove the custom support and documentation for the old stage1 compiler in build.zig and README.md.