Skip to content

Commit 4ed256d

Browse files
committed
chore(codegen): clean up codegen make rules and scripts
1 parent e6bda79 commit 4ed256d

File tree

7 files changed

+85
-195
lines changed

7 files changed

+85
-195
lines changed

Makefile

Lines changed: 23 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,14 @@ PKG := github.com/operator-framework/operator-lifecycle-manager
1313
MOD_FLAGS := $(shell (go version | grep -q -E "1\.1[1-9]") && echo -mod=vendor)
1414
CMDS := $(shell go list $(MOD_FLAGS) ./cmd/...)
1515
TCMDS := $(shell go list $(MOD_FLAGS) ./test/e2e/...)
16-
CODEGEN_INTERNAL := ./vendor/k8s.io/code-generator/generate_internal_groups.sh
17-
MOCKGEN := ./scripts/generate_mocks.sh
18-
# counterfeiter := $(GOBIN)/counterfeiter
19-
# mockgen := $(GOBIN)/mockgen
16+
MOCKGEN := ./scripts/update_mockgen.sh
17+
CODEGEN := ./scripts/update_codegen.sh
2018
IMAGE_REPO := quay.io/operator-framework/olm
2119
IMAGE_TAG ?= "dev"
2220
SPECIFIC_UNIT_TEST := $(if $(TEST),-run $(TEST),)
2321
LOCAL_NAMESPACE := "olm"
2422
export GO111MODULE=on
25-
CONTROLLER_GEN := go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen
23+
CONTROLLER_GEN := go run -mod=vendor ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen
2624
YQ_INTERNAL := go run ./vendor/github.com/mikefarah/yq/v2/
2725

2826
# ART builds are performed in dist-git, with content (but not commits) copied
@@ -141,59 +139,32 @@ clean:
141139
@rm -rf test/e2e/log
142140
@rm -rf e2e.namespace
143141

144-
# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
145-
# use container-codegen
146-
codegen: export GO111MODULE := off
147-
codegen:
148-
cp scripts/generate_internal_groups.sh vendor/k8s.io/code-generator/generate_internal_groups.sh
149-
mkdir -p vendor/k8s.io/code-generator/hack
150-
cp boilerplate.go.txt vendor/k8s.io/code-generator/hack/boilerplate.go.txt
151-
go run vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go --logtostderr -i ./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/k8s.io/apimachinery/pkg/version,./pkg/package-server/apis/operators/v1,./pkg/package-server/apis/apps/v1alpha1,./pkg/api/apis/operators/v1alpha1,./pkg/lib/version -p $(PKG)/pkg/package-server/apis/openapi -O zz_generated.openapi -h boilerplate.go.txt -r /dev/null
152-
$(CODEGEN_INTERNAL) deepcopy,conversion,client,lister,informer $(PKG)/pkg/api/client $(PKG)/pkg/api/apis $(PKG)/pkg/api/apis "operators:v1alpha1,v1"
153-
$(CODEGEN_INTERNAL) all $(PKG)/pkg/package-server/client $(PKG)/pkg/package-server/apis $(PKG)/pkg/package-server/apis "operators:v1 apps:v1alpha1"
142+
143+
# Generate manifests for CRDs
144+
manifests: vendor
154145
$(CONTROLLER_GEN) schemapatch:manifests=./deploy/chart/templates paths=./pkg/api/apis/operators/v1alpha1/... output:dir=./deploy/chart/templates
155146
$(CONTROLLER_GEN) schemapatch:manifests=./deploy/chart/templates paths=./pkg/api/apis/operators/v1/... output:dir=./deploy/chart/templates
156147
$(YQ_INTERNAL) w --inplace deploy/chart/templates/0000_50_olm_03-clusterserviceversion.crd.yaml spec.validation.openAPIV3Schema.properties.spec.properties.install.properties.spec.properties.deployments.items.properties.spec.properties.template.properties.metadata.x-kubernetes-preserve-unknown-fields true
157-
container-codegen:
158-
docker build -t olm:codegen -f codegen.Dockerfile .
159-
docker run --name temp-codegen olm:codegen /bin/true
160-
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/. ./pkg/api/client
161-
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/. ./pkg/api/apis
162-
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/. ./pkg/package-server/apis
163-
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/client/. ./pkg/package-server/client
164-
docker rm temp-codegen
165-
166-
container-mockgen:
167-
docker build -t olm:mockgen -f mockgen.Dockerfile . --no-cache
168-
docker run --name temp-mockgen olm:mockgen /bin/true
169-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/. ./pkg/api/wrappers/wrappersfakes
170-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/. ./pkg/lib/operatorlister/operatorlisterfakes
171-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/lib/operatorclient/operatorclientmocks/. ./pkg/lib/operatorclient/operatorclientmocks
172-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/fakes/. ./pkg/fakes
173-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/controller/registry/resolver/fakes/. ./pkg/controller/registry/resolver/fakes
174-
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/package-server/client/fakes/. ./pkg/package-server/client/fakes
175-
docker rm temp-mockgen
176-
177-
verify: verify-codegen
178-
179-
# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
180-
verify-codegen: codegen
181-
git diff --exit-code
182148

183-
verify-release: ver=$(shell cat OLM_VERSION)
184-
verify-release:
185-
rm -rf manifests
186-
mkdir manifests
187-
./scripts/package_release.sh $(ver) manifests deploy/ocp/values.yaml
188-
# requires gnu sed if on mac
189-
find ./manifests -type f -exec sed -i "/^#/d" {} \;
190-
find ./manifests -type f -exec sed -i "1{/---/d}" {} \;
191-
git diff --exit-code
149+
# Generate clients, listers, and informers
150+
codegen:
151+
$(CODEGEN)
192152

153+
# Generate mock types.
193154
mockgen:
194155
$(MOCKGEN)
195156

196-
gen-all: container-codegen container-mockgen
157+
# Generates everything.
158+
gen-all: codegen mockgen manifests
159+
160+
diff:
161+
git diff --exit-code
162+
163+
verify-codegen: codegen diff
164+
verify-mockgen: mockgen diff
165+
verify-manifests: manifests diff
166+
verify: verify-codegen verify-mockgen verify-manifests
167+
197168

198169
# before running release, bump the version in OLM_VERSION and push to master,
199170
# then tag those builds in quay with the version in OLM_VERSION
@@ -209,6 +180,8 @@ release:
209180
find ./manifests -type f -exec sed -i "/^#/d" {} \;
210181
find ./manifests -type f -exec sed -i "1{/---/d}" {} \;
211182

183+
verify-release: release diff
184+
212185
package: olmref=$(shell docker inspect --format='{{index .RepoDigests 0}}' quay.io/operator-framework/olm:$(ver))
213186
package:
214187
ifndef target
@@ -226,10 +199,6 @@ ifeq ($(quickstart), true)
226199
./scripts/package_quickstart.sh deploy/$(target)/manifests/$(ver) deploy/$(target)/quickstart/olm.yaml deploy/$(target)/quickstart/crds.yaml deploy/$(target)/quickstart/install.sh
227200
endif
228201

229-
##########################
230-
# OLM - Commands #
231-
##########################
232-
233202
.PHONY: run-console-local
234203
run-console-local:
235204
@echo Running script to run the OLM console locally:

codegen.Dockerfile

Lines changed: 0 additions & 8 deletions
This file was deleted.

mockgen.Dockerfile

Lines changed: 0 additions & 12 deletions
This file was deleted.

scripts/generate_internal_groups.sh

Lines changed: 0 additions & 110 deletions
This file was deleted.

scripts/update_codegen.sh

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2017 The Kubernetes Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
set -o errexit
18+
set -o nounset
19+
set -o pipefail
20+
21+
SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
22+
CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)}
23+
24+
# create a temporary directory to generate code in and ensure we clean it up on exit
25+
OUTPUT_BASE=$(mktemp -d)
26+
trap 'rm -rf "${OUTPUT_BASE}"' ERR EXIT
27+
28+
MODULE="github.com/operator-framework/operator-lifecycle-manager"
29+
30+
# generate the code with:
31+
# --output-base because this script should also be able to run inside the vendor dir of
32+
# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
33+
# instead of the $GOPATH directly. For normal projects this can be dropped.
34+
bash "${CODEGEN_PKG}/generate-internal-groups.sh" "deepcopy,conversion,informer,lister" \
35+
"${MODULE}/pkg/api/client" \
36+
"${MODULE}/pkg/api/apis" \
37+
"${MODULE}/pkg/api/apis" \
38+
"operators:v1alpha1,v1" \
39+
--output-base "${OUTPUT_BASE}" \
40+
--go-header-file "${SCRIPT_ROOT}/boilerplate.go.txt"
41+
42+
bash "${CODEGEN_PKG}/generate-internal-groups.sh" "client" \
43+
"${MODULE}/pkg/api/client" \
44+
"${MODULE}/pkg/api/apis" \
45+
"${MODULE}/pkg/api/apis" \
46+
"operators:v1alpha1,v1" \
47+
--output-base "${OUTPUT_BASE}" \
48+
--go-header-file "${SCRIPT_ROOT}/boilerplate.go.txt"
49+
50+
export OPENAPI_EXTRA_PACKAGES="${MODULE}/pkg/api/apis/operators/v1alpha1,${MODULE}/pkg/lib/version"
51+
bash "${CODEGEN_PKG}/generate-internal-groups.sh" all \
52+
"${MODULE}/pkg/package-server/client" \
53+
"${MODULE}/pkg/package-server/apis" \
54+
"${MODULE}/pkg/package-server/apis" \
55+
"operators:v1" \
56+
--output-base "${OUTPUT_BASE}" \
57+
--go-header-file "${SCRIPT_ROOT}/boilerplate.go.txt"
58+
59+
# copy the generated resources
60+
cp -R "${OUTPUT_BASE}/${MODULE}/." "${SCRIPT_ROOT}"

scripts/generate_mocks.sh renamed to scripts/update_mockgen.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ go install -mod=vendor ./vendor/github.com/maxbrunsfeld/counterfeiter/v6
77
# generate fakes and mocks
88
go generate -mod=vendor ./pkg/...
99
counterfeiter -o ./pkg/fakes/client-go/listers/fake_v1_service_account_lister.go ./vendor/k8s.io/client-go/listers/core/v1 ServiceAccountLister
10-
counterfeiter -o ./pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go ./vendor/k8s.io/client-go/listers/core/v1 ServiceAccountNamespaceLister
10+
counterfeiter -o ./pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go ./vendor/k8s.io/client-go/listers/core/v1 ServiceAccountNamespaceLister

tools.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,7 @@ import (
66
_ "github.com/golang/mock/mockgen"
77
_ "github.com/maxbrunsfeld/counterfeiter/v6"
88
_ "github.com/mikefarah/yq/v2"
9-
_ "k8s.io/code-generator/cmd/client-gen"
10-
_ "k8s.io/code-generator/cmd/conversion-gen/"
11-
_ "k8s.io/code-generator/cmd/deepcopy-gen"
12-
_ "k8s.io/code-generator/cmd/defaulter-gen"
13-
_ "k8s.io/code-generator/cmd/go-to-protobuf"
14-
_ "k8s.io/code-generator/cmd/import-boss"
15-
_ "k8s.io/code-generator/cmd/informer-gen"
16-
_ "k8s.io/code-generator/cmd/lister-gen"
17-
_ "k8s.io/code-generator/cmd/openapi-gen"
18-
_ "k8s.io/code-generator/cmd/set-gen"
9+
_ "k8s.io/code-generator"
1910
_ "k8s.io/kube-openapi/cmd/openapi-gen"
2011
_ "sigs.k8s.io/controller-tools/cmd/controller-gen"
2112
)

0 commit comments

Comments
 (0)