mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +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 (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -69,9 +68,7 @@ func Packages(_ *generator.Context, arguments *args.GeneratorArgs) generator.Pac
|
|||||||
PackagePath: inputDir,
|
PackagePath: inputDir,
|
||||||
HeaderText: append(boilerplate, []byte(
|
HeaderText: append(boilerplate, []byte(
|
||||||
`
|
`
|
||||||
// This file was autogenerated by the command:
|
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
|
||||||
// $ `+strings.Join(os.Args, " ")+`
|
|
||||||
// Do not edit it manually!
|
|
||||||
|
|
||||||
`)...),
|
`)...),
|
||||||
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
|
GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
|
||||||
@ -157,7 +154,26 @@ func (g *genDeepCopy) copyableWithinPackage(t *types.Type) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// TODO: Consider generating functions for other kinds too.
|
// 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 {
|
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 {
|
func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
|
||||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||||
sw.Do("func init() {\n", nil)
|
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 {
|
for _, t := range g.typesForInit {
|
||||||
sw.Do("deepCopy_$.|public$,\n", t)
|
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.
|
// 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 {
|
func (g *genDeepCopy) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
|
||||||
|
glog.Errorf("--> %v", t)
|
||||||
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
sw := generator.NewSnippetWriter(w, c, "$", "$")
|
||||||
sw.Do("func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {\n", t)
|
sw.Do("func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {\n", t)
|
||||||
g.generateFor(t, sw)
|
g.generateFor(t, sw)
|
||||||
|
@ -31,6 +31,11 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
arguments := args.Default()
|
arguments := args.Default()
|
||||||
|
|
||||||
|
// Override defaults. These are Kubernetes specific input locations.
|
||||||
|
arguments.InputDirs = []string{
|
||||||
|
"k8s.io/kubernetes/pkg/api",
|
||||||
|
}
|
||||||
|
|
||||||
if err := arguments.Execute(
|
if err := arguments.Execute(
|
||||||
generators.NameSystems(),
|
generators.NameSystems(),
|
||||||
generators.DefaultNameSystem(),
|
generators.DefaultNameSystem(),
|
||||||
@ -38,4 +43,5 @@ func main() {
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
glog.Fatalf("Error: %v", err)
|
glog.Fatalf("Error: %v", err)
|
||||||
}
|
}
|
||||||
|
glog.Info("Completed successfully.")
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,9 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
|||||||
|
|
||||||
kube::golang::setup_env
|
kube::golang::setup_env
|
||||||
|
|
||||||
setgen=$(kube::util::find-binary "set-gen")
|
|
||||||
clientgen=$(kube::util::find-binary "client-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
|
# Please do not add any logic to this shell script. Add logic to the go code
|
||||||
# that generates the set-gen program.
|
# that generates the set-gen program.
|
||||||
@ -33,6 +34,7 @@ clientgen=$(kube::util::find-binary "client-gen")
|
|||||||
# update- and verify- scripts.
|
# update- and verify- scripts.
|
||||||
${clientgen} "$@"
|
${clientgen} "$@"
|
||||||
${clientgen} -t "$@"
|
${clientgen} -t "$@"
|
||||||
|
${deepcopygen} "$@"
|
||||||
${setgen} "$@"
|
${setgen} "$@"
|
||||||
|
|
||||||
# You may add additional calls of code generators like set-gen above.
|
# 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
|
# Ensure that the version being processed is registered by setting
|
||||||
# KUBE_API_VERSIONS.
|
# KUBE_API_VERSIONS.
|
||||||
if [ -z ${ver##*/} ]; then
|
if [ -z ${ver##*/} ]; then
|
||||||
apiVersions=""
|
apiVersions=""
|
||||||
|
else
|
||||||
|
apiVersions="${ver}"
|
||||||
fi
|
fi
|
||||||
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
|
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# v1 is in the group ""
|
# 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}
|
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
|
||||||
generate_deep_copies "$VERSIONS"
|
generate_deep_copies "$VERSIONS"
|
||||||
|
@ -26,6 +26,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
|||||||
kube::golang::setup_env
|
kube::golang::setup_env
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/client-gen
|
"${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/build-go.sh" cmd/libs/go2idl/set-gen
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/after-build/run-codegen.sh" "$@"
|
"${KUBE_ROOT}/hack/after-build/run-codegen.sh" "$@"
|
||||||
|
@ -26,6 +26,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
|||||||
kube::golang::setup_env
|
kube::golang::setup_env
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/build-go.sh" cmd/libs/go2idl/client-gen
|
"${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/build-go.sh" cmd/libs/go2idl/set-gen
|
||||||
|
|
||||||
"${KUBE_ROOT}/hack/after-build/run-codegen.sh" --verify-only
|
"${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