Previously this always caused a compilation failure because it would
correctly substitute multiple packages with the provided forked package,
however, this ends up constructing a zig build-exe command line for the
configurer that included multiple differnt modules that used the same
files.
Closes#31677
Any time the same package (based on fingerprint) appears in the
dependency tree, if the semantic version compares equal, the hash must
be identical, otherwise one of three things has gone wrong and the
maintainer must address it.
--fetch is changed to mean:
> Fetch all dependencies including lazy ones; exit without configuration
--configure is introduced (replaces old `--fetch` semantics):
> Exit after the configuration phase
Contiki-NG is really more like a freestanding library for driving MCUs and
peripherals; it's not an OS with an ABI as such. So a dedicated OS tag isn't
really doing anything useful over `freestanding`.
Hermit is a unikernel with no stable syscall ABI; you must link its syscall
library statically to perform syscalls. Due to the way the project's build
system works, that means using Rust/Cargo. As such, it makes essentially zero
sense for Zig to support this target.
Previously, --pad-to is implemented using
File.setLength which does a ftruncate syscall
immediately. However, for positional writers,
setLength will be called again in out.end(),
truncating the file back to out.pos bytes.
Therefore, seekTo should be called after setLength
to update out.pos.
This change brings initiailization of MultiArrayList within the compiler and the
standard library in line with other std containers in preferring the
`.empty` decl literal over `.{}` initialization.
These have no clear use case, no coherent definition, and incomplete/broken
compiler and linker support.
If actually needed, they can be reintroduced if someone can present a reasonable
use case along with a plan for how they should be implemented consistently in
all backends and linkers.
serves an ErrorBundle as a configuration_failed message instead of
configuration message upon connection. at this point the protocol enters
an invalid state and the process will need to be restarted in order to
reconfigure. in the future, build server should outlive
reconfigurations.
closes#36389
in preparation for sending them over the build server protocol (#36403),
they are now stored in the same format in memory: one byte for prefix
followed by the relative path.
Problem was that when Maker.Step.Compile was deinitialized, it would
reap the memory for the child process, but not actually kill & wait for
the termination of the process. Leaving the extra processes running
caused "Reusing Cache Artifacts" deadlocks, not to mention wasting
resources.
closes#36513
closes#36255
follow-up enhancement: only add the root build.zig.zon file as an input
to the cache manifest. Do a cache check *before* fetching, that has the
ability to skip fetching. If fetching needs to be run, then add the
build.zig.zon files as discovered files, keeping the stat and contents
around from the fetch process rather than redundantly doing the file
system operations.
Now, when adding an option that is a file path, one must explicitly
choose between:
* `addOptionPath` (must be a file)
* `addOptionPathDirectory` (must be a directory)
* `addOptionPathUntracked` (opt out of dependency tracking)
closes#35766