mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	Merge pull request #37665 from ixdy/make-release-platform-envs
Automatic merge from submit-queue build: clean platform envs to prevent cross-contamination **What this PR does / why we need it**: As I described in https://github.com/kubernetes/kubernetes/issues/37079#issuecomment-263733509, we are leaking platform compilation envs between build stages for different platforms in the non-parallel dockerized cross build. This PR uses a subshell for the non-parallel build, more closely matching the parallel build. This also adds some logging, which had it existed previously, may have made the bug more immediately obvious. **Which issue this PR fixes**: fixes #37079 cc @sebgoa @iTagir @saad-ali
This commit is contained in:
		@@ -560,6 +560,7 @@ function kube::build::run_build_command_ex() {
 | 
				
			|||||||
    --env "KUBE_FASTBUILD=${KUBE_FASTBUILD:-false}"
 | 
					    --env "KUBE_FASTBUILD=${KUBE_FASTBUILD:-false}"
 | 
				
			||||||
    --env "KUBE_BUILDER_OS=${OSTYPE:-notdetected}"
 | 
					    --env "KUBE_BUILDER_OS=${OSTYPE:-notdetected}"
 | 
				
			||||||
    --env "KUBE_BUILD_PPC64LE=${KUBE_BUILD_PPC64LE}"  # TODO(IBM): remove
 | 
					    --env "KUBE_BUILD_PPC64LE=${KUBE_BUILD_PPC64LE}"  # TODO(IBM): remove
 | 
				
			||||||
 | 
					    --env "KUBE_VERBOSE=${KUBE_VERBOSE}"
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # If we have stdin we can run interactive.  This allows things like 'shell.sh'
 | 
					  # If we have stdin we can run interactive.  This allows things like 'shell.sh'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -219,6 +219,8 @@ kube::golang::set_platform_envs() {
 | 
				
			|||||||
  [[ -n ${1-} ]] || {
 | 
					  [[ -n ${1-} ]] || {
 | 
				
			||||||
    kube::log::error_exit "!!! Internal error. No platform set in kube::golang::set_platform_envs"
 | 
					    kube::log::error_exit "!!! Internal error. No platform set in kube::golang::set_platform_envs"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  # make sure we have a clean slate first
 | 
				
			||||||
 | 
					  kube::golang::unset_platform_envs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export GOOS=${platform%/*}
 | 
					  export GOOS=${platform%/*}
 | 
				
			||||||
  export GOARCH=${platform##*/}
 | 
					  export GOARCH=${platform##*/}
 | 
				
			||||||
@@ -456,6 +458,8 @@ kube::golang::build_binaries_for_platform() {
 | 
				
			|||||||
  local -a nonstatics=()
 | 
					  local -a nonstatics=()
 | 
				
			||||||
  local -a tests=()
 | 
					  local -a tests=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  V=2 kube::log::info "Env for ${platform}: GOOS=${GOOS-} GOARCH=${GOARCH-} GOROOT=${GOROOT-} CGO_ENABLED=${CGO_ENABLED-} CC=${CC-}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for binary in "${binaries[@]}"; do
 | 
					  for binary in "${binaries[@]}"; do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ "${binary}" =~ ".test"$ ]]; then
 | 
					    if [[ "${binary}" =~ ".test"$ ]]; then
 | 
				
			||||||
@@ -685,8 +689,10 @@ kube::golang::build_binaries() {
 | 
				
			|||||||
    else
 | 
					    else
 | 
				
			||||||
      for platform in "${platforms[@]}"; do
 | 
					      for platform in "${platforms[@]}"; do
 | 
				
			||||||
        kube::log::status "Building go targets for ${platform}:" "${targets[@]}"
 | 
					        kube::log::status "Building go targets for ${platform}:" "${targets[@]}"
 | 
				
			||||||
 | 
					        (
 | 
				
			||||||
          kube::golang::set_platform_envs "${platform}"
 | 
					          kube::golang::set_platform_envs "${platform}"
 | 
				
			||||||
          kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-}
 | 
					          kube::golang::build_binaries_for_platform ${platform} ${use_go_build:-}
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
      done
 | 
					      done
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user