Skip to content

Commit

Permalink
Refactor to properly support bzlmod (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
mark-thm committed Feb 27, 2024
1 parent ee35e05 commit bba11b3
Show file tree
Hide file tree
Showing 36 changed files with 458 additions and 240 deletions.
4 changes: 3 additions & 1 deletion .bazelrc
@@ -1 +1,3 @@
common --enable_bzlmod
common --enable_bzlmod

common --lockfile_mode=off
2 changes: 1 addition & 1 deletion .bazelversion
@@ -1 +1 @@
6.4.0
7.0.0
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Expand Up @@ -15,13 +15,15 @@ jobs:
folders: |
[
".",
"examples/module",
"examples/target-determinator"
]
# we only support Bazel 6, and only with bzlmod enabled
# we only support Bazel 7, and only with bzlmod enabled
exclude: |
[
{"bzlmodEnabled": false},
{"bazelversion": "5.4.0"},
{"bazelversion": "6.4.0"},
]
# this ruleset only supports linux and macos
exclude_windows: true
4 changes: 2 additions & 2 deletions BUILD.bazel
@@ -1,7 +1,7 @@
load("@buildifier_prebuilt//:rules.bzl", "buildifier", "buildifier_test")

exports_files([
"WORKSPACE.bazel", # used by buildifier to locate the root of the sandbox
"MODULE.bazel",
])

buildifier(
Expand All @@ -18,5 +18,5 @@ buildifier_test(
lint_mode = "warn",
mode = "diff",
no_sandbox = True,
workspace = "//:WORKSPACE.bazel",
workspace = "//:MODULE.bazel",
)
7 changes: 7 additions & 0 deletions MODULE.bazel
Expand Up @@ -8,3 +8,10 @@ module(

bazel_dep(name = "bazel_skylib", version = "1.4.1")
bazel_dep(name = "buildifier_prebuilt", version = "6.1.2")
bazel_dep(name = "platforms", version = "0.0.8")

# ensure toolchains get registered
multitool = use_extension("//multitool:extension.bzl", "multitool")
use_repo(multitool, "multitool")

register_toolchains("@multitool//toolchains:all")
3 changes: 3 additions & 0 deletions examples/module/.bazelrc
@@ -0,0 +1,3 @@
common --enable_bzlmod

common --lockfile_mode=off
1 change: 1 addition & 0 deletions examples/module/.bazelversion
@@ -0,0 +1 @@
7.0.0
12 changes: 12 additions & 0 deletions examples/module/BUILD.bazel
@@ -0,0 +1,12 @@
exports_files(
["multitool.lock.json"],
)

sh_test(
name = "integration_test",
srcs = ["integration_test.sh"],
args = [
"$(location @multitool//tools/target-determinator)",
],
data = ["@multitool//tools/target-determinator"],
)
18 changes: 18 additions & 0 deletions examples/module/MODULE.bazel
@@ -0,0 +1,18 @@
"multitool example using target-determinator"

module(
name = "multitool_examples__target_determinator",
version = "0.0.0",
compatibility_level = 1,
)

bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "rules_multitool", version = "0.0.0")
local_path_override(
module_name = "rules_multitool",
path = "../..",
)

multitool = use_extension("@rules_multitool//multitool:extension.bzl", "multitool")
multitool.hub(lockfile = "//:multitool.lock.json")
use_repo(multitool, "multitool")
File renamed without changes.
5 changes: 5 additions & 0 deletions examples/module/integration_test.sh
@@ -0,0 +1,5 @@
#!/usr/bin/env bash

set -eu

$1 -version
84 changes: 84 additions & 0 deletions examples/module/multitool.lock.json
@@ -0,0 +1,84 @@
{
"target-determinator": {
"binaries": [
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.amd64",
"sha256": "8c7245603dede429b978e214ca327c3f3d686a1bc712c1298fca0396a0f25f23",
"os": "macos",
"cpu": "x86_64"
},
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.arm64",
"sha256": "8f975b471c4a51d32781b757e1ece9700221bfd4c0ea507c18fa382360d1111f",
"os": "macos",
"cpu": "arm64"
},
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.linux.amd64",
"sha256": "c8a09143e9fe6eccc4b27a6be92c5929e5a78034a8d0b4c43dbed4ee539ec903",
"os": "linux",
"cpu": "x86_64"
}
]
},
"gh": {
"binaries": [
{
"kind": "archive",
"url": "https://github.com/cli/cli/releases/download/v2.44.1/gh_2.44.1_macOS_amd64.zip",
"sha256": "1c545505b5b88feaffeba00b7284ccac3f2002b67461b1246eaec827eb07c31b",
"file": "gh_2.44.1_macOS_amd64/bin/gh",
"os": "macos",
"cpu": "x86_64"
},
{
"kind": "archive",
"url": "https://github.com/cli/cli/releases/download/v2.44.1/gh_2.44.1_macOS_amd64.zip",
"sha256": "1c545505b5b88feaffeba00b7284ccac3f2002b67461b1246eaec827eb07c31b",
"file": "gh_2.44.1_macOS_amd64/bin/gh",
"os": "macos",
"cpu": "arm64"
},
{
"kind": "archive",
"url": "https://github.com/cli/cli/releases/download/v2.44.1/gh_2.44.1_linux_amd64.tar.gz",
"sha256": "f11eefb646768e3f53e2185f6d3b01b4cb02112c2c60e65a4b5875150287ff97",
"file": "gh_2.44.1_linux_amd64/bin",
"os": "linux",
"cpu": "x86_64"
}
]
},
"aws": {
"binaries": [
{
"kind": "pkg",
"url": "https://awscli.amazonaws.com/AWSCLIV2-2.8.4.pkg",
"sha256": "df0df526521a5b6c38b6954ec08c16453916daacca83582d37582654e9ca05a3",
"file": "aws-cli.pkg/Payload/aws-cli/aws",
"os": "macos",
"cpu": "x86_64"
},
{
"kind": "pkg",
"url": "https://awscli.amazonaws.com/AWSCLIV2-2.8.4.pkg",
"sha256": "df0df526521a5b6c38b6954ec08c16453916daacca83582d37582654e9ca05a3",
"file": "aws-cli.pkg/Payload/aws-cli/aws",
"os": "macos",
"cpu": "arm64"
},
{
"kind": "archive",
"url": "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.8.4.zip",
"sha256": "d23b59d08c129daeda7535051eaa082e139cc14d243995aa754d4b250b9c9329",
"file": "aws/dist/aws",
"os": "linux",
"cpu": "x86_64"
}

]
}
}
4 changes: 3 additions & 1 deletion examples/target-determinator/.bazelrc
@@ -1 +1,3 @@
common --enable_bzlmod
common --enable_bzlmod

common --lockfile_mode=off
4 changes: 2 additions & 2 deletions examples/target-determinator/BUILD.bazel
Expand Up @@ -2,7 +2,7 @@ sh_test(
name = "integration_test",
srcs = ["integration_test.sh"],
args = [
"$(location @target-determinator//tool)",
"$(location @multitool//tools/target-determinator)",
],
data = ["@target-determinator//tool"],
data = ["@multitool//tools/target-determinator"],
)
28 changes: 2 additions & 26 deletions examples/target-determinator/WORKSPACE.bazel
@@ -1,30 +1,6 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
load("@rules_multitool//multitool:multitool.bzl", "multitool")

http_file(
name = "target_determinator_linux_x86_64",
executable = True,
sha256 = "c8a09143e9fe6eccc4b27a6be92c5929e5a78034a8d0b4c43dbed4ee539ec903",
urls = ["https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.linux.amd64"],
)

http_file(
name = "target_determinator_macos_arm64",
executable = True,
sha256 = "8f975b471c4a51d32781b757e1ece9700221bfd4c0ea507c18fa382360d1111f",
urls = ["https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.arm64"],
)

http_file(
name = "target_determinator_macos_x86_64",
executable = True,
sha256 = "8c7245603dede429b978e214ca327c3f3d686a1bc712c1298fca0396a0f25f23",
urls = ["https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.amd64"],
)

multitool(
name = "target-determinator",
linux_x86_64_binary = "@target_determinator_linux_x86_64//file",
macos_arm64_binary = "@target_determinator_macos_arm64//file",
macos_x86_64_binary = "@target_determinator_macos_x86_64//file",
name = "multitool",
lockfile = "//:multitool.lock.json",
)
27 changes: 27 additions & 0 deletions examples/target-determinator/multitool.lock.json
@@ -0,0 +1,27 @@
{
"target-determinator": {
"binaries": [
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.amd64",
"sha256": "8c7245603dede429b978e214ca327c3f3d686a1bc712c1298fca0396a0f25f23",
"os": "macos",
"cpu": "x86_64"
},
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.darwin.arm64",
"sha256": "8f975b471c4a51d32781b757e1ece9700221bfd4c0ea507c18fa382360d1111f",
"os": "macos",
"cpu": "arm64"
},
{
"kind": "file",
"url": "https://github.com/bazel-contrib/target-determinator/releases/download/v0.25.0/target-determinator.linux.amd64",
"sha256": "c8a09143e9fe6eccc4b27a6be92c5929e5a78034a8d0b4c43dbed4ee539ec903",
"os": "linux",
"cpu": "x86_64"
}
]
}
}
6 changes: 6 additions & 0 deletions multitool/BUILD.bazel
@@ -1,5 +1,11 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")

bzl_library(
name = "extension",
srcs = ["extension.bzl"],
visibility = ["//visibility:public"],
)

bzl_library(
name = "multitool",
srcs = ["multitool.bzl"],
Expand Down
28 changes: 28 additions & 0 deletions multitool/extension.bzl
@@ -0,0 +1,28 @@
"multitool"

load("//multitool/private:multitool.bzl", _hub = "hub")

hub = tag_class(
attrs = {
"lockfile": attr.label(mandatory = True, allow_single_file = True),
},
)

def _extension(module_ctx):
lockfiles = []
for mod in module_ctx.modules:
for h in mod.tags.hub:
lockfiles.append(h.lockfile)

# TODO: we should be able to support multiple hubs
_hub(
name = "multitool",
lockfiles = lockfiles,
)

multitool = module_extension(
implementation = _extension,
tag_classes = {
"hub": hub,
},
)

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit bba11b3

Please sign in to comment.