Skip to content

Commit 66c5243

Browse files
authored
Merge pull request #254 from joyanta55/joyanta55/kube_c_bazel
Add Bazel files to support Bazel integration
2 parents 979bee9 + ae7d2e8 commit 66c5243

File tree

5 files changed

+107
-0
lines changed

5 files changed

+107
-0
lines changed

.github/workflows/build.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,11 @@ jobs:
6161
kubectl describe node
6262
cd examples/
6363
LD_LIBRARY_PATH=$GITHUB_WORKSPACE/kubernetes/build/:/usr/local/lib make memcheck
64+
- name: use bazel for examples
65+
run: |
66+
curl -LO "https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64"
67+
chmod +x bazelisk-linux-amd64
68+
sudo mv bazelisk-linux-amd64 /usr/local/bin/bazel
69+
cd examples/
70+
bazel build kube_c
71+

BUILD

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Added BUILD file in the kubernetes c client repository helps integrating the library to external Bazel users.
2+
# Following are the changes required from the external Bazel users to do.
3+
4+
# WORKSPACE
5+
6+
# load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
7+
# http_archive(
8+
# name = "rules_foreign_cc",
9+
# sha256 = "a2e6fb56e649c1ee79703e99aa0c9d13c6cc53c8d7a0cbb8797ab2888bbc99a3",
10+
# strip_prefix = "rules_foreign_cc-0.12.0",
11+
# url = "https://github.com/bazelbuild/rules_foreign_cc/releases/download/0.12.0/rules_foreign_cc-0.12.0.tar.gz",
12+
# )
13+
14+
# load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
15+
16+
# # This sets up some common toolchains for building targets. For more details, please see
17+
# # https://bazelbuild.github.io/rules_foreign_cc/0.12.0/flatten.html#rules_foreign_cc_dependencies
18+
# rules_foreign_cc_dependencies()
19+
20+
# load("@bazel_features//:deps.bzl", "bazel_features_deps")
21+
22+
# bazel_features_deps()
23+
24+
# http_archive(
25+
# name = "kubernetes_c_client",
26+
# sha256 = "10d0c5af1a52a1d2da379e8e45b53978b9dedc90ff195bdff171ae17c1f1dd50",
27+
# strip_prefix = "c-0.11.0",
28+
# url = "https://github.com/kubernetes-client/c/archive/refs/tags/v0.11.0.zip",
29+
# )
30+
31+
# BUILD file:
32+
33+
# load("@rules_cc//cc:defs.bzl", "cc_binary")
34+
# load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
35+
# load("@rules_foreign_cc//foreign_cc:defs.bzl", "make")
36+
# cmake(
37+
# name = "kube_c",
38+
# build_args = [
39+
# "--verbose",
40+
# "--", # <- Pass remaining options to the native tool.
41+
# "-j 1",
42+
# ],
43+
# lib_source = "@kubernetes_c_client//:kubernetes",
44+
# out_shared_libs = ["libkubernetes.so"],
45+
# )
46+
47+
# cc_binary(
48+
# name = "create_pod",
49+
# srcs = ["create_pod.c"],
50+
# deps = [":kube_c"],
51+
# )
52+
53+
# cc_binary(
54+
# name = "list_pod",
55+
# srcs = ["list_pod.c"],
56+
# deps = [":kube_c"],
57+
# )
58+
59+
# Make sure you install the pre-requisites (libyaml,libwebsocket etc.) beforehand. A working example can be found here
60+
61+
# https://github.com/joyanta55/kubernetes_c_bazel/tree/main
62+
63+
# In summary, the below filegroup allows to import kubernetes C client (i.e. lib_source = "@kubernetes_c_client//:kubernetes"), use cmake or make bazel rule provided by rules_foreign_cc (https://github.com/bazel-contrib/rules_foreign_cc) to build and use.
64+
filegroup(
65+
name = "kubernetes",
66+
srcs = glob(["kubernetes/**"]),
67+
visibility = ["//visibility:public"],
68+
)

MODULE.bazel

Whitespace-only changes.

WORKSPACE

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2+
http_archive(
3+
name = "rules_foreign_cc",
4+
sha256 = "a2e6fb56e649c1ee79703e99aa0c9d13c6cc53c8d7a0cbb8797ab2888bbc99a3",
5+
strip_prefix = "rules_foreign_cc-0.12.0",
6+
url = "https://github.com/bazelbuild/rules_foreign_cc/releases/download/0.12.0/rules_foreign_cc-0.12.0.tar.gz",
7+
)
8+
9+
load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
10+
11+
# This sets up some common toolchains for building targets. For more details, please see
12+
# https://bazelbuild.github.io/rules_foreign_cc/0.12.0/flatten.html#rules_foreign_cc_dependencies
13+
rules_foreign_cc_dependencies()
14+
15+
load("@bazel_features//:deps.bzl", "bazel_features_deps")
16+
17+
bazel_features_deps()
18+

examples/BUILD

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
load("@rules_cc//cc:defs.bzl", "cc_binary")
2+
load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")
3+
load("@rules_foreign_cc//foreign_cc:defs.bzl", "make")
4+
cmake(
5+
name = "kube_c",
6+
build_args = [
7+
"--verbose",
8+
"--", # <- Pass remaining options to the native tool.
9+
"-j 1",
10+
],
11+
lib_source = "//:kubernetes",
12+
out_shared_libs = ["libkubernetes.so"],
13+
)

0 commit comments

Comments
 (0)