forked from kubernetes/kubernetes
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change the build_binaries path to use modules
This makes "new" and "old" setup_env functions. In subsequent commits, all callers of the "old" form will be fixed, and the "new" will be renamed back. The old and new functions diff: ```diff --- /tmp/old 2023-05-06 12:03:23.913951720 -0700 +++ /tmp/new 2023-05-06 12:06:37.688300514 -0700 --- a 2023-05-27 10:20:55.477856825 -0700 +++ b 2023-05-27 10:23:13.253192669 -0700 @@ -1,4 +1,4 @@ -kube::golang::old::setup_env() { +kube::golang::new::setup_env() { kube::golang::verify_go_version # Set up GOPATH. We have tools which depend on being in a GOPATH (see @@ -7,9 +7,9 @@ # Even in module mode, we need to set GOPATH for `go build` and `go install` # to work. We build various tools (usually via `go install`) from a lot of # scripts. - # * We can't set GOBIN because that does not work on cross-compiles. - # * We could use `go build -o <something>`, but it's subtle when it comes - # to cross-compiles and whether the <something> is a file or a directory, + # * We can't just set GOBIN because that does not work on cross-compiles. + # * We could always use `go build -o <something>`, but it's subtle wrt + # cross-compiles and whether the <something> is a file or a directory, # and EVERY caller has to get it *just* right. # * We could leave GOPATH alone and let `go install` write binaries # wherever the user's GOPATH says (or doesn't say). @@ -20,7 +20,6 @@ # # Eventually, when we no longer rely on run-in-gopath.sh we may be able to # simplify this some. - kube::golang::old::create_gopath_tree export GOPATH="${KUBE_GOPATH}" # If these are not set, set them now. This ensures that any subsequent @@ -31,23 +30,12 @@ # Make sure our own Go binaries are in PATH. export PATH="${KUBE_GOPATH}/bin:${PATH}" - # Change directories so that we are within the GOPATH. Some tools get really - # upset if this is not true. We use a whole fake GOPATH here to collect the - # resultant binaries. - local subdir - subdir=$(kube::realpath . | sed "s|${KUBE_ROOT}||") - cd "${KUBE_GOPATH}/src/${KUBE_GO_PACKAGE}/${subdir}" || return 1 - - # Set GOROOT so binaries that parse code can work properly. - GOROOT=$(go env GOROOT) - export GOROOT - # Unset GOBIN in case it already exists in the current session. # Cross-compiles will not work with it set. unset GOBIN - # This seems to matter to some tools - export GO15VENDOREXPERIMENT=1 + # Explicitly turn on modules. + export GO111MODULE=on # GOMAXPROCS by default does not reflect the number of cpu(s) available # when running in a container, please see golang/go#33803 @@ -58,8 +46,6 @@ # shellcheck disable=SC2164 popd >/dev/null fi - - GOMAXPROCS=${GOMAXPROCS:-$(ncpu)} - export GOMAXPROCS - kube::log::status "Setting GOMAXPROCS: ${GOMAXPROCS}" + export GOMAXPROCS=${GOMAXPROCS:-$(ncpu)} + V=3 kube::log::status "Setting GOMAXPROCS: ${GOMAXPROCS}" } ``` Result: `make` works for k/k: ``` $ make kubectl +++ [1211 11:07:31] Building go targets for linux/amd64 k8s.io/kubernetes/cmd/kubectl (static) $ make WHAT=./cmd/kubectl/ +++ [1211 11:08:19] Building go targets for linux/amd64 k8s.io/kubernetes/./cmd/kubectl/ (non-static) $ make WHAT=k8s.io/kubernetes/cmd/kubectl +++ [1211 11:08:52] Building go targets for linux/amd64 k8s.io/kubernetes/cmd/kubectl (static) ``` Result: `make` works for stagin by package: ``` $ make WHAT=k8s.io/api +++ [1211 11:11:37] Building go targets for linux/amd64 k8s.io/api (non-static) ``` Result: `make` fails for staging by path: ``` $ make WHAT=./staging/src/k8s.io/api +++ [1211 11:12:44] Building go targets for linux/amd64 k8s.io/kubernetes/./staging/src/k8s.io/api (non-static) cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor (Go version in go.work is at least 1.14 and vendor directory exists.) !!! [1211 11:12:44] Call tree: !!! [1211 11:12:44] 1: /home/thockin/src/kubernetes/hack/lib/golang.sh:850 kube::golang::build_some_binaries(...) !!! [1211 11:12:44] 2: /home/thockin/src/kubernetes/hack/lib/golang.sh:1012 kube::golang::build_binaries_for_platform(...) !!! [1211 11:12:44] 3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [1211 11:12:44] Call tree: !!! [1211 11:12:44] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [1211 11:12:44] Call tree: !!! [1211 11:12:44] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) make: *** [Makefile:96: all] Error 1 ``` Result: `make test` fails: ``` $ make test WHAT=./cmd/kubectl +++ [1211 11:13:38] Set GOMAXPROCS automatically to 6 +++ [1211 11:13:38] Running tests without code coverage and with -race cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of: /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree) /home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT) /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH) cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of: /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree) /home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT) /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH) cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of: /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree) /home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT) /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH) cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of: /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree) /home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT) /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH) make: *** [Makefile:191: test] Error 1 ```
- Loading branch information
Showing
27 changed files
with
91 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters