-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add a recipe for brunocodutra/alloy #7
Conversation
Doesn't alloy need metal? |
It does, but Metal is bundled inside it, so technically it's not a dependency. If the user includes Metal before Alloy, it uses the user provided version as long as it meets Alloy's minimum requirements. Side question, now that Alloy works out of the box with cget, does it still make sense to provide a custom recipe? |
That seems somewhat fragile. Is there a way to disable this bundling? It seems confusing. The expectation is that alloy would use the user-installed metal. Also, if I sort the includes(which is common with clang-format), then the user-installed metal will never be include before because
It could provide the recipe to the most stable version, but in reality its not necessary. Even if you wanted to install Metal first, you can provide a 'requirements.txt' in the project instead of needing a recipe. |
It's convenient
It skips the bundled version if the macro You have a point however that the behaviour is currently unspecified if Metal is included after Alloy, but that is actually a more general problem pertaining any header only library, namely what do do if conflicting versions of such a library are included in the same translation unit? I posit that the correct behaviour is to error out if
I'll close this PR then (and #6), but I'd love to continue the discussion on the bundling of header only dependencies, maybe we should move it somewhere else? |
It is for some cases, but for cmake/cget users, they will just include
I mean in the cmake, something like
In general, a header-only library includes its dependencies, it doesn't embed its dependencies, so this problem doesn't exist. Usually, embedding the dependencies is for special use cases to keep the code dependency-free, so conflicting versions are unlikely in this scenario due to low-dependencies.
Yea, probably, I am not sure where to move it to. Maybe an issue on alloy? |
I admit my view is biased by the fact we still lack proper universal dependency management system in C++, but considering the scenario where I'll reopen this once I've implemented this feature upstream. |
No description provided.