Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • bazel/toolchain_utils
1 result
Show changes
Commits on Source (15)
......@@ -26,7 +26,7 @@ test --test_output=errors
test --test_verbose_timeout_warnings
# Validate that the lockfile is correct
common --lockfile_mode=error
common --lockfile_mode=${CI_LOCKFILE_MODE}
# These locations are cached on the CI
build:local --disk_cache=${CI_PROJECT_DIR}/.cache/bazel/disk
......
......@@ -14,36 +14,58 @@ include:
CI_COMMIT_REF_NAME
CI_COMMIT_SHA
CI_SERVER_HOST
CI_LOCKFILE_MODE
default:
tags:
- arm64
test:
.test:
extends: .bazelisk
cache:
- !reference [.bazelisk, cache]
- key: "bazel-cache-${CI_PROJECT_ID}"
paths:
- ".cache/bazel/disk"
- ".cache/bazel/repo"
- ".cache/bazel/disk"
- ".cache/bazel/repo"
variables:
CI_LOCKFILE_MODE: error
CONFIG: local
script:
- (cd "${ROOT}"; bazelisk test --config="${CONFIG}" //...)
config:
extends: .test
parallel:
matrix:
- ROOT:
- .
- e2e
- .
- e2e
CONFIG:
- local
- remote
script:
- (cd "${ROOT}"; bazelisk build --config="${CONFIG}" //...)
- (cd "${ROOT}"; bazelisk test --config="${CONFIG}" //...)
- local
- remote
version:
extends: .test
variables:
CI_LOCKFILE_MODE: "off"
parallel:
matrix:
- ROOT:
- .
- e2e
USE_BAZEL_VERSION:
- 7.1.0
- 7.x
- last_rc
# TODO: switch this out for `rules_semantic_release`
semantic-release:
extends: .test
stage: .post
needs:
- test
- config
- version
image: node:lts
cache:
key:
......
# [1.0.0-beta.16](https://git.gitlab.arm.com/bazel/toolchain_utils/compare/v1.0.0-beta.15...v1.0.0-beta.16) (2024-10-21)
### Bug Fixes
- bump minimum Bazel version to `7.1.0` ([66d1a24](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/66d1a24dc741f55dc90df61da9a358ea10e3dc92))
- **libc/gnu:** add `2.{39,40}` versions ([d6221c9](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/d6221c917e3f48594bbfcf3cdcc579b99651145a))
- **local:** correct failure message ([2c40116](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/2c40116c2c037e4c7b961a5a6c0c5aa6d842cffd))
- **local:** parse msys2 `uname` output ([bca66bb](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/bca66bb8cf8b96b374d149a04301c16d06f8c1af))
- switch to `REPO.bazel` from `WORKSPACE` ([0fbf9c6](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/0fbf9c6fd718736a6dc9c590b6657c5c0e693e7f))
### Features
- **local/triplet:** override detection with `BAZEL_TOOLCHAIN_UTILS_LOCAL_TRIPLET` ([d0c7234](https://git.gitlab.arm.com/bazel/toolchain_utils/commit/d0c72342657a67939d95371d725e2c79191a1942))
# [1.0.0-beta.15](https://git.gitlab.arm.com/bazel/toolchain_utils/compare/v1.0.0-beta.14...v1.0.0-beta.15) (2024-09-20)
### Bug Fixes
......
* @bazel
* @matthew.clarkson
[Documentation] @matthew.clarkson
*.md
......
module(
name = "toolchain_utils",
version = "1.0.0-beta.15",
version = "1.0.0-beta.16",
bazel_compatibility = [
">=7.0.0",
">=7.1.0",
],
compatibility_level = 1,
)
......
......@@ -58,18 +58,18 @@ toolchain_test(
To create a hermetic toolchain from a built target:
```py
load("@toolchain_utils//toolchain/symlink/target:defs.bzl", "toolchain_symlink_target")
load("@toolchain_utils//toolchain/info/target:defs.bzl", "toolchain_info")
# Assumes that `:echo` points to a Bazel built `echo` binary
toolchain_symlink_target(
name = "built",
target = ":echo"
# Wrap the binary with `ToolchainInfo` provider
toolchain_info(
name = "info",
target = ":built",
)
# Register the hermetic toolchain
toolchain(
name = "hermetic",
toolchain = ":built",
toolchain = ":info",
toolchain_type = ":type",
)
```
......@@ -77,10 +77,10 @@ toolchain(
To create a hermetic toolchain from a downloaded target:
```py
load("@toolchain_utils//toolchain/symlink/target:defs.bzl", "toolchain_symlink_target")
load("@toolchain_utils//toolchain/info/target:defs.bzl", "toolchain_info")
# Create the necessary toolchain providers around the downloaded target
toolchain_symlink_target(
toolchain_info(
name = "echo-arm64-linux-gnu",
target = ":downloaded-echo-arm64-linux-gnu"
)
......@@ -112,6 +112,7 @@ def implementation(ctx):
print(toolchain.executable)
print(toolchain.default.files)
print(toolchain.default.runfiles)
print(toolchain.run)
example = rule(
implementation = implementation,
......
......@@ -26,7 +26,7 @@ test --test_output=errors
test --test_verbose_timeout_warnings
# Validate that the lockfile is correct
common --lockfile_mode=error
common --lockfile_mode=${CI_LOCKFILE_MODE}
# These locations are cached on the CI
build:local --disk_cache=${CI_PROJECT_DIR}/.cache/bazel/disk
......
......@@ -74,4 +74,6 @@ VERSIONS = (
"2.36",
"2.37",
"2.38",
"2.39",
"2.40",
)
......@@ -11,7 +11,7 @@ ATTRS = {
def implementation(rctx):
label = rctx.attr.target
workspace = label.relative(":WORKSPACE")
workspace = label.relative(":REPO.bazel")
path = rctx.path(workspace)
if not path.exists:
fail("Failed to find `{}`, can only symlink repository labels.".format(path, label))
......
......@@ -39,11 +39,11 @@ def canonical(rctx, label):
def implementation(rctx):
label = resolve(rctx.attr.map, no_match_error = rctx.attr.no_match_error)
canon = canonical(rctx, label)
workspace = Label("{}//:WORKSPACE".format(canon))
workspace = Label("{}//:REPO.bazel".format(canon))
path = rctx.path(workspace)
if not path.exists:
fail("Missing `{}` for `{}`: {}".format(label, select, path))
fail("Missing `{}` for `{}`: {}".format(canon, rctx.name, path))
rctx.delete(".")
rctx.symlink(path.dirname, ".")
......
......@@ -98,6 +98,14 @@ def _uname(rctx, path):
if result.return_code != 0:
fail("Failed to get `uname` kernel: {}".format(result.stderr))
stdout = result.stdout.strip()
_, nt, version = stdout.partition("_NT-")
if nt:
version, patch = version.split("-")
major, minor = version.split(".")
return VersionedInfo("windows.{}.{}.{}".format(int(major), int(minor), int(patch)))
kernel = {
"Linux": "linux",
}[result.stdout.strip()]
......
......@@ -19,12 +19,14 @@ ATTRS = {
}
def implementation(rctx):
triplet = detect(rctx)
triplet = rctx.getenv("BAZEL_TOOLCHAIN_UTILS_LOCAL_TRIPLET", None)
if not triplet:
triplet = detect(rctx).value
rctx.template("triplet.bzl", rctx.attr.triplet, {
"{{value}}": triplet.value,
"{{value}}": triplet,
}, executable = False)
rctx.template("value.bzl", rctx.attr.value, {
"{{value}}": triplet.value,
"{{value}}": triplet,
}, executable = False)
rctx.file("BUILD.bazel", "")
......