Generate conversions/deep-copies for experimental. Currently we make (and register) duplicate functions but this is benign.

This commit is contained in:
Muhammed Uluyol
2015-08-07 11:26:44 -07:00
parent 4d5899955e
commit 567bb15432
17 changed files with 661 additions and 127 deletions

View File

@@ -29,11 +29,11 @@ function generate_version() {
local version=$1
local TMPFILE="/tmp/conversion_generated.$(date +%s).go"
echo "Generating for version ${version}"
echo "Generating for ${version}"
sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > "$TMPFILE"
cat >> "$TMPFILE" <<EOF
package ${version}
package ${version##*/}
// AUTO-GENERATED FUNCTIONS START HERE
EOF
@@ -44,14 +44,19 @@ EOF
// AUTO-GENERATED FUNCTIONS END HERE
EOF
mv "$TMPFILE" "pkg/api/${version}/conversion_generated.go"
env GOPATH=$(godep path):$GOPATH goimports -w "$TMPFILE"
mv "$TMPFILE" "pkg/${version}/conversion_generated.go"
}
VERSIONS="v1"
for ver in $VERSIONS; do
# Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS.
KUBE_API_VERSIONS="${ver}" generate_version "${ver}"
done
if ! which goimports >/dev/null; then
echo "goimports not in path, run go get golang.org/x/tools/cmd/goimports"
exit 1
fi
# ex: ts=2 sw=2 et filetype=sh
DEFAULT_VERSIONS="api/v1 expapi/v1"
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
for ver in $VERSIONS; do
# Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS.
KUBE_API_VERSIONS="${ver##*/}" generate_version "${ver}"
done

View File

@@ -27,22 +27,25 @@ gendeepcopy=$(kube::util::find-binary "gendeepcopy")
function result_file_name() {
local version=$1
if [ "${version}" == "api" ]; then
echo "pkg/api/deep_copy_generated.go"
else
echo "pkg/api/${version}/deep_copy_generated.go"
fi
echo "pkg/${version}/deep_copy_generated.go"
}
function generate_version() {
local version=$1
local TMPFILE="/tmp/deep_copy_generated.$(date +%s).go"
echo "Generating for version ${version}"
echo "Generating for ${version}"
# version is group/version, so use the version number as the package name unless
# this is an internal version, in which case use the group name.
pkgname=${version##*/}
if [[ -z $pkgname ]]; then
pkgname=${version%/*}
fi
sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > $TMPFILE
cat >> $TMPFILE <<EOF
package ${version}
package $pkgname
// AUTO-GENERATED FUNCTIONS START HERE
EOF
@@ -53,27 +56,24 @@ EOF
// AUTO-GENERATED FUNCTIONS END HERE
EOF
gofmt -w -s "$TMPFILE"
env GOPATH=$(godep path):$GOPATH goimports -w "$TMPFILE"
mv "$TMPFILE" `result_file_name ${version}`
}
function generate_deep_copies() {
local versions="api v1"
# To avoid compile errors, remove the currently existing files.
for ver in ${versions}; do
rm -f `result_file_name ${ver}`
done
apiVersions=""
for ver in ${versions}; do
# Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS.
if [ "${ver}" != "api" ]; then
apiVersions="${ver}"
fi
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
done
local versions="$@"
# To avoid compile errors, remove the currently existing files.
for ver in ${versions}; do
rm -f `result_file_name ${ver}`
done
for ver in ${versions}; do
# Ensure that the version being processed is registered by setting
# KUBE_API_VERSIONS.
apiVersions="${ver##*/}"
KUBE_API_VERSIONS="${apiVersions}" generate_version "${ver}"
done
}
DEFAULT_VERSIONS="api/ api/v1 expapi/ expapi/v1"
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
generate_deep_copies
# ex: ts=2 sw=2 et filetype=sh

View File

@@ -23,25 +23,31 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
kube::golang::setup_env
APIROOT="${KUBE_ROOT}/pkg/api"
TMP_APIROOT="${KUBE_ROOT}/_tmp/api"
APIROOTS=${APIROOTS:-pkg/api pkg/expapi}
_tmp="${KUBE_ROOT}/_tmp"
mkdir -p "${_tmp}"
cp -a "${APIROOT}" "${TMP_APIROOT}"
cleanup() {
rm -rf "${_tmp}"
}
trap "cleanup" EXIT SIGINT
for APIROOT in ${APIROOTS}; do
mkdir -p "${_tmp}/${APIROOT%/*}"
cp -a "${KUBE_ROOT}/${APIROOT}" "${_tmp}/${APIROOT}"
done
"${KUBE_ROOT}/hack/update-generated-conversions.sh"
echo "diffing ${APIROOT} against freshly generated conversions"
ret=0
diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$?
cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg"
rm -rf "${_tmp}"
if [[ $ret -eq 0 ]]
then
echo "${APIROOT} up to date."
else
echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh"
exit 1
fi
# ex: ts=2 sw=2 et filetype=sh
for APIROOT in ${APIROOTS}; do
TMP_APIROOT="${_tmp}/${APIROOT}"
echo "diffing ${APIROOT} against freshly generated conversions"
ret=0
diff -Naupr -I 'Auto generated by' "${KUBE_ROOT}/${APIROOT}" "${TMP_APIROOT}" || ret=$?
cp -a "${TMP_APIROOT}" "${KUBE_ROOT}/${APIROOT%/*}"
if [[ $ret -eq 0 ]]; then
echo "${APIROOT} up to date."
else
echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh"
exit 1
fi
done

View File

@@ -25,25 +25,32 @@ kube::golang::setup_env
gendeepcopy=$(kube::util::find-binary "gendeepcopy")
APIROOT="${KUBE_ROOT}/pkg/api"
TMP_APIROOT="${KUBE_ROOT}/_tmp/api"
APIROOTS=${APIROOTS:-pkg/api pkg/expapi}
_tmp="${KUBE_ROOT}/_tmp"
mkdir -p "${_tmp}"
cp -a "${APIROOT}" "${TMP_APIROOT}"
cleanup() {
rm -rf "${_tmp}"
}
trap "cleanup" EXIT SIGINT
for APIROOT in ${APIROOTS}; do
mkdir -p "${_tmp}/${APIROOT%/*}"
cp -a "${KUBE_ROOT}/${APIROOT}" "${_tmp}/${APIROOT}"
done
"${KUBE_ROOT}/hack/update-generated-deep-copies.sh"
echo "diffing ${APIROOT} against freshly generated deep copies"
ret=0
diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$?
cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg"
rm -rf "${_tmp}"
if [[ $ret -eq 0 ]]
then
echo "${APIROOT} up to date."
else
echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh"
exit 1
fi
# ex: ts=2 sw=2 et filetype=sh
for APIROOT in ${APIROOTS}; do
TMP_APIROOT="${_tmp}/${APIROOT}"
echo "diffing ${APIROOT} against freshly generated deep copies"
ret=0
diff -Naupr -I 'Auto generated by' "${KUBE_ROOT}/${APIROOT}" "${TMP_APIROOT}" || ret=$?
cp -a ${TMP_APIROOT} "${KUBE_ROOT}/${APIROOT%/*}"
if [[ $ret -eq 0 ]]; then
echo "${APIROOT} up to date."
else
echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh"
exit 1
fi
done