diff --git a/vulkan/extensions.bzl b/vulkan/extensions.bzl index 55c16e1..63a29e6 100644 --- a/vulkan/extensions.bzl +++ b/vulkan/extensions.bzl @@ -5,14 +5,28 @@ Module extension to manage Vulkan SDKs. load("//vulkan:defs.bzl", "INSTALL_ATTRS", "install_sdk") def _vulkan_sdk_impl(ctx): + generated = {} for mod in ctx.modules: for tag in mod.tags.toolchain: - name = tag.name + name = tag.name if tag.name else "vulkan_sdk_{}".format(tag.version) kwargs = {k: getattr(tag, k) for k in INSTALL_ATTRS} - install_sdk( - name = name if name else "vulkan_sdk_{}".format(tag.version), - **kwargs - ) + if name in generated: + if generated[name] != kwargs: + fail( + ("Conflicting vulkan_sdk.toolchain tags resolve to the " + + "same repository '{}' but request different attributes:\n" + + " {}\n" + + "vs\n" + + " {}\n" + + "Give one of the tags a distinct `name` to install both.").format( + name, + generated[name], + kwargs, + ), + ) + continue + generated[name] = kwargs + install_sdk(name = name, **kwargs) return ctx.extension_metadata( reproducible = True,