From fefdfc2ad7e4e5fb21c9ff64c5c84a1af3437d07 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Thu, 31 Jan 2019 15:53:04 +0200 Subject: [PATCH 1/4] verify-generated-files-remake.sh: fix BASH_SOURCE array. --- hack/verify-generated-files-remake.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/verify-generated-files-remake.sh b/hack/verify-generated-files-remake.sh index b3f57b125d2..877201dae3c 100755 --- a/hack/verify-generated-files-remake.sh +++ b/hack/verify-generated-files-remake.sh @@ -18,7 +18,7 @@ set -o errexit set -o nounset set -o pipefail -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. +KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. source "${KUBE_ROOT}/hack/lib/init.sh" kube::util::ensure_clean_working_dir From c23c83724c5be626386e34abb7174a5a514461d1 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Thu, 31 Jan 2019 17:37:56 +0200 Subject: [PATCH 2/4] verify-generated-files-remake.sh: use strings instead of arrays. Move away from arrays to strings to fix several shellcheck-reported issues. It isn't useful to expand the found files into arrays, because only things that are checked are if the array is empty or the contents of the first array item. Fix also a shellcheck issue about using a literal string as regexp match. It appears that the original reason for using a regexp was to avoid specifying the directory in which the script is run. However, due to the need of calling 'make generated_files', the directory is fixed anyway, and the regexp can be left out. Testing the change can be done with the following script which emulates the different cases which the script can see. In the output the variable 'X' is the array and 'Z' is the string. #!/bin/bash set -o errexit set -o nounset set -o pipefail function find_genfiles() { find . \ \( \ -not \( \ \( \ -path ./_\* -o \ -path ./.\* \ \) -prune \ \) \ \) -name "$1" } # $1 = filename pattern as in "zz_generated.$1.go" # $2 timestamp file function newer() { find_genfiles "$1" | while read -r F; do if [[ "${F}" -nt "$2" ]]; then echo "${F}" fi done } STAMP=stamp mkdir -p xxx touch xxx/foobar touch "${STAMP}" mkdir -p foo touch foo/foobar mkdir -p bar touch bar/foobar # two newer files X=($(newer foobar "${STAMP}")) if [[ "${#X[*]}" != 0 ]]; then echo "X1:" echo " ${X[*]:-(none)}" fi Z="$(newer foobar "${STAMP}")" if [[ -n "$Z" ]]; then echo "Z1:" echo " ${Z}" | tr '\n' ' ' echo "" fi # no newer files touch "${STAMP}" X=($(newer foobar "${STAMP}")) if [[ "${#X[*]}" != 0 ]]; then echo "X2:" echo " ${X[*]:-(none)}" fi Z="$(newer foobar "${STAMP}")" if [[ -n "$Z" ]]; then echo "Z2:" echo " ${Z}" | tr '\n' ' ' echo "" fi # one newer file, name matches touch "${STAMP}" touch bar/foobar X=($(newer foobar "${STAMP}")) if [[ "${#X[@]}" != 1 || ! ( "${X[0]}" =~ "bar/foobar" ) ]]; then echo "X3:" echo " ${X[*]:-(none)}" fi Z="$(newer foobar "${STAMP}")" if [[ -z "${Z}" || ${Z} != "./bar/foobar" ]]; then echo "Z3:" echo " ${Z:-(none)}" | tr '\n' ' ' echo "" fi # one newer file, name doesn't match touch "${STAMP}" touch foo/foobar X=($(newer foobar "${STAMP}")) if [[ "${#X[@]}" != 1 || ! ( "${X[0]}" =~ "bar/foobar" ) ]]; then echo "X4:" echo " ${X[*]:-(none)}" fi Z="$(newer foobar "${STAMP}")" if [[ -z "${Z}" || ${Z} != "./bar/foobar" ]]; then echo "Z4:" echo " ${Z:-(none)}" | tr '\n' ' ' echo "" fi The expected output from running this script: X1: ./bar/foobar ./foo/foobar Z1: ./bar/foobar ./foo/foobar X4: ./foo/foobar Z4: ./foo/foobar --- hack/verify-generated-files-remake.sh | 149 +++++++++++++++----------- 1 file changed, 85 insertions(+), 64 deletions(-) diff --git a/hack/verify-generated-files-remake.sh b/hack/verify-generated-files-remake.sh index 877201dae3c..7a252f8d951 100755 --- a/hack/verify-generated-files-remake.sh +++ b/hack/verify-generated-files-remake.sh @@ -73,10 +73,11 @@ function assert_clean() { make generated_files >/dev/null touch "${STAMP}" make generated_files >/dev/null - X=($(newer deepcopy "${STAMP}")) - if [[ "${#X[*]}" != 0 ]]; then + X="$(newer deepcopy "${STAMP}")" + if [[ -n "${X}" ]]; then echo "Generated files changed on back-to-back 'make' runs:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" return 1 fi true @@ -91,25 +92,28 @@ STAMP=/tmp/stamp.$RANDOM assert_clean DIR=staging/src/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1 -touch "$DIR/types.go" +touch "${DIR}/types.go" touch "${STAMP}" make generated_files >/dev/null -X=($(newer deepcopy "${STAMP}")) -if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.deepcopy.go" ) ]]; then +X="$(newer deepcopy "${STAMP}")" +if [[ -z "${X}" || ${X} != "./${DIR}/zz_generated.deepcopy.go" ]]; then echo "Wrong generated deepcopy files changed after touching src file:" - echo " ${X[*]:-(none)}" + echo " ${X:-(none)}" | tr '\n' ' ' + echo "" exit 1 fi -X=($(newer defaults "${STAMP}")) -if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.defaults.go" ) ]]; then +X="$(newer defaults "${STAMP}")" +if [[ -z "${X}" || ${X} != "./${DIR}/zz_generated.defaults.go" ]]; then echo "Wrong generated defaults files changed after touching src file:" - echo " ${X[*]:-(none)}" + echo " ${X:-(none)}" | tr '\n' ' ' + echo "" exit 1 fi -X=($(newer conversion "${STAMP}")) -if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "${DIR}/zz_generated.conversion.go" ) ]]; then +X="$(newer conversion "${STAMP}")" +if [[ -z "${X}" || ${X} != "./${DIR}/zz_generated.conversion.go" ]]; then echo "Wrong generated conversion files changed after touching src file:" - echo " ${X[*]:-(none)}" + echo " ${X:-(none)}" | tr '\n' ' ' + echo "" exit 1 fi @@ -122,10 +126,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/deepcopy-gen/main.go touch "${STAMP}" make generated_files >/dev/null -X=($(older deepcopy "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older deepcopy "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated deepcopy files did not change after touching code-generator file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -134,10 +139,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/deepcopy-gen/ touch "${STAMP}" make generated_files >/dev/null -X=($(older deepcopy "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older deepcopy "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated deepcopy files did not change after touching code-generator dir:" - echo " ${X[*]}:-(none)" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -146,10 +152,11 @@ assert_clean touch vendor/k8s.io/gengo/examples/deepcopy-gen/generators/deepcopy.go touch "${STAMP}" make generated_files >/dev/null -X=($(older deepcopy "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older deepcopy "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated deepcopy files did not change after touching code-generator dep file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -158,10 +165,11 @@ assert_clean touch vendor/k8s.io/gengo/examples/deepcopy-gen/generators/ touch "${STAMP}" make generated_files >/dev/null -X=($(older deepcopy "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older deepcopy "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated deepcopy files did not change after touching code-generator dep dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -174,10 +182,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/defaulter-gen/main.go touch "${STAMP}" make generated_files >/dev/null -X=($(older defaults "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older defaults "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated defaults files did not change after touching code-generator file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -186,10 +195,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/defaulter-gen/ touch "${STAMP}" make generated_files >/dev/null -X=($(older defaults "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older defaults "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated defaults files did not change after touching code-generator dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -198,10 +208,11 @@ assert_clean touch vendor/k8s.io/gengo/examples/defaulter-gen/generators/defaulter.go touch "${STAMP}" make generated_files >/dev/null -X=($(older defaults "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older defaults "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated defaults files did not change after touching code-generator dep file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -210,10 +221,11 @@ assert_clean touch vendor/k8s.io/gengo/examples/defaulter-gen/generators/ touch "${STAMP}" make generated_files >/dev/null -X=($(older defaults "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older defaults "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated defaults files did not change after touching code-generator dep dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -226,10 +238,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/conversion-gen/main.go touch "${STAMP}" make generated_files >/dev/null -X=($(older conversion "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older conversion "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated conversion files did not change after touching code-generator file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -238,10 +251,11 @@ assert_clean touch staging/src/k8s.io/code-generator/cmd/conversion-gen/ touch "${STAMP}" make generated_files >/dev/null -X=($(older conversion "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older conversion "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated conversion files did not change after touching code-generator dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -250,10 +264,11 @@ assert_clean touch vendor/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go touch "${STAMP}" make generated_files >/dev/null -X=($(older conversion "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older conversion "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated conversion files did not change after touching code-generator dep file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -262,10 +277,11 @@ assert_clean touch vendor/k8s.io/code-generator/cmd/conversion-gen/generators/ touch "${STAMP}" make generated_files >/dev/null -X=($(older conversion "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older conversion "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated conversion files did not change after touching code-generator dep dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -278,10 +294,11 @@ assert_clean touch "staging/src/k8s.io/api/core/v1/types.go" touch "${STAMP}" make generated_files >/dev/null -X=($(newer openapi "${STAMP}")) -if [[ "${#X[*]}" != 1 || ! ( "${X[0]}" =~ "pkg/generated/openapi/zz_generated.openapi.go" ) ]]; then +X="$(newer openapi "${STAMP}")" +if [[ -z "${X}" || ${X} != "./pkg/generated/openapi/zz_generated.openapi.go" ]]; then echo "Wrong generated openapi files changed after touching src file:" - echo "${X[*]:-(none)}" + echo " ${X:-(none)}" | tr '\n' ' ' + echo "" exit 1 fi @@ -294,10 +311,11 @@ assert_clean touch vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go touch "${STAMP}" make generated_files >/dev/null -X=($(older openapi "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older openapi "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated openapi files did not change after touching code-generator file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -306,10 +324,11 @@ assert_clean touch vendor/k8s.io/kube-openapi/cmd/openapi-gen/ touch "${STAMP}" make generated_files >/dev/null -X=($(older openapi "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older openapi "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated openapi files did not change after touching code-generator dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -318,10 +337,11 @@ assert_clean touch vendor/k8s.io/kube-openapi/pkg/generators/openapi.go touch "${STAMP}" make generated_files >/dev/null -X=($(older openapi "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older openapi "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated openapi files did not change after touching code-generator dep file:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi @@ -330,9 +350,10 @@ assert_clean touch vendor/k8s.io/kube-openapi/pkg/generators touch "${STAMP}" make generated_files >/dev/null -X=($(older openapi "${STAMP}")) -if [[ "${#X[*]}" != 0 ]]; then +X="$(older openapi "${STAMP}")" +if [[ -n "${X}" ]]; then echo "Generated openapi files did not change after touching code-generator dep dir:" - echo " ${X[*]:-(none)}" + echo " ${X}" | tr '\n' ' ' + echo "" exit 1 fi From b06533af65566c9e134789e8e419961bc66eef11 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Sat, 9 Feb 2019 22:26:58 +0200 Subject: [PATCH 3/4] verify-generated-files-remake: quote return value. Fix a shellcheck error by quoting a return value properly. --- hack/verify-generated-files-remake.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/verify-generated-files-remake.sh b/hack/verify-generated-files-remake.sh index 7a252f8d951..ea08b741565 100755 --- a/hack/verify-generated-files-remake.sh +++ b/hack/verify-generated-files-remake.sh @@ -23,7 +23,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh" kube::util::ensure_clean_working_dir -_tmpdir="$(kube::realpath $(mktemp -d -t verify-generated-files.XXXXXX))" +_tmpdir="$(kube::realpath "$(mktemp -d -t verify-generated-files.XXXXXX)")" kube::util::trap_add "rm -rf ${_tmpdir}" EXIT _tmp_gopath="${_tmpdir}/go" From f1cb820b16e6f90e0be10502367619c57848dc74 Mon Sep 17 00:00:00 2001 From: Ismo Puustinen Date: Fri, 1 Feb 2019 14:52:38 +0200 Subject: [PATCH 4/4] Remove verify-generated-files-remake.sh from shellcheck failures. --- hack/.shellcheck_failures | 1 - 1 file changed, 1 deletion(-) diff --git a/hack/.shellcheck_failures b/hack/.shellcheck_failures index 3b59cc0fa44..920ac113daf 100644 --- a/hack/.shellcheck_failures +++ b/hack/.shellcheck_failures @@ -125,7 +125,6 @@ ./hack/verify-description.sh ./hack/verify-generated-device-plugin.sh ./hack/verify-generated-docs.sh -./hack/verify-generated-files-remake.sh ./hack/verify-generated-files.sh ./hack/verify-generated-kms.sh ./hack/verify-generated-kubelet-plugin-registration.sh