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` is the same as previous commit ``` $ make kubectl +++ [0527 10:25:24] Building go targets for linux/amd64 k8s.io/kubernetes/cmd/kubectl (static) $ make WHAT=./cmd/kubectl/ +++ [0527 10:25:57] Building go targets for linux/amd64 k8s.io/kubernetes/./cmd/kubectl/ (non-static) $ make WHAT=k8s.io/kubernetes/cmd/kubectl +++ [0527 10:26:29] Building go targets for linux/amd64 k8s.io/kubernetes/cmd/kubectl (static) $ make test WHAT=./cmd/kubectl +++ [0527 10:26:59] Setting GOMAXPROCS: 12 +++ [0527 10:26:59] 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:184: test] Error 1 $ make test WHAT=k8s.io/kubernetes/cmd/kubectl +++ [0527 10:27:13] Setting GOMAXPROCS: 12 +++ [0527 10:27:13] 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:184: test] Error 1 $ make WHAT=./staging/src/k8s.io/api +++ [0527 10:27:28] 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.) !!! [0527 10:27:28] Call tree: !!! [0527 10:27:28] 1: /home/thockin/src/kubernetes/hack/lib/golang.sh:846 kube::golang::build_some_binaries(...) !!! [0527 10:27:28] 2: /home/thockin/src/kubernetes/hack/lib/golang.sh:1008 kube::golang::build_binaries_for_platform(...) !!! [0527 10:27:28] 3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [0527 10:27:28] Call tree: !!! [0527 10:27:28] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [0527 10:27:28] Call tree: !!! [0527 10:27:28] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) make: *** [Makefile:92: all] Error 1 $ make WHAT=k8s.io/api +++ [0527 10:27:40] Building go targets for linux/amd64 k8s.io/api (non-static) $ make test WHAT=./staging/src/k8s.io/api +++ [0527 10:27:56] Setting GOMAXPROCS: 12 +++ [0527 10:27:56] Running tests without code coverage and with -race code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api" make: *** [Makefile:184: test] Error 1 $ make test WHAT=k8s.io/api +++ [0527 10:28:14] Setting GOMAXPROCS: 12 !!! [0527 10:28:14] specified test path '${GOPATH}/src/k8s.io/api' does not exist make: *** [Makefile:184: 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