From 53a7dcdee95099e27147a90f5a64d68dbfb33555 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Sat, 13 Jul 2019 11:00:53 +0200 Subject: [PATCH] bazel: add openapi generation for non-main spec and fix main spec --- build/code_generation.bzl | 12 +++++++++-- hack/verify-bazel.sh | 2 +- pkg/generated/openapi/BUILD | 4 ++++ .../pkg/generated/openapi/BUILD | 20 ++++++++++++++----- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/build/code_generation.bzl b/build/code_generation.bzl index b398de8653b..eed223eb86b 100644 --- a/build/code_generation.bzl +++ b/build/code_generation.bzl @@ -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", ]), diff --git a/hack/verify-bazel.sh b/hack/verify-bazel.sh index 47912b9d921..4b2f8f7e1a6 100755 --- a/hack/verify-bazel.sh +++ b/hack/verify-bazel.sh @@ -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 diff --git a/pkg/generated/openapi/BUILD b/pkg/generated/openapi/BUILD index 2f7428dc574..db1e52ea901 100644 --- a/pkg/generated/openapi/BUILD +++ b/pkg/generated/openapi/BUILD @@ -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", ) diff --git a/staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/BUILD b/staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/BUILD index 7e4e36f6e31..1531c7db6ff 100644 --- a/staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/BUILD +++ b/staging/src/k8s.io/sample-apiserver/pkg/generated/openapi/BUILD @@ -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(