Skip to content

Commit 4bb5211

Browse files
authored
Merge pull request kubernetes#90010 from deads2k/verify-beta
generate metadata for requiring transition from beta
2 parents da5e6ad + 4e4418f commit 4bb5211

File tree

12 files changed

+1067
-1
lines changed

12 files changed

+1067
-1
lines changed

build/root/Makefile.generated_files

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ SHELL := /bin/bash
3535
# This rule collects all the generated file sets into a single rule. Other
3636
# rules should depend on this to ensure generated files are rebuilt.
3737
.PHONY: generated_files
38-
generated_files: gen_deepcopy gen_defaulter gen_conversion gen_openapi gen_bindata
38+
generated_files: gen_prerelease_lifecycle gen_deepcopy gen_defaulter gen_conversion gen_openapi gen_bindata
3939

4040
#
4141
# Helper logic to calculate Go's dependency DAG ourselves.
@@ -112,6 +112,90 @@ ALL_K8S_TAG_FILES := $(shell \
112112
#
113113

114114

115+
# prerelease-lifecycle generation
116+
#
117+
# Any package that wants prerelease-lifecycle functions generated must include a
118+
# comment-tag in column 0 of one file of the form:
119+
# // +k8s:prerelease-lifecycle-gen=true
120+
#
121+
122+
# The result file, in each pkg, of deep-copy generation.
123+
PRERELEASE_LIFECYCLE_BASENAME := $(GENERATED_FILE_PREFIX)prerelease-lifecycle
124+
PRERELEASE_LIFECYCLE_FILENAME := $(PRERELEASE_LIFECYCLE_BASENAME).go
125+
126+
# The tool used to generate deep copies.
127+
PRERELEASE_LIFECYCLE_GEN := $(BIN_DIR)/prerelease-lifecycle-gen
128+
129+
# Find all the directories that request deep-copy generation.
130+
ifeq ($(DBG_MAKEFILE),1)
131+
$(warning ***** finding all +k8s:prerelease-lifecycle-gen tags)
132+
endif
133+
PRERELEASE_LIFECYCLE_DIRS := $(shell \
134+
grep --color=never -l '+k8s:prerelease-lifecycle-gen=' $(ALL_K8S_TAG_FILES) \
135+
| xargs -n1 dirname \
136+
| LC_ALL=C sort -u \
137+
)
138+
PRERELEASE_LIFECYCLE_FILES := $(addsuffix /$(PRERELEASE_LIFECYCLE_FILENAME), $(PRERELEASE_LIFECYCLE_DIRS))
139+
140+
# Reset the list of packages that need generation.
141+
$(shell mkdir -p $$(dirname $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN)))
142+
$(shell rm -f $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo)
143+
144+
# This rule aggregates the set of files to generate and then generates them all
145+
# in a single run of the tool.
146+
.PHONY: gen_prerelease_lifecycle
147+
gen_prerelease_lifecycle: $(PRERELEASE_LIFECYCLE_GEN) $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo
148+
if [[ -s $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo ]]; then \
149+
pkgs=$$(cat $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo | paste -sd, -); \
150+
if [[ "$(DBG_CODEGEN)" == 1 ]]; then \
151+
echo "DBG: running $(PRERELEASE_LIFECYCLE_GEN) for $$pkgs"; \
152+
fi; \
153+
./hack/run-in-gopath.sh $(PRERELEASE_LIFECYCLE_GEN) \
154+
--v $(KUBE_VERBOSE) \
155+
--logtostderr \
156+
-i "$$pkgs" \
157+
-O $(PRERELEASE_LIFECYCLE_BASENAME) \
158+
"$$@"; \
159+
fi \
160+
161+
# For each dir in PRERELEASE_LIFECYCLE_DIRS, this establishes a dependency between the
162+
# output file and the input files that should trigger a rebuild.
163+
#
164+
# Note that this is a deps-only statement, not a full rule (see below). This
165+
# has to be done in a distinct step because wildcards don't work in static
166+
# pattern rules.
167+
#
168+
# The '$(eval)' is needed because this has a different RHS for each LHS, and
169+
# would otherwise produce results that make can't parse.
170+
$(foreach dir, $(PRERELEASE_LIFECYCLE_DIRS), $(eval \
171+
$(dir)/$(PRERELEASE_LIFECYCLE_FILENAME): $($(PRJ_SRC_PATH)/$(dir)) \
172+
))
173+
174+
# How to regenerate deep-copy code. This is a little slow to run, so we batch
175+
# it up and trigger the batch from the 'generated_files' target.
176+
$(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo: $(PRERELEASE_LIFECYCLE_FILES)
177+
178+
$(PRERELEASE_LIFECYCLE_FILES): $(PRERELEASE_LIFECYCLE_GEN)
179+
if [[ "$(DBG_CODEGEN)" == 1 ]]; then \
180+
echo "DBG: prerelease-lifecycle needed $(@D):"; \
181+
ls -lf --full-time $@ $? || true; \
182+
fi
183+
echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(PRERELEASE_LIFECYCLE_GEN).todo
184+
185+
# How to build the generator tool. The deps for this are defined in
186+
# the $(GO_PKGDEPS_FILE), above.
187+
#
188+
# A word on the need to touch: This rule might trigger if, for example, a
189+
# non-Go file was added or deleted from a directory on which this depends.
190+
# This target needs to be reconsidered, but Go realizes it doesn't actually
191+
# have to be rebuilt. In that case, make will forever see the dependency as
192+
# newer than the binary, and try to "rebuild" it over and over. So we touch
193+
# it, and make is happy.
194+
$(PRERELEASE_LIFECYCLE_GEN): $(k8s.io/kubernetes/vendor/k8s.io/code-generator/cmd/prerelease-lifecycle-gen)
195+
KUBE_BUILD_PLATFORMS="" hack/make-rules/build.sh ./vendor/k8s.io/code-generator/cmd/prerelease-lifecycle-gen
196+
touch $@
197+
198+
115199
# Deep-copy generation
116200
#
117201
# Any package that wants deep-copy functions generated must include a

staging/src/k8s.io/api/extensions/v1beta1/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ go_library(
1414
"types.go",
1515
"types_swagger_doc_generated.go",
1616
"zz_generated.deepcopy.go",
17+
"zz_generated.prerelease-lifecycle.go",
1718
],
1819
importmap = "k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1",
1920
importpath = "k8s.io/api/extensions/v1beta1",

staging/src/k8s.io/api/extensions/v1beta1/doc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ limitations under the License.
1717
// +k8s:deepcopy-gen=package
1818
// +k8s:protobuf-gen=package
1919
// +k8s:openapi-gen=true
20+
// +k8s:prerelease-lifecycle-gen=true
2021

2122
package v1beta1 // import "k8s.io/api/extensions/v1beta1"

staging/src/k8s.io/api/extensions/v1beta1/types.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ type ScaleStatus struct {
5050
}
5151

5252
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
53+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
54+
// +k8s:prerelease-lifecycle-gen:deprecated=1.2
55+
// +k8s:prerelease-lifecycle-gen:removed=1.18
5356

5457
// represents a scaling request for a resource.
5558
type Scale struct {
@@ -71,6 +74,9 @@ type Scale struct {
7174
// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale
7275
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale
7376
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
77+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
78+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
79+
// +k8s:prerelease-lifecycle-gen:removed=1.18
7480

7581
// DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for
7682
// more information.
@@ -144,6 +150,9 @@ type DeploymentSpec struct {
144150
}
145151

146152
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
153+
// +k8s:prerelease-lifecycle-gen:introduced=1.2
154+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
155+
// +k8s:prerelease-lifecycle-gen:removed=1.18
147156

148157
// DEPRECATED.
149158
// DeploymentRollback stores the information required to rollback a deployment.
@@ -301,6 +310,9 @@ type DeploymentCondition struct {
301310
}
302311

303312
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
313+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
314+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
315+
// +k8s:prerelease-lifecycle-gen:removed=1.18
304316

305317
// DeploymentList is a list of Deployments.
306318
type DeploymentList struct {
@@ -475,6 +487,9 @@ type DaemonSetCondition struct {
475487

476488
// +genclient
477489
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
490+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
491+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
492+
// +k8s:prerelease-lifecycle-gen:removed=1.18
478493

479494
// DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for
480495
// more information.
@@ -514,6 +529,9 @@ const (
514529
)
515530

516531
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
532+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
533+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
534+
// +k8s:prerelease-lifecycle-gen:removed=1.18
517535

518536
// DaemonSetList is a collection of daemon sets.
519537
type DaemonSetList struct {
@@ -529,6 +547,9 @@ type DaemonSetList struct {
529547

530548
// +genclient
531549
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
550+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
551+
// +k8s:prerelease-lifecycle-gen:deprecated=1.14
552+
// +k8s:prerelease-lifecycle-gen:removed=1.22
532553

533554
// Ingress is a collection of rules that allow inbound connections to reach the
534555
// endpoints defined by a backend. An Ingress can be configured to give services
@@ -554,6 +575,9 @@ type Ingress struct {
554575
}
555576

556577
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
578+
// +k8s:prerelease-lifecycle-gen:introduced=1.1
579+
// +k8s:prerelease-lifecycle-gen:deprecated=1.14
580+
// +k8s:prerelease-lifecycle-gen:removed=1.22
557581

558582
// IngressList is a collection of Ingress.
559583
type IngressList struct {
@@ -776,6 +800,9 @@ type IngressBackend struct {
776800
// +genclient:method=GetScale,verb=get,subresource=scale,result=Scale
777801
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=Scale,result=Scale
778802
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
803+
// +k8s:prerelease-lifecycle-gen:introduced=1.2
804+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
805+
// +k8s:prerelease-lifecycle-gen:removed=1.18
779806

780807
// DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet. See the release notes for
781808
// more information.
@@ -804,6 +831,9 @@ type ReplicaSet struct {
804831
}
805832

806833
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
834+
// +k8s:prerelease-lifecycle-gen:introduced=1.2
835+
// +k8s:prerelease-lifecycle-gen:deprecated=1.8
836+
// +k8s:prerelease-lifecycle-gen:removed=1.18
807837

808838
// ReplicaSetList is a collection of ReplicaSets.
809839
type ReplicaSetList struct {
@@ -906,6 +936,9 @@ type ReplicaSetCondition struct {
906936
// +genclient
907937
// +genclient:nonNamespaced
908938
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
939+
// +k8s:prerelease-lifecycle-gen:introduced=1.2
940+
// +k8s:prerelease-lifecycle-gen:deprecated=1.11
941+
// +k8s:prerelease-lifecycle-gen:removed=1.18
909942

910943
// PodSecurityPolicy governs the ability to make requests that affect the Security Context
911944
// that will be applied to a pod and container.
@@ -1264,6 +1297,9 @@ type RuntimeClassStrategyOptions struct {
12641297
const AllowAllRuntimeClassNames = "*"
12651298

12661299
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
1300+
// +k8s:prerelease-lifecycle-gen:introduced=1.2
1301+
// +k8s:prerelease-lifecycle-gen:deprecated=1.11
1302+
// +k8s:prerelease-lifecycle-gen:removed=1.18
12671303

12681304
// PodSecurityPolicyList is a list of PodSecurityPolicy objects.
12691305
// Deprecated: use PodSecurityPolicyList from policy API Group instead.
@@ -1280,6 +1316,9 @@ type PodSecurityPolicyList struct {
12801316

12811317
// +genclient
12821318
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
1319+
// +k8s:prerelease-lifecycle-gen:introduced=1.3
1320+
// +k8s:prerelease-lifecycle-gen:deprecated=1.9
1321+
// +k8s:prerelease-lifecycle-gen:removed=1.18
12831322

12841323
// DEPRECATED 1.9 - This group version of NetworkPolicy is deprecated by networking/v1/NetworkPolicy.
12851324
// NetworkPolicy describes what network traffic is allowed for a set of Pods
@@ -1450,6 +1489,9 @@ type NetworkPolicyPeer struct {
14501489
}
14511490

14521491
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
1492+
// +k8s:prerelease-lifecycle-gen:introduced=1.3
1493+
// +k8s:prerelease-lifecycle-gen:deprecated=1.9
1494+
// +k8s:prerelease-lifecycle-gen:removed=1.18
14531495

14541496
// DEPRECATED 1.9 - This group version of NetworkPolicyList is deprecated by networking/v1/NetworkPolicyList.
14551497
// Network Policy List is a list of NetworkPolicy objects.

0 commit comments

Comments
 (0)