mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Fix codecgen sort
This commit is contained in:
		@@ -39,6 +39,9 @@ generated_files=($(
 | 
				
			|||||||
      \) -prune \
 | 
					      \) -prune \
 | 
				
			||||||
    \) -name '*.generated.go' | sort -r))
 | 
					    \) -name '*.generated.go' | sort -r))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# We only work for deps within this prefix.
 | 
				
			||||||
 | 
					my_prefix="k8s.io/kubernetes"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Register function to be called on EXIT to remove codecgen
 | 
					# Register function to be called on EXIT to remove codecgen
 | 
				
			||||||
# binary and also to touch the files that should be regenerated
 | 
					# binary and also to touch the files that should be regenerated
 | 
				
			||||||
# since they are first removed.
 | 
					# since they are first removed.
 | 
				
			||||||
@@ -55,28 +58,39 @@ trap cleanup EXIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Sort all files in the dependency order.
 | 
					# Sort all files in the dependency order.
 | 
				
			||||||
number=${#generated_files[@]}
 | 
					number=${#generated_files[@]}
 | 
				
			||||||
 | 
					result=""
 | 
				
			||||||
for (( i=0; i<number; i++ )); do
 | 
					for (( i=0; i<number; i++ )); do
 | 
				
			||||||
  visited[${i}]=false
 | 
					  visited[${i}]=false
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
result=""
 | 
					echo "DBG: found $number generated files"
 | 
				
			||||||
 | 
					for f in $(echo "${generated_files[@]}" | sort); do
 | 
				
			||||||
 | 
					    echo "DBG:   $f"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# NOTE: depends function assumes that the whole repository is under
 | 
					# NOTE: depends function assumes that the whole repository is under
 | 
				
			||||||
# */k8s.io/kubernetes directory - it will NOT work if that is not true.
 | 
					# $my_prefix - it will NOT work if that is not true.
 | 
				
			||||||
function depends {
 | 
					function depends {
 | 
				
			||||||
  file=${generated_files[$1]//\.generated\.go/.go}
 | 
					  file="${generated_files[$1]/\.generated\.go/.go}"
 | 
				
			||||||
  deps=$(go list -f "{{.Deps}}" ${file} | tr "[" " " | tr "]" " ")
 | 
					  rhs="$(dirname ${generated_files[$2]/#./${my_prefix}})"
 | 
				
			||||||
  candidate=$(readlinkdashf "${generated_files[$2]//\.generated\.go/.go}")
 | 
					  echo "DBG: does ${file} depend on ${rhs}?"
 | 
				
			||||||
 | 
					  deps=$(go list -f '{{range .Deps}}{{.}}{{"\n"}}{{end}}' ${file} | grep "^${my_prefix}")
 | 
				
			||||||
 | 
					  candidate=$(readlinkdashf "${generated_files[$2]/\.generated\.go/.go}")
 | 
				
			||||||
  for dep in ${deps}; do
 | 
					  for dep in ${deps}; do
 | 
				
			||||||
 | 
					    echo "DBG:   checking against $dep"
 | 
				
			||||||
    # Only look at dependencies within the kubernetes tree-- otherwise the "io"
 | 
					    # Only look at dependencies within the kubernetes tree-- otherwise the "io"
 | 
				
			||||||
    # package matches the end of one of our directories.
 | 
					    # package matches the end of one of our directories.
 | 
				
			||||||
    if [[ ${dep} = "k8s.io"* ]]; then
 | 
					    if [[ ${dep} = "k8s.io"* ]]; then
 | 
				
			||||||
      if [[ ${candidate} = *${dep} ]]; then
 | 
					      if [[ ${candidate} = *${dep} ]]; then
 | 
				
			||||||
        echo true
 | 
						echo "DBG: old logic said yes"
 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    if [[ "${dep}" == "${rhs}" ]]; then
 | 
				
			||||||
 | 
					      echo "DBG: = yes"
 | 
				
			||||||
 | 
					      return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
  done
 | 
					  done
 | 
				
			||||||
  echo false
 | 
					  echo "DBG: = no"
 | 
				
			||||||
 | 
					  return 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function tsort {
 | 
					function tsort {
 | 
				
			||||||
@@ -84,7 +98,7 @@ function tsort {
 | 
				
			|||||||
  local j=0
 | 
					  local j=0
 | 
				
			||||||
  for (( j=0; j<number; j++ )); do
 | 
					  for (( j=0; j<number; j++ )); do
 | 
				
			||||||
    if ! ${visited[${j}]}; then
 | 
					    if ! ${visited[${j}]}; then
 | 
				
			||||||
      if $(depends "$1" ${j}); then
 | 
					      if depends "$1" ${j}; then
 | 
				
			||||||
        tsort $j
 | 
					        tsort $j
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
@@ -92,7 +106,9 @@ function tsort {
 | 
				
			|||||||
  result="${result} $1"
 | 
					  result="${result} $1"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
for (( i=0; i<number; i++ )); do
 | 
					for (( i=0; i<number; i++ )); do
 | 
				
			||||||
 | 
					  echo "DBG: considering ${generated_files[${i}]}"
 | 
				
			||||||
  if ! ${visited[${i}]}; then
 | 
					  if ! ${visited[${i}]}; then
 | 
				
			||||||
 | 
					    echo "DBG: tsorting ${generated_files[${i}]}"
 | 
				
			||||||
    tsort ${i}
 | 
					    tsort ${i}
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
@@ -121,8 +137,8 @@ done
 | 
				
			|||||||
for current in "${index[@]}"; do
 | 
					for current in "${index[@]}"; do
 | 
				
			||||||
  generated_file=${generated_files[${current}]}
 | 
					  generated_file=${generated_files[${current}]}
 | 
				
			||||||
  initial_dir=${PWD}
 | 
					  initial_dir=${PWD}
 | 
				
			||||||
  file=${generated_file//\.generated\.go/.go}
 | 
					  file=${generated_file/\.generated\.go/.go}
 | 
				
			||||||
  echo "codecgen processing ${file}"
 | 
					  echo "processing ${file}"
 | 
				
			||||||
  # codecgen work only if invoked from directory where the file
 | 
					  # codecgen work only if invoked from directory where the file
 | 
				
			||||||
  # is located.
 | 
					  # is located.
 | 
				
			||||||
  pushd "$(dirname ${file})" > /dev/null
 | 
					  pushd "$(dirname ${file})" > /dev/null
 | 
				
			||||||
@@ -130,12 +146,11 @@ for current in "${index[@]}"; do
 | 
				
			|||||||
  base_generated_file=$(basename "${generated_file}")
 | 
					  base_generated_file=$(basename "${generated_file}")
 | 
				
			||||||
  # We use '-d 1234' flag to have a deterministic output every time.
 | 
					  # We use '-d 1234' flag to have a deterministic output every time.
 | 
				
			||||||
  # The constant was just randomly chosen.
 | 
					  # The constant was just randomly chosen.
 | 
				
			||||||
  echo Running ${CODECGEN} -d 1234 -o  "${base_generated_file}" "${base_file}"
 | 
					  echo "DBG: running ${CODECGEN} -d 1234 -o ${base_generated_file} ${base_file}"
 | 
				
			||||||
  ${CODECGEN} -d 1234 -o "${base_generated_file}" "${base_file}"
 | 
					  ${CODECGEN} -d 1234 -o "${base_generated_file}" "${base_file}"
 | 
				
			||||||
  # Add boilerplate at the beginning of the generated file.
 | 
					  # Add boilerplate at the beginning of the generated file.
 | 
				
			||||||
  sed 's/YEAR/2015/' "${initial_dir}/hack/boilerplate/boilerplate.go.txt" > "${base_generated_file}.tmp"
 | 
					  sed 's/YEAR/2015/' "${initial_dir}/hack/boilerplate/boilerplate.go.txt" > "${base_generated_file}.tmp"
 | 
				
			||||||
  cat "${base_generated_file}" >> "${base_generated_file}.tmp"
 | 
					  cat "${base_generated_file}" >> "${base_generated_file}.tmp"
 | 
				
			||||||
  mv "${base_generated_file}.tmp" "${base_generated_file}"
 | 
					  mv "${base_generated_file}.tmp" "${base_generated_file}"
 | 
				
			||||||
  echo "${generated_file} is regenerated."
 | 
					 | 
				
			||||||
  popd > /dev/null
 | 
					  popd > /dev/null
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user