diff --git a/e2e/toolchain/manager/BUILD.bazel b/e2e/toolchain/manager/BUILD.bazel deleted file mode 100644 index 8bd461b4ecf048b09bf6ea4009691a263d8e48be..0000000000000000000000000000000000000000 --- a/e2e/toolchain/manager/BUILD.bazel +++ /dev/null @@ -1,6 +0,0 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") - -build_test( - name = "type", - targets = ["@rules_labgrid//labgrid/toolchain/manager:type"], -) diff --git a/labgrid/config/BUILD.bazel b/labgrid/config/BUILD.bazel index e618d630b93eedede84c4f48a45cdcba461e9306..10f07c1a175cc365de884be7e45e55a5ad3d54e6 100644 --- a/labgrid/config/BUILD.bazel +++ b/labgrid/config/BUILD.bazel @@ -1,6 +1,7 @@ load(":data.bzl", "data") load(":deps.bzl", "deps") load(":env.bzl", "env") +load(":manager.bzl", "manager") env( name = "env", @@ -12,6 +13,11 @@ data( visibility = ["//:__subpackages__"], ) +manager( + name = "manager", + visibility = ["//:__subpackages__"], +) + deps( name = "deps", visibility = ["//visibility:public"], diff --git a/labgrid/config/manager.bzl b/labgrid/config/manager.bzl new file mode 100644 index 0000000000000000000000000000000000000000..b4ac3b06c3ba45799d4f6f7014a1612ea00e60b0 --- /dev/null +++ b/labgrid/config/manager.bzl @@ -0,0 +1,21 @@ +load("@rules_python//python:defs.bzl", "PyInfo") +load("//labgrid/cfg:unstore.bzl", _cfg = "unstore") + +visibility("//labgrid/config/...") + +DOC = "Unpacks the `manager` from the `//labgrid/toolchain/config:type` toolchain" + +ATTRS = {} + +def implementation(ctx): + toolchain = ctx.toolchains["//labgrid/toolchain/config:type"] + return toolchain.manager + +manager = rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + provides = [PyInfo], + toolchains = ["//labgrid/toolchain/config:type"], + cfg = _cfg, +) diff --git a/labgrid/config/rule.bzl b/labgrid/config/rule.bzl index 29ab04d652c71294203d77d9ac8e5c8378d858ab..596a00cf3a1b3c084f6451efc6ef0fb7d64359eb 100644 --- a/labgrid/config/rule.bzl +++ b/labgrid/config/rule.bzl @@ -69,6 +69,11 @@ ATTRS = { providers = [DefaultInfo], cfg = "exec", ), + "manager": attr.label( + doc = "A context manager that `//labgrid/executor` will use that sets up the LabGrid environment.", + providers = [[DefaultInfo, PyInfo]], + cfg = "exec", + ), } def _forward(target): @@ -86,6 +91,7 @@ def implementation(ctx): deps = _flatten([_forward(d) for d in ctx.attr.deps]), env = env, data = depset(transitive = [d.files for d in data]), + manager = _forward(ctx.attr.manager), ) return [default, toolchain] diff --git a/labgrid/config/toolchain/macro.bzl b/labgrid/config/toolchain/macro.bzl index 5eb785bcda5dc96fcd26f49680f567fa80be0d63..99a7af8147244f6fd718d2aeec7a60b1d9ec7373 100644 --- a/labgrid/config/toolchain/macro.bzl +++ b/labgrid/config/toolchain/macro.bzl @@ -1,5 +1,4 @@ load("@rules_labgrid//labgrid/config:defs.bzl", "labgrid_config") -load("@rules_labgrid//labgrid/manager:defs.bzl", "labgrid_manager") visibility("//...") @@ -13,11 +12,7 @@ def labgrid_config_toolchain(*, name, src, state, target_compatible_with, manage "LG_ENV": "$(rlocationpath {})".format(src), "LG_STATE": state, }, - ) - - labgrid_manager( - name = "{}-manager".format(name), - src = native.package_relative_label(manager), + manager = native.package_relative_label(manager), ) constraints = [native.package_relative_label(c) for c in target_compatible_with] @@ -29,11 +24,4 @@ def labgrid_config_toolchain(*, name, src, state, target_compatible_with, manage toolchain_type = "@rules_labgrid//labgrid/toolchain/config:type", ) - native.toolchain( - name = "{}-manager-toolchain".format(name), - target_compatible_with = constraints, - toolchain = "{}-manager".format(name), - toolchain_type = "@rules_labgrid//labgrid/toolchain/manager:type", - ) - toolchain = labgrid_config_toolchain diff --git a/labgrid/executor/BUILD.bazel b/labgrid/executor/BUILD.bazel index 7fbfa4fa2d76d73140a693081cd50fe306c21c03..b43b480ef8622bb0be43a349ec4dd32f2570d267 100644 --- a/labgrid/executor/BUILD.bazel +++ b/labgrid/executor/BUILD.bazel @@ -14,7 +14,7 @@ py_binary( visibility = ["//:__subpackages__"], deps = [ "//bazel/labgrid/executor", - "//labgrid/manager", + "//labgrid/config:manager", "@rules_python//python/runfiles", ], ) diff --git a/labgrid/executor/args.bzl b/labgrid/executor/args.bzl index 730f019b5b6fc68b1a968dfb481880ce02eb5946..ecee5a99e356d30735544ac63518b3194d8800c2 100644 --- a/labgrid/executor/args.bzl +++ b/labgrid/executor/args.bzl @@ -8,7 +8,7 @@ ATTRS = { "_manager": attr.label( allow_single_file = True, doc = "The manager to use", - default = "//labgrid/manager:src", + default = "//labgrid/config:manager", cfg = "exec", ), "_env": attr.label( diff --git a/labgrid/manager/BUILD.bazel b/labgrid/manager/BUILD.bazel index dde0f194c8e7ca7371fc2c6a99b64c28322eac12..943a15d85de141abd0622681492734702164dbe8 100644 --- a/labgrid/manager/BUILD.bazel +++ b/labgrid/manager/BUILD.bazel @@ -1,5 +1,4 @@ load("@rules_python//python:defs.bzl", "py_library") -load(":src.bzl", "src") py_library( name = "passthrough", @@ -8,14 +7,3 @@ py_library( visibility = ["//visibility:public"], deps = ["@rules_labgrid//bazel/labgrid/executor"], ) - -src( - name = "src", - visibility = ["//visibility:public"], -) - -alias( - name = "manager", - actual = "src", - visibility = ["//visibility:public"], -) diff --git a/labgrid/manager/defs.bzl b/labgrid/manager/defs.bzl deleted file mode 100644 index 9d4ccce807a87c42b34bcd940ce6c7a2a19105e4..0000000000000000000000000000000000000000 --- a/labgrid/manager/defs.bzl +++ /dev/null @@ -1,5 +0,0 @@ -load(":rule.bzl", _manager = "manager") - -visibility("public") - -labgrid_manager = _manager diff --git a/labgrid/manager/rule.bzl b/labgrid/manager/rule.bzl deleted file mode 100644 index 9326ccd481175449fd587d6c6fe7451c18bb16aa..0000000000000000000000000000000000000000 --- a/labgrid/manager/rule.bzl +++ /dev/null @@ -1,52 +0,0 @@ -load("@rules_python//python:defs.bzl", "PyInfo") - -visibility("//...") - -DOC = """ -Determines the manager to load a LabGrid configuration. - -```py -labgrid_manager( - name = "config", - src = "@rules_labgrid//labgrid/manager:config", -) - -toolchain( - name = "docker", - target_compatible_with = ["//constraint:docker"], - toolchain = ":manager", - toolchain_type = "@rules_labgrid//labgrid/toolchain/manager:type", -) -``` - -A tool can resolve the attributes via the late-bound labels: - -- `@rules_labgrid//labgrid/manager:src` -""" - -ATTRS = { - "src": attr.label( - doc = "A context manager that `//labgrid/executor` will use that sets up the LabGrid environment.", - providers = [[DefaultInfo, PyInfo]], - cfg = "exec", - ), -} - -def _forward(target): - return target[DefaultInfo], target[PyInfo] - -def implementation(ctx): - toolchain = platform_common.ToolchainInfo( - src = _forward(ctx.attr.src), - ) - - return toolchain - -labgrid_manager = rule( - doc = DOC, - attrs = ATTRS, - implementation = implementation, - provides = [platform_common.ToolchainInfo], -) - -manager = labgrid_manager diff --git a/labgrid/manager/src.bzl b/labgrid/manager/src.bzl deleted file mode 100644 index d194c6416ef4f7cdc65857bbc570d209c36a0ba4..0000000000000000000000000000000000000000 --- a/labgrid/manager/src.bzl +++ /dev/null @@ -1,21 +0,0 @@ -load("//labgrid/cfg:unstore.bzl", _cfg = "unstore") -load("@rules_python//python:defs.bzl", "PyInfo") - -visibility("//labgrid/manager/...") - -DOC = "Unpacks the `src` from the `//labgrid/toolchain/manager:type` toolchain" - -ATTRS = {} - -def implementation(ctx): - toolchain = ctx.toolchains["//labgrid/toolchain/manager:type"] - return toolchain.src - -src = rule( - doc = DOC, - attrs = ATTRS, - implementation = implementation, - provides = [PyInfo], - toolchains = ["//labgrid/toolchain/manager:type"], - cfg = _cfg, -) diff --git a/labgrid/toolchain/manager/BUILD.bazel b/labgrid/toolchain/manager/BUILD.bazel deleted file mode 100644 index 51ee1b30da76abcbe842b3746fdd7ae518baf3ab..0000000000000000000000000000000000000000 --- a/labgrid/toolchain/manager/BUILD.bazel +++ /dev/null @@ -1,4 +0,0 @@ -toolchain_type( - name = "type", - visibility = ["//visibility:public"], -)