From 1644258bf3be35094497842dd116a5a77d1490db Mon Sep 17 00:00:00 2001 From: Alex Tercete Date: Fri, 4 Oct 2024 15:47:55 +0100 Subject: [PATCH] refactor: fold `labgrid_manager` into `labgrid_config` BREAKING CHANGE: `labgrid_manager` has been removed in favour of a `manager` attribute in `labgrid_config` As a result, `//labgrid/manager` has now become `//labgrid/config:manager`. Also, `//labgrid/toolchain/manager:type` has been removed. --- e2e/toolchain/manager/BUILD.bazel | 6 ---- labgrid/config/BUILD.bazel | 6 ++++ labgrid/config/manager.bzl | 21 +++++++++++ labgrid/config/rule.bzl | 6 ++++ labgrid/config/toolchain/macro.bzl | 14 +------- labgrid/executor/BUILD.bazel | 2 +- labgrid/executor/args.bzl | 2 +- labgrid/manager/BUILD.bazel | 12 ------- labgrid/manager/defs.bzl | 5 --- labgrid/manager/rule.bzl | 52 --------------------------- labgrid/manager/src.bzl | 21 ----------- labgrid/toolchain/manager/BUILD.bazel | 4 --- 12 files changed, 36 insertions(+), 115 deletions(-) delete mode 100644 e2e/toolchain/manager/BUILD.bazel create mode 100644 labgrid/config/manager.bzl delete mode 100644 labgrid/manager/defs.bzl delete mode 100644 labgrid/manager/rule.bzl delete mode 100644 labgrid/manager/src.bzl delete mode 100644 labgrid/toolchain/manager/BUILD.bazel diff --git a/e2e/toolchain/manager/BUILD.bazel b/e2e/toolchain/manager/BUILD.bazel deleted file mode 100644 index 8bd461b4..00000000 --- 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 e618d630..10f07c1a 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 00000000..b4ac3b06 --- /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 29ab04d6..596a00cf 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 5eb785bc..99a7af81 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 7fbfa4fa..b43b480e 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 730f019b..ecee5a99 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 dde0f194..943a15d8 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 9d4ccce8..00000000 --- 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 9326ccd4..00000000 --- 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 d194c641..00000000 --- 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 51ee1b30..00000000 --- a/labgrid/toolchain/manager/BUILD.bazel +++ /dev/null @@ -1,4 +0,0 @@ -toolchain_type( - name = "type", - visibility = ["//visibility:public"], -) -- GitLab