aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/build.zig
AgeCommit message (Collapse)Author
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.
2023-05-01build: move exercises at the end of the fileManlio Perillo
The exercises slice takes about 460 lines, making it hard to read the source code of build.zig. Closes #225
2023-04-30Added Ex. 100 fourth for (as foretold in #261)Dave Gauer
2023-04-30Renamed 095 to "for3" to match feature sequenceDave Gauer
So 100 will be the next in line.
2023-04-24build: make exercise output more reliableManlio Perillo
Currently, ZiglingStep prints the raw exercise output. This is not a problem when executing `zig build` from the shell, but in a unit test it is necessary to know when the exercise output ends. Document that Exercise.output should not have trailing whitespace. Ensure this is true by adding a check in the validate_exercises function. Remove trailing whitespace in exercises 68 and 99. Simplify the output validation in ZiglingStep.makeInternal. Checking that the length of the actual and expected output is the same is not necessary, since trailing whitespace has been removed. Simply do an exact comparison. Print the trimmed exercise output, instead of the raw output. This will ensure that the exercise output always ends with only one LF character. Fix some small coding style issues.
2023-04-19Merge pull request #247 from chrboesch/formattingChris Boesch
added first formatting exercise
2023-04-19added first formatting exerciseChris Boesch
2023-04-18build: avoid intermixed messages on the same lineManlio Perillo
In same cases, the progress messages from the compiler are intermixed with the messages printed by ZiglingStep. This intermixing appears in two cases: - when printing, e.g., the message "Checking 0_arrays2.zig..." - when printing the compiler errors Closes #230
2023-04-18build: don't print errors in ZiglingStep.evalManlio Perillo
Move the code for printing compiler errors and messages to the new ZiglingStep.printErrors method. Call printErrors in the Zigling.doCompile method, both in the normal and error flow. When handling an error from the Zig IPC, add the case when the compiler was unable to return the executable path. Before using the IPC, the error was "The following command exited with error code 1" now it is "The following command failed to communicate the compilation result"
2023-04-18build: restore compatibility support againManlio Perillo
Commit e214c44 (build: update ZiglingStep to the new API) broke again the compatibility support for old compilers, due to the use of the multi-object for loop syntax. Move the Zig IPC support code to src/ipc.zig. Use the while statement, instead of the for statement.
2023-04-13build: update ZiglingStep to the new APIManlio Perillo
Update the code to the breaking change in ziglang commit c96cb98ad (CLI: remove --enable-cache option). Replace the --enable-cache option with the --listen=- option and use the Zig IPC to get the path to the executable. Closes #236
2023-04-13build: disable special case for `zig build -Dhealed`Manlio Perillo
The special case was added because it was used by the Eowyn github workflow. As a side effect, however, it prevents testing the normal case used by users. Disable it, until a better solution is found.
2023-04-12Merge pull request #235 from perillo/update-to-version-0.11.0-dev.2560Chris Boesch
Update the code to the new zig version
2023-04-12Update the code to the new zig versionManlio Perillo
Update the code to the breaking change in ziglang commit 60eabc0ec (std.Build.CompileStep: remove run() and install()) Update the zig version in the README.md file.
2023-04-12added the second exercise for bit manipulationChris Boesch
2023-04-12added first exercise for bit manipulationChris Boesch
2023-04-11build: make PrintStep thread safeManlio Perillo
Update PrintStep to always printing to stderr, using std.debug.print, so that the message is written atomically. Note that currently it is not an issue, since PrintStep prints the message before everything else.
2023-04-11build: simplify the code when solving all the exercisesManlio Perillo
Initialize the first step in the chain to the header_step, instead of making the code more complex handling the first step as a special case in the for loop.