<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 6, 2021 at 9:00 PM Tom Zander <<a href="mailto:tom@flowee.org">tom@flowee.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On zondag 5 september 2021 08:13:09 CEST Ben Cooksley wrote:<br>
> In terms of the format of the 'Dependencies' section,<br>
<br>
Playing with kde-build script and noticing the fast growing <br>
dependency trees we have today, I think it may be beneficial to <br>
have two types of compile dependencies in this setup.<br>
<br>
1. required-to-build.<br>
  Which means that if something in the parent tree changes, this<br>
  one is scheduled for re-build.<br>
<br>
2. optional. Equivalent of the cmake feature, if its not there<br>
  some code is not compiled.<br>
  At least once before a release the full dependencies can be<br>
  compiled to see if it fully compiles.<br></blockquote><div><br></div><div>From the perspective of the CI system there is basically no difference in terms of making a dependency available or not as all dependencies are always satisfied using previously built binaries.</div><div>If a dependency is not available your build fails.<br></div><div><br></div><div>We also have to make a hard choice - we either bring in optional dependencies or we don't.</div><div><br></div><div>If we were to randomise whether we brought them in - or just brought them in at certain times - then we would make the system state deterministic. This could in some cases cause builds to break if it was random whether or not we included optional dependencies. This would occur if the dependency of a dependency of a project were rebuilt without an optional dependency being present which in turn caused it's API interface to change. That would then cause the project to fail as the dependency would now be broken.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
Pushing everything into required is likely not scalable, causing <br>
projects too wait too long for compile.<br>
Avoiding the optional ones means you lack coverage of compile and <br>
testing failures due to changes in libs.<br></blockquote><div><br></div><div>The CI system has reused the results of previous builds of dependencies since the very first generation of the system (this would be generation 5) so this is not a problem facing the CI system.</div><div>For individual developers, my understanding is that kdesrc-build makes use of incremental builds which eliminates most of the issue as well.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
What do people think, is it useful to have an 'optional' category <br>
in future there?   <br>
Maybe useful to think that far ahead now people are populating <br>
their dependencies :-)<br>
<br>
<br>
<br></blockquote><div><br></div><div>Thanks,</div><div>Ben<br></div></div></div>