Skip to content

Commit 8067687

Browse files
authored
zig -> llvm + oci (#198)
* zig -> llvm - add rules_oci - update language level to 21 * bazel mod tidy
1 parent d38a01d commit 8067687

File tree

7 files changed

+820
-6263
lines changed

7 files changed

+820
-6263
lines changed

.ijwb/.bazelproject

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ additional_languages:
1616
scala
1717
go
1818

19-
java_language_level: 17
19+
java_language_level: 21
2020

2121
build_flags:
2222
--enable_workspace

MODULE.bazel

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ module(
33
version = "1.0",
44
)
55

6+
bazel_dep(name = "toolchains_llvm", version = "1.0.0")
7+
git_override(
8+
module_name = "toolchains_llvm",
9+
commit = "1d685a99db5f1e6523c392e7dfaced583062cbc4",
10+
remote = "https://github.com/bazel-contrib/toolchains_llvm",
11+
)
12+
613
bazel_dep(name = "rules_python", version = "0.33.2")
714
bazel_dep(name = "protobuf", version = "27.2", repo_name = "com_google_protobuf")
815
bazel_dep(name = "grpc", version = "1.63.1.bcr.1", repo_name = "com_github_grpc_grpc")
@@ -12,13 +19,6 @@ bazel_dep(name = "apple_support", version = "1.15.1", repo_name = "build_bazel_a
1219
bazel_dep(name = "rules_cc", version = "0.0.9")
1320
bazel_dep(name = "platforms", version = "0.0.10")
1421
bazel_dep(name = "abseil-cpp", version = "20240116.2", repo_name = "com_google_absl")
15-
bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0")
16-
17-
toolchains = use_extension("@hermetic_cc_toolchain//toolchain:ext.bzl", "toolchains")
18-
use_repo(toolchains, "zig_sdk")
19-
20-
register_toolchains()
21-
2222
bazel_dep(name = "rules_jvm_external", version = "6.2")
2323
bazel_dep(name = "rules_go", version = "0.48.1", repo_name = "io_bazel_rules_go")
2424
bazel_dep(name = "bazel_features", version = "1.13.0")
@@ -58,6 +58,19 @@ crate.annotation(
5858
)
5959
use_repo(crate, "crates")
6060

61+
llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm")
62+
llvm.toolchain(
63+
name = "llvm_toolchain",
64+
llvm_versions = {
65+
"": "15.0.6",
66+
"darwin-aarch64": "15.0.7",
67+
"darwin-x86_64": "15.0.7",
68+
},
69+
)
70+
use_repo(llvm, "llvm_toolchain", "llvm_toolchain_llvm")
71+
72+
register_toolchains("@llvm_toolchain//:all")
73+
6174
bazel_dep(name = "rules_java", version = "7.6.5")
6275
bazel_dep(name = "contrib_rules_jvm", version = "0.27.0")
6376
bazel_dep(name = "bazel_skylib", version = "1.7.1")
@@ -116,3 +129,18 @@ maven.install(
116129
use_repo(maven, "maven")
117130

118131
bazel_dep(name = "grpc-java", version = "1.64.0")
132+
bazel_dep(name = "rules_pkg", version = "0.10.1")
133+
bazel_dep(name = "rules_oci", version = "2.0.0-beta0")
134+
135+
# For testing, check out https://registry.bazel.build/modules/container_structure_test
136+
oci = use_extension("@rules_oci//oci:extensions.bzl", "oci")
137+
oci.pull(
138+
name = "docker_lib_ubuntu",
139+
image = "docker.io/library/ubuntu",
140+
platforms = [
141+
"linux/arm64/v8",
142+
"linux/amd64",
143+
],
144+
tag = "rolling",
145+
)
146+
use_repo(oci, "docker_lib_ubuntu", "docker_lib_ubuntu_linux_amd64", "docker_lib_ubuntu_linux_arm64_v8")

MODULE.bazel.lock

Lines changed: 742 additions & 6241 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cpp/example_service/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cc_library(
1212
cc_binary(
1313
name = "example_service",
1414
srcs = ["main.cc"],
15+
visibility = ["//visibility:public"],
1516
deps = [
1617
":example_service_lib",
1718
"@com_github_grpc_grpc//:grpc++_reflection",

oci/BUILD.bazel

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
load("@rules_oci//oci:defs.bzl", "oci_image", "oci_load")
2+
load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
3+
4+
# Packaging the binary into tar, which is needed by oci_image rule
5+
pkg_tar(
6+
name = "example_cc_grpc_tar",
7+
srcs = ["//cpp/example_service"],
8+
)
9+
10+
# Making image
11+
# C++ programs usually need some fundamental libraries such as glibc, libstdc++, etc.
12+
# Correspondigly, use language-specific distroless images.
13+
# Here we use docker.io/library/ubuntu image for this C++ program.
14+
oci_image(
15+
name = "example_cc_grpc_image",
16+
base = "@docker_lib_ubuntu",
17+
entrypoint = ["/example_service"],
18+
tars = [":example_cc_grpc_tar"],
19+
)
20+
21+
# Create tarball from oci image that can be run by container runtime.
22+
# The image is designated using `repo_tags` attribute.
23+
oci_load(
24+
name = "example_cc_grpc_image_tarball",
25+
image = ":example_cc_grpc_image",
26+
repo_tags = ["example_cc_grpc:latest"],
27+
)
28+
29+
filegroup(
30+
name = "example_cc_grpc_tarball.tar",
31+
srcs = [":example_cc_grpc_image_tarball"],
32+
output_group = "tarball",
33+
)

oci/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# OCI
2+
3+
```shell
4+
sudo apt install podman
5+
bazel run //oci:example_cc_grpc_image_tarball
6+
podman run -p 8080:8089 example_cc_grpc
7+
grpcurl -d '{"name": "Friend"}' -plaintext localhost:8080 example_service.Greeter/SayHello
8+
```

rust/helloworld_tonic/BUILD.bazel

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,16 @@
11
load("@crates//:defs.bzl", "all_crate_deps")
2-
3-
# load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
42
load("@rules_rust//rust:defs.bzl", "rust_binary")
53

6-
#cargo_build_script(
7-
# name = "build_script",
8-
# srcs = ["build.rs"],
9-
# build_script_env = {
10-
# "PROTO_PATH": "$(execpath //protos/example_service:proto_files)",
11-
# },
12-
# data = ["//protos/example_service:proto_files"],
13-
# deps = ["@crates//:tonic-build"],
14-
#)
15-
164
rust_binary(
175
name = "helloworld_tonic_server",
186
srcs = ["src/server.rs"],
197
crate_name = "helloworld_tonic",
20-
# deps = all_crate_deps() + [":build_script"],
218
deps = all_crate_deps() + ["//protos/example_service:hello_proto_rust"],
229
)
2310

2411
rust_binary(
2512
name = "helloworld_tonic_client",
2613
srcs = ["src/client.rs"],
2714
crate_name = "helloworld_tonic",
28-
# deps = all_crate_deps() + [":build_script"],
2915
deps = all_crate_deps() + ["//protos/example_service:hello_proto_rust"],
3016
)

0 commit comments

Comments
 (0)