Skip to content

Commit

Permalink
Merge pull request kubernetes#80125 from sttts/sttts-bazel-openapi-fix
Browse files Browse the repository at this point in the history
bazel: add openapi generation for non-main spec and fix main spec
  • Loading branch information
k8s-ci-robot authored Jul 19, 2019
2 parents 65fc256 + 53a7dcd commit 3c332a9
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 8 deletions.
12 changes: 10 additions & 2 deletions build/code_generation.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,15 @@ def openapi_deps():
deps.extend([bazel_go_library(pkg) for pkg in tags_values_pkgs["openapi-gen"]["true"]])
return deps

def gen_openapi(outs, output_pkg):
def applies(pkg, prefixes, default):
if prefixes == None or len(prefixes) == 0:
return default
for prefix in prefixes:
if pkg == prefix or pkg.startswith(prefix + "/"):
return True
return False

def gen_openapi(outs, output_pkg, include_pkgs=[], exclude_pkgs=[]):
"""Calls openapi-gen to produce the zz_generated.openapi.go file,
which should be provided in outs.
output_pkg should be set to the full go package name for this generated file.
Expand All @@ -72,7 +80,7 @@ def gen_openapi(outs, output_pkg):
"--output-file-base zz_generated.openapi",
"--output-package " + output_pkg,
"--report-filename tmp_api_violations.report",
"--input-dirs " + ",".join([go_pkg(pkg) for pkg in tags_values_pkgs["openapi-gen"]["true"]]),
"--input-dirs " + ",".join([go_pkg(pkg) for pkg in tags_values_pkgs["openapi-gen"]["true"] if applies(pkg, include_pkgs, True) and not applies(pkg, exclude_pkgs, False)]),
"&& cp $$GOPATH/src/" + output_pkg + "/zz_generated.openapi.go $$GO_GENRULE_EXECROOT/$(location :zz_generated.openapi.go)",
"&& rm tmp_api_violations.report",
]),
Expand Down
2 changes: 1 addition & 1 deletion hack/verify-bazel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fi

# Remove generated files prior to running kazel.
# TODO(spxtr): Remove this line once Bazel is the only way to build.
rm -f "${KUBE_ROOT}/pkg/generated/openapi/zz_generated.openapi.go"
rm -f "${KUBE_ROOT}/{pkg/generated,staging/src/k8s.io/apiextensions-apiserver/pkg/client,staging/src/k8s.io/kube-aggregator/pkg/client}/openapi/zz_generated.openapi.go"

_tmpdir="$(kube::realpath "$(mktemp -d -t verify-bazel.XXXXXX)")"
kube::util::trap_add "rm -rf ${_tmpdir}" EXIT
Expand Down
4 changes: 4 additions & 0 deletions pkg/generated/openapi/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

gen_openapi(
outs = ["zz_generated.openapi.go"],
exclude_pkgs = [
"staging/src/k8s.io/code-generator",
"staging/src/k8s.io/sample-apiserver",
],
output_pkg = "k8s.io/kubernetes/pkg/generated/openapi",
)

Expand Down
20 changes: 15 additions & 5 deletions staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/BUILD
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
package(default_visibility = ["//visibility:public"])

load("//build:code_generation.bzl", "gen_openapi", "openapi_deps")
load("@io_bazel_rules_go//go:def.bzl", "go_library")

gen_openapi(
outs = ["zz_generated.openapi.go"],
include_pkgs = [
"staging/src/k8s.io/apimachinery/pkg/apis/meta/v1",
"staging/src/k8s.io/apimachinery/pkg/runtime",
"staging/src/k8s.io/apimachinery/pkg/version",
"staging/src/k8s.io/sample-apiserver",
],
output_pkg = "k8s.io/sample-apiserver/pkg/generated/openapi",
)

go_library(
name = "go_default_library",
srcs = ["zz_generated.openapi.go"],
importmap = "k8s.io/kubernetes/vendor/k8s.io/sample-apiserver/pkg/generated/openapi",
importpath = "k8s.io/sample-apiserver/pkg/generated/openapi",
visibility = ["//visibility:public"],
deps = [
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/k8s.io/kube-openapi/pkg/common:go_default_library",
],
deps = openapi_deps(), # keep
)

filegroup(
Expand Down

0 comments on commit 3c332a9

Please sign in to comment.