Go: introduce universal binaries on macOS

This commit is contained in:
Paolo Tranquilli
2024-04-25 09:14:59 +02:00
parent 393f6b7666
commit 4ca8faa9c9
11 changed files with 50 additions and 13 deletions

View File

@@ -13,7 +13,8 @@ local_path_override(
# see https://registry.bazel.build/ for a list of available packages
bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "apple_support", version = "1.15.1")
bazel_dep(name = "platforms", version = "0.0.9")
bazel_dep(name = "rules_go", version = "0.47.0")
bazel_dep(name = "rules_pkg", version = "0.10.1")
bazel_dep(name = "rules_nodejs", version = "6.0.3")

0
go/BUILD.bazel Normal file
View File

View File

@@ -1,6 +1,7 @@
load("@rules_go//go:def.bzl", "go_library")
# gazelle:prefix github.com/github/codeql-go/extractor
# gazelle:map_kind go_binary codeql_go_binary //go:rules.bzl
go_library(
name = "extractor",

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-autobuilder_lib",
@@ -15,7 +16,7 @@ go_library(
],
)
go_binary(
codeql_go_binary(
name = "go-autobuilder",
embed = [":go-autobuilder_lib"],
visibility = ["//visibility:public"],

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-bootstrap_lib",
@@ -7,7 +8,7 @@ go_library(
visibility = ["//visibility:private"],
)
go_binary(
codeql_go_binary(
name = "go-bootstrap",
embed = [":go-bootstrap_lib"],
visibility = ["//visibility:public"],

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-build-runner_lib",
@@ -11,7 +12,7 @@ go_library(
],
)
go_binary(
codeql_go_binary(
name = "go-build-runner",
embed = [":go-build-runner_lib"],
visibility = ["//visibility:public"],

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-extractor_lib",
@@ -11,7 +12,7 @@ go_library(
],
)
go_binary(
codeql_go_binary(
name = "go-extractor",
embed = [":go-extractor_lib"],
visibility = ["//visibility:public"],

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-gen-dbscheme_lib",
@@ -8,7 +9,7 @@ go_library(
deps = ["//go/extractor/dbscheme"],
)
go_binary(
codeql_go_binary(
name = "go-gen-dbscheme",
embed = [":go-gen-dbscheme_lib"],
visibility = ["//visibility:public"],

View File

@@ -1,4 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-tokenizer_lib",
@@ -7,7 +8,7 @@ go_library(
visibility = ["//visibility:private"],
)
go_binary(
codeql_go_binary(
name = "go-tokenizer",
embed = [":go-tokenizer_lib"],
visibility = ["//visibility:public"],

View File

@@ -0,0 +1,5 @@
load("@rules_go//go:def.bzl", "go_binary")
load("//misc/bazel:universal_binary.bzl", "wrap_as_universal_binary")
def codeql_go_binary(**kwargs):
wrap_as_universal_binary(go_binary, **kwargs)

View File

@@ -0,0 +1,24 @@
load("@apple_support//rules:universal_binary.bzl", _universal_binary = "universal_binary")
def wrap_as_universal_binary(rule, *, name, visibility = None, **kwargs):
internal_name = "internal/%s" % name
universal_name = "universal/%s" % name
rule(
name = internal_name,
visibility = ["//visibility:private"],
**kwargs
)
_universal_binary(
name = universal_name,
target_compatible_with = ["@platforms//os:macos"],
binary = internal_name,
visibility = ["//visibility:private"],
)
native.alias(
name = name,
actual = select({
"@platforms//os:macos": universal_name,
"//conditions:default": internal_name,
}),
visibility = visibility,
)