Incremental builds now take depfiles in account! Using a file that
contains a mapping of depfile to its cached contents, Zilch now
rebuilds less targets unnecessarily! If a build fails because an
include is added, it transparently rebuilds it with all possible header
dependencies, using the custom build scheduler built into Zilch. If an
include is removed, the target will be rebuilt with the new set of
headers the next time the CLI is invoked.
Change-Id: I6a6a6964c2fb191af4a474c45fd0f29623c588b0
A derivation can now be tagged with a fallback, which is substituted in
place of the failed derivation.
Change-Id: I6a6a696418b5d9ced3ba16ce458f55f23813c32b
This will be used to store information for CA derivation fallbacks,
for e.g. handling header dependencies.
Change-Id: I6a6a696467311fcfbb0f01fb13998153b0cc04a7
This adds a second derivation containing a .so (stubbed) to all `.so.symbols`
edges, which represents a shared object stub. This stub is then used for all
linking afterwards, rather than the bubbled-up .so file, which was used as
workaround.
Change-Id: I6a6a69649ff04f8efe329c59e4d0172532aa7adb
This is to workaround an issue I don't know how to fix right now.
In effect: Some of the Nix code contains the placeholder for $out,
which then gets translated to $out for that store path. Converting that
fails, for obvious reasons. However, rewriting those to self-references
is more complicated than I want to get into right now, and as the
behavior of self-references is vaguely broken (and this only affects
one test and a comment), I'm going to take the easy way out and make
it generate a dangling reference.
Lix is deprecating CA derivations, and it's not too difficult to have
this be handled entirely by Zilch. This also improves stability and
future handling of the feature, as Zilch does not depend on how the
daemon handles CA derivations. Though right now, the behavior of
CA derivations is identical to that of the experimental feature, at
this time.
Building CA derivations requires a small scheduler to bypass the Nix
behavior. Each CA derivation is recorded, and then all derivations that
have no CA dependencies get built. These are used to resolve the
realisations for the derivations that depend upon them, and the the
cycle continues.