Skip to content

Commit

Permalink
Refactor Go SDK label templating to support future boringcrypto SDK (#…
Browse files Browse the repository at this point in the history
…1449)

Summary: Refactor Go SDK label templating to support future boringcrypto
SDK

This PR adds the scaffolding needed to add a boringcrypto go SDK. This
SDK will be used in a future change to add TLS tracing tests for
binaries using boringcrypto, which addresses #597. It wasn't known that
boringcrypto was supported at the time, but we should still validate
that it is functional.

`rules_go` does not support go SDKs that use the same version with
different `GOEXPERIMENT`s enabled (will be following up to create a
GitHub issue on the project). This is an issue because boringcrypto is
enabled by setting `GOEXPERIMENT=boringcrypto` as mentioned
[here](https://go.googlesource.com/go/+/refs/heads/dev.boringcrypto/README.boringcrypto.md).
Until `rules_go` supports this, the proposed plan is to maintain a
previous patch version of our latest supported version of go as the
"boringcrypto go SDK". The description below should explain the process:

```
# rules_go doesn't support using multiple SDKs with the same version and differing
# GOEXPERIMENTs. Until this is addressed, go_sdk_boringcrypto is meant to be 1 bug fix
# version behind our latest go release. In the event our primary toolchain is upgraded
# to the first release of a new major version (i.e. 1.20.0) an rc suffixed build should
# be used for go_sdk_boringcrypto (1.20rcX) until the first minor release is available (1.20.1).
```

Relevant Issues: #597 #692

Type of change: /kind test-infra

Test Plan: Existing tests pass and verified this supports the
boringcrypto tests on a branch with the full set of changes

---------

Signed-off-by: Dom Del Nano <[email protected]>
  • Loading branch information
ddelnano authored Jun 8, 2023
1 parent e6c89b9 commit c9e7280
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 40 deletions.
11 changes: 11 additions & 0 deletions bazel/pl_build_system.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,19 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("@rules_python//python:defs.bzl", "py_test")
load("//bazel:toolchain_transitions.bzl", "qemu_interactive_runner")

pl_boringcrypto_go_sdk = ["1.20.4"]
pl_supported_go_sdk_versions = ["1.16", "1.17", "1.18", "1.19", "1.20"]

# The last version in this list corresponds to the boringcrypto go sdk version.
pl_all_supported_go_sdk_versions = pl_supported_go_sdk_versions + pl_boringcrypto_go_sdk

def pl_go_sdk_version_template_to_label(tpl, version):
# If version matches sdk configured to use boringcrypto
# the label name should not contain the sdk version string
if version in pl_boringcrypto_go_sdk:
return tpl % "boringcrypto"
return tpl % version.replace(".", "_")

def pl_copts():
posix_options = [
# Warnings setup.
Expand Down
4 changes: 2 additions & 2 deletions src/stirling/obj_tools/testdata/go/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# SPDX-License-Identifier: Apache-2.0

load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand All @@ -39,7 +39,7 @@ pl_go_binary(

[
go_cross_binary(
name = "test_go_%s_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("test_go_%s_binary", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":test_go_binary",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# SPDX-License-Identifier: Apache-2.0

load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand All @@ -39,7 +39,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_grpc_client" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_client", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":client",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# SPDX-License-Identifier: Apache-2.0

load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand All @@ -38,7 +38,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_grpc_server" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_server", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":server",
Expand All @@ -48,8 +48,8 @@ pl_go_binary(

[
filegroup(
name = "golang_%s_grpc_server_with_certs" % sdk_version.replace(".", "_"),
srcs = [":golang_%s_grpc_server" % sdk_version.replace(".", "_")],
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_server_with_certs", sdk_version),
srcs = [pl_go_sdk_version_template_to_label(":golang_%s_grpc_server", sdk_version)],
data = [
"https-server.crt",
"https-server.key",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#
# SPDX-License-Identifier: Apache-2.0

load("//bazel:pl_build_system.bzl", "pl_cc_test_library")
load("//bazel:pl_build_system.bzl", "pl_cc_test_library", "pl_go_sdk_version_template_to_label")

# TODO(vihang): load this from pl_build_system once we remove go 1.16
pl_supported_go_sdk_versions = [
Expand Down Expand Up @@ -58,11 +58,11 @@ pl_cc_test_library(

[
pl_cc_test_library(
name = "go_%s_grpc_client_container" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("go_%s_grpc_client_container", sdk_version),
srcs = [],
hdrs = ["go_%s_grpc_client_container.h" % sdk_version.replace(".", "_")],
hdrs = [pl_go_sdk_version_template_to_label("go_%s_grpc_client_container.h", sdk_version)],
data = [
"//src/stirling/testing/demo_apps/go_grpc_tls_pl/client:golang_%s_grpc_tls_client.tar" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_grpc_tls_pl/client:golang_%s_grpc_tls_client.tar", sdk_version),
],
deps = ["//src/common/testing/test_utils:cc_library"],
)
Expand All @@ -71,11 +71,11 @@ pl_cc_test_library(

[
pl_cc_test_library(
name = "go_%s_grpc_server_container" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("go_%s_grpc_server_container", sdk_version),
srcs = [],
hdrs = ["go_%s_grpc_server_container.h" % sdk_version.replace(".", "_")],
hdrs = [pl_go_sdk_version_template_to_label("go_%s_grpc_server_container.h", sdk_version)],
data = [
"//src/stirling/testing/demo_apps/go_grpc_tls_pl/server:golang_%s_grpc_tls_server.tar" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_grpc_tls_pl/server:golang_%s_grpc_tls_server.tar", sdk_version),
],
deps = ["//src/common/testing/test_utils:cc_library"],
)
Expand All @@ -84,11 +84,11 @@ pl_cc_test_library(

[
pl_cc_test_library(
name = "go_%s_tls_client_container" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("go_%s_tls_client_container", sdk_version),
srcs = [],
hdrs = ["go_%s_tls_client_container.h" % sdk_version.replace(".", "_")],
hdrs = [pl_go_sdk_version_template_to_label("go_%s_tls_client_container.h", sdk_version)],
data = [
"//src/stirling/testing/demo_apps/go_https/client:golang_%s_https_client.tar" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_https/client:golang_%s_https_client.tar", sdk_version),
],
deps = ["//src/common/testing/test_utils:cc_library"],
)
Expand All @@ -97,11 +97,11 @@ pl_cc_test_library(

[
pl_cc_test_library(
name = "go_%s_tls_server_container" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("go_%s_tls_server_container", sdk_version),
srcs = [],
hdrs = ["go_%s_tls_server_container.h" % sdk_version.replace(".", "_")],
hdrs = [pl_go_sdk_version_template_to_label("go_%s_tls_server_container.h", sdk_version)],
data = [
"//src/stirling/testing/demo_apps/go_https/server:golang_%s_https_server.tar" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_https/server:golang_%s_https_server.tar", sdk_version),
],
deps = ["//src/common/testing/test_utils:cc_library"],
)
Expand Down
10 changes: 5 additions & 5 deletions src/stirling/testing/demo_apps/go_grpc_tls_pl/client/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_layer")
load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand Down Expand Up @@ -47,7 +47,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_grpc_tls_client_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_tls_client_binary", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":client",
Expand All @@ -57,17 +57,17 @@ pl_go_binary(

[
container_image(
name = "golang_%s_grpc_tls_client" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_tls_client", sdk_version),
base = "//:pl_go_base_image",
entrypoint = [
"./golang_%s_grpc_tls_client_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("./golang_%s_grpc_tls_client_binary", sdk_version),
"--client_tls_cert=/certs/client.crt",
"--client_tls_key=/certs/client.key",
"--tls_ca_cert=/certs/ca.crt",
"--count=1",
],
files = [
":golang_%s_grpc_tls_client_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label(":golang_%s_grpc_tls_client_binary", sdk_version),
],
layers = [":certs_layer"],
)
Expand Down
10 changes: 5 additions & 5 deletions src/stirling/testing/demo_apps/go_grpc_tls_pl/server/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

load("@io_bazel_rules_docker//container:container.bzl", "container_image", "container_layer")
load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand Down Expand Up @@ -48,7 +48,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_grpc_tls_server_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_tls_server_binary", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":server",
Expand All @@ -58,16 +58,16 @@ pl_go_binary(

[
container_image(
name = "golang_%s_grpc_tls_server" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_grpc_tls_server", sdk_version),
base = "//:pl_go_base_image",
entrypoint = [
"./golang_%s_grpc_tls_server_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("./golang_%s_grpc_tls_server_binary", sdk_version),
"--server_tls_cert=/certs/server.crt",
"--server_tls_key=/certs/server.key",
"--tls_ca_cert=/certs/ca.crt",
],
files = [
":golang_%s_grpc_tls_server_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label(":golang_%s_grpc_tls_server_binary", sdk_version),
],
layers = [":certs_layer"],
)
Expand Down
8 changes: 4 additions & 4 deletions src/stirling/testing/demo_apps/go_https/client/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# SPDX-License-Identifier: Apache-2.0

load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_image", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_image", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand All @@ -37,7 +37,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_client_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_client_binary", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":client",
Expand All @@ -47,8 +47,8 @@ pl_go_binary(

[
pl_go_image(
name = "golang_%s_https_client" % sdk_version.replace(".", "_"),
binary = ":golang_%s_client_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_https_client", sdk_version),
binary = pl_go_sdk_version_template_to_label(":golang_%s_client_binary", sdk_version),
)
for sdk_version in pl_supported_go_sdk_versions
]
10 changes: 5 additions & 5 deletions src/stirling/testing/demo_apps/go_https/server/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

load("@io_bazel_rules_docker//container:container.bzl", "container_image")
load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_supported_go_sdk_versions")
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")

package(default_visibility = ["//src/stirling:__subpackages__"])

Expand Down Expand Up @@ -57,7 +57,7 @@ pl_go_binary(

[
go_cross_binary(
name = "golang_%s_server_binary" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_server_binary", sdk_version),
sdk_version = sdk_version,
tags = ["manual"],
target = ":server",
Expand All @@ -67,15 +67,15 @@ pl_go_binary(

[
container_image(
name = "golang_%s_https_server" % sdk_version.replace(".", "_"),
name = pl_go_sdk_version_template_to_label("golang_%s_https_server", sdk_version),
base = "//:pl_go_base_image",
entrypoint = [
"./golang_%s_server_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label("./golang_%s_server_binary", sdk_version),
"--cert=server.crt",
"--key=server.key",
],
files = [
":golang_%s_server_binary" % sdk_version.replace(".", "_"),
pl_go_sdk_version_template_to_label(":golang_%s_server_binary", sdk_version),
":server_certs",
],
)
Expand Down

0 comments on commit c9e7280

Please sign in to comment.