Now I'm fighting circular deps.
cmake -> nghttp2 -> c-ares -> gtest -> cmake.
How do solve that kind of circular deps? easy! You vendor! cmake has vendored nghttp2. Problem solved.
But what do you do if the dependency you need is already vendoring you?
You vendor them back!
..and you end up like this:
You can't vendor me, I'm already vendoring you.
I can't? Hold my beer....
@ncopa mutually-recursive symlinks are definitely my favorite filesystem gotcha
@olasd @ncopa to be fair, this case is not mutually recursive. It can't be, because you need the target git commit ID to reference it, which in turn can't reference the commit you're currently constructing since the ID isn't known yet.
(Which is to say, you could do it—if you break SHA1.)
And in fact, the example does end a few levels down:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/angle/third_party/dawn/third_party/angle/third_party/dawn/third_party/angle/third_party/dawn/third_party/angle/third_party/dawn/third_party/angle/third_party/
There's no dawn dependency anymore :)
That said, this is still hilariously bad and stupid.
@equinox I did specifically write "mutually recursive symlinks", which are possible in git.
In that specific case, I got misled by the different icon for the folders involved in that silly dependency tree, not looking closely they looked like symlink icons.
@ncopa "I'm not vendored in here with you, you're vendored in here with ME!"
@ncopa wait, cmake has circular dependencies? shit, that's gonna cause me issues later...
@ncopa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah
@ncopa this must be a blast and bljad to build