<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Feb 10, 2018 at 2:34 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> writes:<br>
<br>
>> Note that PETSc's own dependency management is messy because someone in<br>
>> the early days of BuildSystem thought that concatenating strings was<br>
>> sufficient, instead of maintaining a structured dependency graph to be<br>
>> topologically sorted at the final stage (pkg-config does this).<br>
>><br>
><br>
> Of course, we do have a structured dependency graph. Where is it not being<br>
> used?<br>
<br>
If the DAG structure was preserved, toStringNoDupes would never need to<br>
work with a list containing duplicate flags, including libraries like<br>
-ldl and -lm, because the topological sort would never have created<br>
duplicates in the first place.<br>
</blockquote></div><br>If we were in charge of all dependencies, that would be true. However, packages can</div><div class="gmail_extra">dump in things that need to link with. if we could require that all dependencies be</div><div class="gmail_extra">specified through our system, then we could topologically sort and put out all the</div><div class="gmail_extra">link libs. This is exactly what we do for configure tests already.</div><div class="gmail_extra"><br></div><div class="gmail_extra"> Matt</div><div class="gmail_extra"><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>