Path: blob/trunk/dotnet/private/framework_transition.bzl
2884 views
load("@bazel_skylib//lib:dicts.bzl", "dicts") load( "@rules_dotnet//dotnet/private:common.bzl", "FRAMEWORK_COMPATIBILITY", "is_core_framework", ) load("@rules_dotnet//dotnet/private:rids.bzl", "RUNTIME_GRAPH") load( "@rules_dotnet//dotnet/private/transitions:common.bzl", "FRAMEWORK_COMPATABILITY_TRANSITION_OUTPUTS", "RID_COMPATABILITY_TRANSITION_OUTPUTS", ) DEFAULT_TOOL_FRAMEWORK = "net6.0" def _target_framework_transition_impl(settings, attr): target_framework = getattr(attr, "target_framework", DEFAULT_TOOL_FRAMEWORK) if not is_core_framework(target_framework): msg = "Transitions must be to a .Net Core framework: " + target_framework fail(msg) incoming_tfm = settings["@rules_dotnet//dotnet:target_framework"] if incoming_tfm not in FRAMEWORK_COMPATABILITY_TRANSITION_OUTPUTS: fail("Error setting @rules_dotnet//dotnet:target_framework: invalid value '" + incoming_tfm + "'. Allowed values are " + str(FRAMEWORK_COMPATIBILITY.keys())) transitioned_tfm = target_framework runtime_identifier = settings["@rules_dotnet//dotnet:rid"] return dicts.add({"@rules_dotnet//dotnet:target_framework": transitioned_tfm}, {"@rules_dotnet//dotnet:rid": runtime_identifier}, FRAMEWORK_COMPATABILITY_TRANSITION_OUTPUTS[transitioned_tfm], RID_COMPATABILITY_TRANSITION_OUTPUTS[runtime_identifier]) target_framework_transition = transition( implementation = _target_framework_transition_impl, inputs = ["@rules_dotnet//dotnet:target_framework", "@rules_dotnet//dotnet:rid", "//command_line_option:cpu", "//command_line_option:platforms"], outputs = ["@rules_dotnet//dotnet:target_framework", "@rules_dotnet//dotnet:rid"] + ["@rules_dotnet//dotnet:framework_compatible_%s" % framework for framework in FRAMEWORK_COMPATIBILITY.keys()] + ["@rules_dotnet//dotnet:rid_compatible_%s" % rid for rid in RUNTIME_GRAPH.keys()], )