aboutsummaryrefslogtreecommitdiff
path: root/build.zig
AgeCommit message (Collapse)AuthorFilesLines
2023-05-09build: add the dumpArgs functionManlio Perillo1-10/+10
Use it in Zigling.compile, in order to reduce code duplication.
2023-05-09build: fix doc-commentsManlio Perillo1-9/+9
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 Perillo1-4/+2
Instead of marking a parameter as unused inside the function body.
2023-05-09build: use self when using @fieldParentPtrManlio Perillo1-5/+5
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 Perillo1-4/+12
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 Perillo1-3/+1
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 Boesch1-23/+35
2023-05-08Cleaning up zig build outputDave Gauer1-23/+35
* 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 Boesch1-3/+5
2023-05-06Merge branch 'main' into improve_instructionChris Boesch1-44/+144
2023-05-06Improve instructions.Chris Boesch1-4/+5
2023-05-06Merge branch 'ratfactor:main' into testingChris Boesch1-44/+143
2023-05-06build: improve Exercise.addExecutableManlio Perillo1-2/+2
Replace the file_path variable with path.
2023-05-06build: use multiline string literals when necessaryManlio Perillo1-23/+128
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 Boesch1-4/+5
2023-05-06build: remove assertion in `Exercise.key`Manlio Perillo1-8/+8
Use `orelse unreachable` instead, in order to simplify the code. Fix doc-comments in the Exercise type.
2023-05-06build: make `Exercise.hint` optionalManlio Perillo1-11/+5
Use an optional type, instead of an empty string, since it is more idiomatic.
2023-05-05build: add the healed-path optionManlio Perillo1-4/+5
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 Boesch1-81/+116
2023-05-03Added new flag 'run_test' to support test steps for test exercises.Chris Boesch1-0/+9
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 Perillo1-26/+45
- 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 Perillo1-9/+9
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 Perillo1-5/+5
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 Perillo1-5/+5
Use ZiglingStep, instead. This is consistent with the coding style in std.Build.
2023-05-03build: remove ZiglingStep.builder fieldManlio Perillo1-8/+6
It is not necessary, since the builder is available in self.step.owner.
2023-05-03build: use Child.exec in ZiglingStep.runManlio Perillo1-30/+17
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 Perillo1-1/+10
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 Perillo1-14/+36
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 Boesch1-3/+2
Heal only in test
2023-05-02Added Ex 101 "for loops part 5" (Closes #271)Dave Gauer1-0/+4
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 Perillo1-3/+2
2023-05-01comment for the issue addedChris Boesch1-0/+1
2023-05-01cli tests removed to solve 272Chris Boesch1-2/+2
2023-05-01build: don't override the top level stepsManlio Perillo1-6/+0
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 Perillo1-6/+14
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 Perillo1-20/+16
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 Perillo1-6/+6
The name "C" does not follow the naming conventions for container fields.
2023-05-01build: reduce code duplication when setting the work pathManlio Perillo1-16/+22
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 Perillo1-18/+0
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 Perillo1-464/+464
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 Gauer1-0/+4
2023-04-30Renamed 095 to "for3" to match feature sequenceDave Gauer1-1/+1
So 100 will be the next in line.
2023-04-24build: make exercise output more reliableManlio Perillo1-16/+30
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 Boesch1-0/+4
added first formatting exercise
2023-04-19added first formatting exerciseChris Boesch1-0/+4
2023-04-18build: avoid intermixed messages on the same lineManlio Perillo1-0/+9
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 Perillo1-14/+33
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 Perillo1-32/+6
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 Perillo1-23/+147
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 Perillo1-1/+1
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.