mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
First use of new deep-copy generator.
This commit is contained in:
parent
13a853f371
commit
baf97c9c5e
@ -18,7 +18,6 @@ package generators
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
@ -69,9 +68,7 @@ func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Pac
|
||||
PackagePath: inputDir,
|
||||
HeaderText: append(boilerplate, []byte(
|
||||
`
|
||||
// This file was autogenerated by the command:
|
||||
// $ `+strings.Join(os.Args, " ")+`
|
||||
// Do not edit it manually!
|
||||
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
|
||||
|
||||
`)...),
|
||||
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
|
||||
@ -157,7 +154,26 @@ func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool {
|
||||
return false
|
||||
}
|
||||
// TODO: Consider generating functions for other kinds too.
|
||||
return t.Kind == types.Struct
|
||||
if t.Kind != types.Struct {
|
||||
return false
|
||||
}
|
||||
// TODO: This should be removed once we start generating public DeepCopy
|
||||
// functions per directory.
|
||||
if t.Name.Package != g.targetPackage {
|
||||
// We won't be able to access private fields.
|
||||
// Thus, this type cannot have private fields.
|
||||
for _, member := range t.Members {
|
||||
if strings.ToLower(member.Name[:1]) == member.Name[:1] {
|
||||
return false
|
||||
}
|
||||
// TODO: This is a temporary hack, to make avoid generating function
|
||||
// for conversion.Equalities. We should get rid of it.
|
||||
if member.Embedded {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (g *genDeepCopy) isOtherPackage(pkg string) bool {
|
||||
@ -189,7 +205,11 @@ func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
|
||||
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
sw.Do("func init() {\n", nil)
|
||||
sw.Do("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
if g.targetPackage == apiPackagePath {
|
||||
sw.Do("if err := Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
} else {
|
||||
sw.Do("if err := api.Scheme.AddGeneratedDeepCopyFuncs(\n", nil)
|
||||
}
|
||||
for _, t := range g.typesForInit {
|
||||
sw.Do("deepCopy_$.|public$,\n", t)
|
||||
}
|
||||
@ -203,6 +223,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
|
||||
|
||||
// GenerateType makes the body of a file implementing a set for type t.
|
||||
func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||
glog.Errorf("--> %v", t)
|
||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||
sw.Do("func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {\n", t)
|
||||
g.generateFor(t, sw)
|
||||
|
@ -31,6 +31,11 @@ import (
|
||||
func main() {
|
||||
arguments := args.Default()
|
||||
|
||||
// Override defaults. These are Kubernetes specific input locations.
|
||||
arguments.InputDirs = []string{
|
||||
"k8s.io/kubernetes/pkg/api",
|
||||
}
|
||||
|
||||
if err := arguments.Execute(
|
||||
generators.NameSystems(),
|
||||
generators.DefaultNameSystem(),
|
||||
@ -38,4 +43,5 @@ func main() {
|
||||
); err != nil {
|
||||
glog.Fatalf("Error: %v", err)
|
||||
}
|
||||
glog.Info("Completed successfully.")
|
||||
}
|
||||
|
@ -23,8 +23,9 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
|
||||
kube::golang::setup_env
|
||||
|
||||
setgen=$(kube::util::find-binary "set-gen")
|
||||
clientgen=$(kube::util::find-binary "client-gen")
|
||||
deepcopygen=$(kube::util::find-binary "deepcopy-gen")
|
||||
setgen=$(kube::util::find-binary "set-gen")
|
||||
|
||||
# Please do not add any logic to this shell script. Add logic to the go code
|
||||
# that generates the set-gen program.
|
||||
@ -33,6 +34,7 @@ clientgen=$(kube::util::find-binary "client-gen")
|
||||
# update- and verify- scripts.
|
||||
${clientgen} "$@"
|
||||
${clientgen} -t "$@"
|
||||
${deepcopygen} "$@"
|
||||
${setgen} "$@"
|
||||
|
||||
# You may add additional calls of code generators like set-gen above.
|
||||
|
@ -50,13 +50,18 @@ function generate_deep_copies() {
|
||||
# Ensure that the version being processed is registered by setting
|
||||
# KUBE_API_VERSIONS.
|
||||
if [ -z ${ver##*/} ]; then
|
||||
apiVersions=""
|
||||
apiVersions=""
|
||||
else
|
||||
apiVersions="${ver}"
|
||||
fi
|
||||
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
|
||||
done
|
||||
}
|
||||
|
||||
# v1 is in the group ""
|
||||
DEFAULT_VERSIONS="/ v1 extensions/ extensions/v1beta1 componentconfig/ componentconfig/v1alpha1 metrics/ metrics/v1alpha1"
|
||||
# Currently pkg/api/deep_copy_generated.go is generated by the new go2idl generator.
|
||||
# All others (mentioned above) are still generated by the old reflection-based generator.
|
||||
# TODO: Migrate these to the new generator.
|
||||
DEFAULT_VERSIONS="v1 extensions/ extensions/v1beta1 componentconfig/ componentconfig/v1alpha1 metrics/ metrics/v1alpha1"
|
||||
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
|
||||
generate_deep_copies "$VERSIONS"
|
||||
|
@ -26,6 +26,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
kube::golang::setup_env
|
||||
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/client-gen
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/deepcopy-gen
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/set-gen
|
||||
|
||||
"${KUBE_ROOT}/hack/after-build/run-codegen.sh" "$@"
|
||||
|
@ -26,6 +26,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
kube::golang::setup_env
|
||||
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/client-gen
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/deepcopy-gen
|
||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/set-gen
|
||||
|
||||
"${KUBE_ROOT}/hack/after-build/run-codegen.sh" --verify-only
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user