bazel: add openapi generation for non-main spec and fix main spec

This commit is contained in:
Dr. Stefan Schimanski 2019-07-13 11:00:53 +02:00
parent 87b744715e
commit 53a7dcdee9
4 changed files with 30 additions and 8 deletions

View File

@ -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.
@ -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",
]),

View File

@ -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

View File

@ -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",
)

View File

@ -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(