(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (= scope= flags=0 words=[] bindings=[('DOCKER_OPTS', {[VarSub DOCKER_OPTS test_op=VS_TEST_COLON_HYPHEN {[DQ ]}]})]) (= scope= flags=0 words=[] bindings=[('DOCKER_NATIVE', {[VarSub DOCKER_NATIVE test_op=VS_TEST_COLON_HYPHEN {[DQ ]}]})]) (= scope= flags=0 words=[] bindings=[('DOCKER', {[Array {[LIT_CHARS docker]} {[VarSub DOCKER_OPTS]}]})]) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE]]})] [LIT_CHARS /..]})]) (Com {[LIT_CHARS cd]} {[DQ [VarSub KUBE_ROOT]]} ) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT', {[VarSub PWD]})]) (Com {[LIT_CHARS source]} {[LIT_CHARS hack/lib/init.sh]} ) (= scope= flags=2 words=[] bindings=[('KUBE_SKIP_CONFIRMATIONS', {[DQ [VarSub KUBE_SKIP_CONFIRMATIONS test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS n]}]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_BUILD_RUN_IMAGES', {[DQ [VarSub KUBE_BUILD_RUN_IMAGES test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS n]}]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_GCS_UPLOAD_RELEASE', {[DQ [VarSub KUBE_GCS_UPLOAD_RELEASE test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS n]}]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_GCS_NO_CACHING', {[DQ [VarSub KUBE_GCS_NO_CACHING test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS y]}]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_GCS_MAKE_PUBLIC', {[DQ [VarSub KUBE_GCS_MAKE_PUBLIC test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS y]}]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_GCS_RELEASE_PREFIX', {[VarSub KUBE_GCS_RELEASE_PREFIX test_op=VS_TEST_HYPHEN {[LIT_CHARS devel]}] [LIT_CHARS /]})]) (= scope= flags=2 words=[] bindings=[('KUBE_GCS_DOCKER_REG_PREFIX', {[VarSub KUBE_GCS_DOCKER_REG_PREFIX test_op=VS_TEST_HYPHEN {[LIT_CHARS docker-reg]}] [LIT_CHARS /]})]) (= scope= flags=2 words=[] bindings=[('KUBE_BUILD_IMAGE_REPO', {[LIT_CHARS kube-build]})]) (= scope= flags=2 words=[] bindings=[('KUBE_BUILD_IMAGE_CROSS_TAG', {[LIT_CHARS cross]})]) (= scope= flags=2 words=[] bindings=[('KUBE_BUILD_IMAGE_CROSS', {[DQ [VarSub KUBE_BUILD_IMAGE_REPO][LIT_CHARS ":"][VarSub KUBE_BUILD_IMAGE_CROSS_TAG]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_BUILD_GOLANG_VERSION', {[LIT_CHARS 1.3]})]) (= scope= flags=2 words=[] bindings=[('LOCAL_OUTPUT_ROOT', {[DQ [VarSub KUBE_ROOT][LIT_CHARS /_output]]})]) (= scope= flags=2 words=[] bindings=[('LOCAL_OUTPUT_SUBPATH', {[DQ [VarSub LOCAL_OUTPUT_ROOT][LIT_CHARS /dockerized]]})]) (= scope= flags=2 words=[] bindings=[('LOCAL_OUTPUT_BINPATH', {[DQ [VarSub LOCAL_OUTPUT_SUBPATH][LIT_CHARS /bin]]})]) (= scope= flags=2 words=[] bindings=[('LOCAL_OUTPUT_IMAGE_STAGING', {[DQ [VarSub LOCAL_OUTPUT_ROOT][LIT_CHARS /images]]})]) (= scope= flags=2 words=[] bindings=[('OUTPUT_BINPATH', {[DQ [VarSub CUSTOM_OUTPUT_BINPATH test_op=VS_TEST_COLON_HYPHEN {[VarSub LOCAL_OUTPUT_BINPATH]}]]})]) (= scope= flags=2 words=[] bindings=[('REMOTE_OUTPUT_ROOT', {[DQ [LIT_CHARS /go/src/][VarSub KUBE_GO_PACKAGE][LIT_CHARS /_output]]})]) (= scope= flags=2 words=[] bindings=[('REMOTE_OUTPUT_SUBPATH', {[DQ [VarSub REMOTE_OUTPUT_ROOT][LIT_CHARS /dockerized]]})]) (= scope= flags=2 words=[] bindings=[('REMOTE_OUTPUT_BINPATH', {[DQ [VarSub REMOTE_OUTPUT_SUBPATH][LIT_CHARS /bin]]})]) (= scope= flags=2 words=[] bindings=[('DOCKER_MOUNT_ARGS_BASE', {[Array {[LIT_CHARS --volume]} {[DQ [VarSub OUTPUT_BINPATH][LIT_CHARS ":"][VarSub REMOTE_OUTPUT_BINPATH]]}]})]) (= scope= flags=2 words=[] bindings=[('REMOTE_OUTPUT_GOPATH', {[DQ [VarSub REMOTE_OUTPUT_SUBPATH][LIT_CHARS /go]]})]) (= scope= flags=2 words=[] bindings=[('REMOTE_GODEP_GOPATH', {[DQ [LIT_CHARS /go/src/][VarSub KUBE_GO_PACKAGE][LIT_CHARS /Godeps/_workspace/pkg]]})]) (= scope= flags=2 words=[] bindings=[('DOCKER_DATA_MOUNT_ARGS', {[Array {OP_NEWLINE "\n"} {[LIT_CHARS --volume]} {[DQ [VarSub REMOTE_OUTPUT_GOPATH]]} {OP_NEWLINE "\n"} {[LIT_CHARS --volume]} {[DQ [VarSub REMOTE_GODEP_GOPATH]]} {OP_NEWLINE "\n"}]})]) (= scope= flags=2 words=[] bindings=[('KUBE_RUN_IMAGE_BASE', {[DQ [LIT_CHARS kubernetes]]})]) (= scope= flags=2 words=[] bindings=[('KUBE_RUN_IMAGES', {[Array {OP_NEWLINE "\n"} {[LIT_CHARS kube-apiserver]} {OP_NEWLINE "\n"} {[LIT_CHARS kube-controller-manager]} {OP_NEWLINE "\n"} {[LIT_CHARS kube-proxy]} {OP_NEWLINE "\n"} {[LIT_CHARS kube-scheduler]} {OP_NEWLINE "\n"} {[LIT_CHARS kubelet]} {OP_NEWLINE "\n"} {[LIT_CHARS bootstrap]} {OP_NEWLINE "\n"}]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_STAGE', {[DQ [VarSub LOCAL_OUTPUT_ROOT][LIT_CHARS /release-stage]]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_DIR', {[DQ [VarSub LOCAL_OUTPUT_ROOT][LIT_CHARS /release-tars]]})]) (FunctionDef kube::build::verify_prereqs [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Verifying Prerequisites...."]]} ) (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS docker]})]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Can't find 'docker' in PATH, please fix and retry."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "See https://docs.docker.com/installation/#installation for installation instructions."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (If (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS is_osx]} ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub DOCKER_NATIVE]]}}) (List (If (DBracket {B1 UNARY_STRING_z {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS boot2docker]})]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "It looks like you are running on Mac OS X and boot2docker can't be found."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "See: https://docs.docker.com/installation/mac/"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[ComSub (Com {[LIT_CHARS boot2docker]} {[LIT_CHARS status]})]} {[DQ [LIT_CHARS running]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "boot2docker VM isn't started. Please run 'boot2docker start'"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Setting boot2docker clock"]]} ) (Com {[LIT_CHARS boot2docker]} {[LIT_CHARS ssh]} {[LIT_CHARS sudo]} {[LIT_CHARS date]} {[LIT_CHARS -u]} {[LIT_CHARS -D]} {[DQ [LIT_CHARS "%Y%m%d%H%M.%S"]]} {[LIT_CHARS --set]} {[DQ [ComSub (Com {[LIT_CHARS date]} {[LIT_CHARS -u]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS Y] [LIT_OTHER "%"] [LIT_CHARS m] [LIT_OTHER "%"] [LIT_CHARS d] [LIT_OTHER "%"] [LIT_CHARS H] [LIT_OTHER "%"] [LIT_CHARS M.] [LIT_OTHER "%"] [LIT_CHARS S]})]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) ) ) ) (If (Pipeline! (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS info]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (List redirects=[(DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1)] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Can't connect to 'docker' daemon. please fix and retry."]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Possible causes:"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - On Mac OS X, boot2docker VM isn't installed or started"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - On Mac OS X, docker env variable isn't set approriately. Run:"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(boot2docker shellinit)"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - On Linux, user isn't in 'docker' group. Add and relogin."]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - Something like 'sudo usermod -a -G docker "][VarSub USER test_op=VS_TEST_HYPHEN {[LIT_CHARS user]}][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - RHEL7 bug and workaround: https://bugzilla.redhat.com/show_bug.cgi?id=1119282#c8"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - On Linux, Docker daemon hasn't been started or has crashed"]]} ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('KUBE_ROOT_HASH', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS short_hash]} {[DQ [VarSub KUBE_ROOT]]})]})]) (= scope= flags=0 words=[] bindings=[('KUBE_BUILD_IMAGE_TAG', {[DQ [LIT_CHARS build-][VarSub KUBE_ROOT_HASH]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_BUILD_IMAGE', {[DQ [VarSub KUBE_BUILD_IMAGE_REPO][LIT_CHARS ":"][VarSub KUBE_BUILD_IMAGE_TAG]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_BUILD_CONTAINER_NAME', {[DQ [LIT_CHARS kube-build-][VarSub KUBE_ROOT_HASH]]})]) (= scope= flags=0 words=[] bindings=[('KUBE_BUILD_DATA_CONTAINER_NAME', {[DQ [LIT_CHARS kube-build-data-][VarSub KUBE_ROOT_HASH]]})]) (= scope= flags=0 words=[] bindings=[('DOCKER_MOUNT_ARGS', {[Array {[DQ [VarSub DOCKER_MOUNT_ARGS_BASE bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS --volumes-from]} {[DQ [VarSub KUBE_BUILD_DATA_CONTAINER_NAME]]}]})]) ) ) (FunctionDef kube::build::is_osx [] (DBracket {B2 BINARY_STRING_EQUAL {[DQ [ComSub (Com {[LIT_CHARS uname]})]]} {[DQ [LIT_CHARS Darwin]]}}) ) (FunctionDef kube::build::clean_output [] (List (If (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build_image_built]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Cleaning out _output/dockerized/bin/ via docker build image"]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS run_build_command]} {[LIT_CHARS bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "rm -rf '"][VarSub REMOTE_OUTPUT_BINPATH][LIT_CHARS "'/*"]]} ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! Build image not built. Cannot clean via docker build image."]]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Removing data container"]]} ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rm]} {[LIT_CHARS -v]} {[DQ [VarSub KUBE_BUILD_DATA_CONTAINER_NAME]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Cleaning out local _output directory"]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub LOCAL_OUTPUT_ROOT]]} ) ) ) (FunctionDef kube::build::prepare_output [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub LOCAL_OUTPUT_SUBPATH]]} ) (If (List (Fork (Com {[LIT_CHARS which]} {[LIT_CHARS selinuxenabled]} ) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS selinuxenabled]} ) (Com {[LIT_CHARS which]} {[LIT_CHARS chcon]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) ) (If (DBracket {B! {B2 BINARY_STRING_TILDE_EQUAL {[ComSub (Com {[LIT_CHARS ls]} {[LIT_CHARS -Zd]} {[DQ [VarSub LOCAL_OUTPUT_ROOT]]})]} {[LIT_CHARS svirt_sandbox_file_t]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Applying SELinux policy to '_output' directory."]]} ) (If (Pipeline! (Com {[LIT_CHARS chcon]} {[LIT_CHARS -Rt]} {[LIT_CHARS svirt_sandbox_file_t]} {[DQ [VarSub LOCAL_OUTPUT_ROOT]]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " ***Failed***. This may be because you have root owned files under _output."]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " Continuing, but this build may fail later if SELinux prevents access."]]} ) ) ) ) ) ) ) ) (FunctionDef kube::build::docker_image_exists [] (List (AndOr OP_OR_IF (DBracket {B? LOGICAL_BINARY_AND {B1 UNARY_STRING_n {[VarSub 1]}} {B1 UNARY_STRING_n {[VarSub 2]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! Internal error. Image not specified in docker_image_exists."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 2]} ) ) ) (Pipeline (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS images]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -Eq]} {[DQ [LIT_CHARS "^"][VarSub 1][\ LIT_ESCAPED_CHAR "\\s"][LIT_CHARS "+"][VarSub 2][\ LIT_ESCAPED_CHAR "\\s"][LIT_CHARS "+"]]} ) ) ) ) (FunctionDef kube::build::short_hash [] (List (AndOr OP_OR_IF (DBracket {B2 BINARY_INT_EQ {[VarSub #]} {[LIT_CHARS 1]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! Internal error. No data based to short_hash."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 2]} ) ) ) (= scope= flags=0 words=[{[LIT_CHARS short_hash]}] bindings=[]) (If (Com {[LIT_CHARS which]} {[LIT_CHARS md5]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('short_hash', {[ComSub (Com {[LIT_CHARS md5]} {[LIT_CHARS -q]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('short_hash', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS md5sum]}) )]})]) ) (Com {[LIT_CHARS echo]} {[VarSub short_hash transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 5]}}]]} ) ) ) (FunctionDef kube::build::destroy_container [] (List (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS kill]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS wait]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS -v]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) ) ) (FunctionDef kube::build::build_image_built [] (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_image_exists]} {[DQ [VarSub KUBE_BUILD_IMAGE_REPO]]} {[DQ [VarSub KUBE_BUILD_IMAGE_TAG]]} ) ) (FunctionDef kube::build::ensure_golang [] (AndOr OP_OR_IF (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_image_exists]} {[LIT_CHARS golang]} {[LIT_CHARS 1.3]} ) (List (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_SKIP_CONFIRMATIONS]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "You don't have a local copy of the golang docker image. This image is 450MB."]]} ) (Com {[LIT_CHARS read]} {[LIT_CHARS -p]} {[DQ [LIT_CHARS "Download it now? [y/n] "]]} {[LIT_CHARS -r]} ) (Com {[LIT_CHARS echo]} ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub REPLY]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS Aborting.]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Pulling docker image: golang:"][VarSub KUBE_BUILD_GOLANG_VERSION]]} ) (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS pull]} {[LIT_CHARS golang] [LIT_OTHER ":"] [VarSub KUBE_BUILD_GOLANG_VERSION]} ) ) ) ) (FunctionDef kube::build::build_image [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('build_context_dir', {[DQ [VarSub LOCAL_OUTPUT_IMAGE_STAGING][LIT_CHARS /][VarSub KUBE_BUILD_IMAGE]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('source', {[Array {OP_NEWLINE "\n"} {[LIT_CHARS api]} {OP_NEWLINE "\n"} {[LIT_CHARS build]} {OP_NEWLINE "\n"} {[LIT_CHARS cmd]} {OP_NEWLINE "\n"} {[LIT_CHARS examples]} {OP_NEWLINE "\n"} {[LIT_CHARS Godeps/_workspace/src]} {OP_NEWLINE "\n"} {[LIT_CHARS Godeps/Godeps.json]} {OP_NEWLINE "\n"} {[LIT_CHARS hack]} {OP_NEWLINE "\n"} {[LIT_CHARS LICENSE]} {OP_NEWLINE "\n"} {[LIT_CHARS pkg]} {OP_NEWLINE "\n"} {[LIT_CHARS plugin]} {OP_NEWLINE "\n"} {[LIT_CHARS README.md]} {OP_NEWLINE "\n"} {[LIT_CHARS test]} {OP_NEWLINE "\n"} {[LIT_CHARS third_party]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build_image_cross]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub build_context_dir]]} ) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[DQ [VarSub build_context_dir][LIT_CHARS /kube-source.tar.gz]]} {[DQ [VarSub source bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS version] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS get_version_vars]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS version] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS save_version_vars]} {[DQ [VarSub build_context_dir][LIT_CHARS /kube-version-defs]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS build/build-image/Dockerfile]} {[VarSub build_context_dir] [LIT_CHARS /Dockerfile]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_build]} {[DQ [VarSub KUBE_BUILD_IMAGE]]} {[DQ [VarSub build_context_dir]]} ) ) ) (FunctionDef kube::build::build_image_cross [] (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS ensure_golang]} ) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('build_context_dir', {[DQ [VarSub LOCAL_OUTPUT_ROOT][LIT_CHARS /images/][VarSub KUBE_BUILD_IMAGE][LIT_CHARS /cross]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub build_context_dir]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS build/build-image/cross/Dockerfile]} {[VarSub build_context_dir] [LIT_CHARS /Dockerfile]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_build]} {[DQ [VarSub KUBE_BUILD_IMAGE_CROSS]]} {[DQ [VarSub build_context_dir]]} ) ) ) (FunctionDef kube::build::run_image [] (List (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_BUILD_RUN_IMAGES]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('build_context_base', {[DQ [VarSub LOCAL_OUTPUT_IMAGE_STAGING][LIT_CHARS /][VarSub KUBE_RUN_IMAGE_BASE]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub build_context_base]]} ) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[DQ [VarSub build_context_base][LIT_CHARS /kube-bins.tar.gz]]} {[LIT_CHARS -C]} {[DQ [VarSub LOCAL_OUTPUT_BINPATH][LIT_CHARS /linux/amd64]]} {[DQ [VarSub KUBE_RUN_IMAGES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[LIT_CHARS build/run-images/base/] [LIT_OTHER "*"]} {[DQ [VarSub build_context_base][LIT_CHARS /]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_build]} {[DQ [VarSub KUBE_RUN_IMAGE_BASE]]} {[DQ [VarSub build_context_base]]} ) (= scope= flags=0 words=[{[LIT_CHARS b]}] bindings=[]) (For b [{[DQ [VarSub KUBE_RUN_IMAGES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('sub_context_dir', {[DQ [VarSub build_context_base][LIT_CHARS -][VarSub b]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub sub_context_dir]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[LIT_CHARS build/run-images/] [VarSub b] [LIT_CHARS /] [LIT_OTHER "*"]} {[DQ [VarSub sub_context_dir][LIT_CHARS /]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS docker_build]} {[DQ [VarSub KUBE_RUN_IMAGE_BASE][LIT_CHARS -][VarSub b]]} {[DQ [VarSub sub_context_dir]]} ) ) ) ) ) (FunctionDef kube::build::docker_build [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('image', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('context_dir', {[VarSub 2]})]) (= scope= flags=0 words=[{[LIT_CHARS -ra]}] bindings=[('build_cmd', {[Array {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS build]} {[LIT_CHARS -t]} {[DQ [VarSub image]]} {[DQ [VarSub context_dir]]}]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building Docker image "][VarSub image][LIT_CHARS .]]} ) (= scope= flags=0 words=[{[LIT_CHARS docker_output]}] bindings=[]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('docker_output', {[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]{[DQ [VarSub build_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]})]) (List (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "+++ Docker build command failed for "][VarSub image][LIT_CHARS "\n"][LIT_CHARS "\n"][VarSub docker_output][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "To retry manually, run:\n"][LIT_CHARS "\n"][VarSub build_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_STAR "*"}})][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) ) ) (FunctionDef kube::build::clean_image [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('image', {[VarSub 1]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Deleting docker image "][VarSub image]]} ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rmi]} {[VarSub image]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]} ) ) ) ) (FunctionDef kube::build::clean_images [] (List (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS clean_image]} {[DQ [VarSub KUBE_BUILD_IMAGE]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS clean_image]} {[DQ [VarSub KUBE_RUN_IMAGE_BASE]]} ) (= scope= flags=0 words=[{[LIT_CHARS b]}] bindings=[]) (For b [{[DQ [VarSub KUBE_RUN_IMAGES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS clean_image]} {[DQ [VarSub KUBE_RUN_IMAGE_BASE][LIT_CHARS -][VarSub b]]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Cleaning all other untagged docker images"]]} ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rmi]} {[ComSub (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS images]} {[LIT_CHARS -q]} {[LIT_CHARS --filter]} {[SQ ]})]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]} ) ) ) ) (FunctionDef kube::build::ensure_data_container [] (If (Pipeline! (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS inspect]} {[DQ [VarSub KUBE_BUILD_DATA_CONTAINER_NAME]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Creating data container"]]} ) (= scope= flags=0 words=[{[LIT_CHARS -ra]}] bindings=[('docker_cmd', {[Array {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS run]} {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER_DATA_MOUNT_ARGS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {OP_NEWLINE "\n"} {[LIT_CHARS --name]} {[DQ [VarSub KUBE_BUILD_DATA_CONTAINER_NAME]]} {OP_NEWLINE "\n"} {[DQ [VarSub KUBE_BUILD_IMAGE]]} {OP_NEWLINE "\n"} {[LIT_CHARS true]} {OP_NEWLINE "\n"}]})]) (Com {[DQ [VarSub docker_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) ) ) ) (FunctionDef kube::build::run_build_command [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Running build command...."]]} ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_NOT_EQUAL {[VarSub #]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Invalid input."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 4]} ) ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS ensure_data_container]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS prepare_output]} ) (= scope= flags=0 words=[{[LIT_CHARS -a]}] bindings=[('docker_run_opts', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "--name="][VarSub KUBE_BUILD_CONTAINER_NAME]]} {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER_MOUNT_ARGS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {OP_NEWLINE "\n"}]})]) (If (DBracket {B1 UNARY_FILE_t {[LIT_CHARS 0]}}) (= scope= flags=0 words=[] bindings=[('docker_run_opts+', {[Array {[LIT_CHARS --interactive]} {[LIT_CHARS --tty]}]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('docker_run_opts+', {[Array {[LIT_CHARS --attach] [LIT_DBRACKET_LIKE "="] [LIT_CHARS stdout]} {[LIT_CHARS --attach] [LIT_DBRACKET_LIKE "="] [LIT_CHARS stderr]}]})]) ) (= scope= flags=0 words=[{[LIT_CHARS -ra]}] bindings=[('docker_cmd', {[Array {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS run]} {[DQ [VarSub docker_run_opts bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [VarSub KUBE_BUILD_IMAGE]]}]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS destroy_container]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME]]} ) (Com {[DQ [VarSub docker_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS destroy_container]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME]]} ) ) ) (FunctionDef kube::build::is_output_remote [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub LOCAL_OUTPUT_SUBPATH][LIT_CHARS /test_for_remote]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS run_build_command]} {[LIT_CHARS touch]} {[DQ [VarSub REMOTE_OUTPUT_BINPATH][LIT_CHARS /test_for_remote]]} ) (DBracket {B! {B1 UNARY_FILE_e {[DQ [VarSub LOCAL_OUTPUT_BINPATH][LIT_CHARS /test_for_remote]]}}}) ) ) (FunctionDef kube::build::copy_output [] (If (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS is_output_remote]} ) (List (= scope= flags=0 words=[{[LIT_CHARS -a]}] bindings=[('docker_run_opts', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "--name="][VarSub KUBE_BUILD_CONTAINER_NAME]]} {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER_MOUNT_ARGS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {OP_NEWLINE "\n"} {[LIT_CHARS -d]} {OP_NEWLINE "\n"}]})]) (= scope= flags=0 words=[{[LIT_CHARS -ra]}] bindings=[('docker_cmd', {[Array {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS run]} {[DQ [VarSub docker_run_opts bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [VarSub KUBE_BUILD_IMAGE]]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Syncing back _output/dockerized/bin directory from remote Docker"]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub LOCAL_OUTPUT_BINPATH]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub LOCAL_OUTPUT_BINPATH]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS destroy_container]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME]]} ) (Com {[DQ [VarSub docker_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "cp -r "][VarSub REMOTE_OUTPUT_BINPATH][LIT_CHARS " /tmp/bin;touch /tmp/finished;rm /tmp/bin/test_for_remote;/bin/sleep 600"]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('count', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS true]} ) (List (If (Com {[LIT_CHARS docker]} {[DQ [VarSub DOCKER_OPTS]]} {[LIT_CHARS cp]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME][LIT_CHARS ":/tmp/finished"]]} {[DQ [VarSub LOCAL_OUTPUT_BINPATH]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (List (Com {[LIT_CHARS docker]} {[DQ [VarSub DOCKER_OPTS]]} {[LIT_CHARS cp]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME][LIT_CHARS ":/tmp/bin"]]} {[DQ [VarSub LOCAL_OUTPUT_SUBPATH]]} ) (Com {[LIT_CHARS break]} ) ) ) (Com {[LIT_CHARS let]} {[LIT_VAR_LIKE "count="] [LIT_CHARS count] [LIT_OTHER "+"] [LIT_CHARS 1] =} ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub count]} {[LIT_CHARS 60]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! Timed out waiting for binaries..."]]} ) (Com {[LIT_CHARS break]} ) ) ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 5]} ) ) ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS -v]} {[DQ [VarSub KUBE_BUILD_CONTAINER_NAME]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Output directory is local. No need to copy results out."]]} ) ) ) (FunctionDef kube::release::package_tarballs [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub RELEASE_DIR]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub RELEASE_DIR]]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS package_client_tarballs]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS package_server_tarballs]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS package_salt_tarball]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS package_test_tarball]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS package_full_tarball]} ) ) ) (FunctionDef kube::release::package_client_tarballs [] (List (= scope= flags=0 words=[{[LIT_CHARS platform]}, {[LIT_CHARS platforms]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('platforms', {[Array {[ComSub (List (Com {[LIT_CHARS cd]} {[DQ [VarSub LOCAL_OUTPUT_BINPATH]]}) (Com {[LIT_CHARS echo]} {[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}) )]}]})]) (For platform [{[DQ [VarSub platforms bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('platform_tag', {[VarSub platform transform_ops=[PatSub {[\ LIT_ESCAPED_CHAR "\\/"]} {[LIT_CHARS -]}]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building tarball: client "][VarSub platform_tag]]} ) (= scope= flags=0 words=[] bindings=[('release_stage', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /client/][VarSub platform_tag][LIT_CHARS /kubernetes]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /client/bin]]} ) (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub platform transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} {[DQ [LIT_CHARS windows]]}}) (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES_WIN bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) ) (Com {[LIT_CHARS cp]} {[DQ [VarSub client_bins bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[PatSub {} {[VarSub LOCAL_OUTPUT_BINPATH] [LIT_SLASH /] [VarSub platform] [LIT_SLASH /]} do_suffix]]]} {[DQ [VarSub release_stage][LIT_CHARS /client/bin/]]} ) (= scope= flags=0 words=[] bindings=[('package_name', {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes-client-][VarSub platform_tag][LIT_CHARS .tar.gz]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS create_tarball]} {[DQ [VarSub package_name]]} {[DQ [VarSub release_stage][LIT_CHARS /..]]} ) ) ) ) ) (FunctionDef kube::release::package_server_tarballs [] (List (= scope= flags=0 words=[{[LIT_CHARS platform]}] bindings=[]) (For platform [{[DQ [VarSub KUBE_SERVER_PLATFORMS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('platform_tag', {[VarSub platform transform_ops=[PatSub {[\ LIT_ESCAPED_CHAR "\\/"]} {[LIT_CHARS -]}]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building tarball: server "][VarSub platform_tag]]} ) (= scope= flags=0 words=[] bindings=[('release_stage', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /server/][VarSub platform_tag][LIT_CHARS /kubernetes]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /server/bin]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub KUBE_SERVER_BINARIES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[PatSub {} {[VarSub LOCAL_OUTPUT_BINPATH] [LIT_SLASH /] [VarSub platform] [LIT_SLASH /]} do_suffix]]]} {[DQ [VarSub release_stage][LIT_CHARS /server/bin/]]} ) (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub platform transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} {[DQ [LIT_CHARS windows]]}}) (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES_WIN bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) ) (Com {[LIT_CHARS cp]} {[DQ [VarSub client_bins bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[PatSub {} {[VarSub LOCAL_OUTPUT_BINPATH] [LIT_SLASH /] [VarSub platform] [LIT_SLASH /]} do_suffix]]]} {[DQ [VarSub release_stage][LIT_CHARS /server/bin/]]} ) (= scope= flags=0 words=[] bindings=[('package_name', {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes-server-][VarSub platform_tag][LIT_CHARS .tar.gz]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS create_tarball]} {[DQ [VarSub package_name]]} {[DQ [VarSub release_stage][LIT_CHARS /..]]} ) ) ) ) ) (FunctionDef kube::release::package_salt_tarball [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building tarball: salt"]]} ) (= scope= flags=0 words=[] bindings=[('release_stage', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /salt/kubernetes]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster/saltbase]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (= scope= flags=0 words=[] bindings=[('package_name', {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes-salt.tar.gz]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS create_tarball]} {[DQ [VarSub package_name]]} {[DQ [VarSub release_stage][LIT_CHARS /..]]} ) ) ) (FunctionDef kube::release::package_test_tarball [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building tarball: test"]]} ) (= scope= flags=0 words=[] bindings=[('release_stage', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /test/kubernetes]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage]]} ) (= scope= flags=0 words=[{[LIT_CHARS platform]}] bindings=[]) (For platform [{[DQ [VarSub KUBE_CLIENT_PLATFORMS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('test_bins', {[Array {[DQ [VarSub KUBE_TEST_BINARIES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub platform transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} {[DQ [LIT_CHARS windows]]}}) (= scope= flags=0 words=[] bindings=[('test_bins', {[Array {[DQ [VarSub KUBE_TEST_BINARIES_WIN bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /platforms/][VarSub platform]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub test_bins bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[PatSub {} {[VarSub LOCAL_OUTPUT_BINPATH] [LIT_SLASH /] [VarSub platform] [LIT_SLASH /]} do_suffix]]]} {[DQ [VarSub release_stage][LIT_CHARS /platforms/][VarSub platform]]} ) ) ) (Pipeline (Com {[LIT_CHARS tar]} {[LIT_CHARS c]} {[VarSub KUBE_TEST_PORTABLE bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]} ) (Com {[LIT_CHARS tar]} {[LIT_CHARS x]} {[LIT_CHARS -C]} {[VarSub release_stage]} ) ) (= scope= flags=0 words=[] bindings=[('package_name', {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes-test.tar.gz]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS create_tarball]} {[DQ [VarSub package_name]]} {[DQ [VarSub release_stage][LIT_CHARS /..]]} ) ) ) (FunctionDef kube::release::package_full_tarball [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Building tarball: full"]]} ) (= scope= flags=0 words=[] bindings=[('release_stage', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /full/kubernetes]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage]]} ) (= scope= flags=0 words=[{[LIT_CHARS platform]}] bindings=[]) (For platform [{[DQ [VarSub KUBE_CLIENT_PLATFORMS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub platform transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} {[DQ [LIT_CHARS windows]]}}) (= scope= flags=0 words=[] bindings=[('client_bins', {[Array {[DQ [VarSub KUBE_CLIENT_BINARIES_WIN bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]})]) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /platforms/][VarSub platform]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub client_bins bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[PatSub {} {[VarSub LOCAL_OUTPUT_BINPATH] [LIT_SLASH /] [VarSub platform] [LIT_SLASH /]} do_suffix]]]} {[DQ [VarSub release_stage][LIT_CHARS /platforms/][VarSub platform]]} ) ) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /cluster]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub release_stage][LIT_CHARS /cluster/saltbase]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /server]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes-salt.tar.gz]]} {[DQ [VarSub release_stage][LIT_CHARS /server/]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub RELEASE_DIR]] [LIT_CHARS /kubernetes-server-] [LIT_OTHER "*"] [LIT_CHARS .tar.gz]} {[DQ [VarSub release_stage][LIT_CHARS /server/]]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub release_stage][LIT_CHARS /third_party]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /third_party/htpasswd]]} {[DQ [VarSub release_stage][LIT_CHARS /third_party/htpasswd]]} ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /examples]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /README.md]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /LICENSE]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (Com {[LIT_CHARS cp]} {[DQ [VarSub KUBE_ROOT][LIT_CHARS /Vagrantfile]]} {[DQ [VarSub release_stage][LIT_CHARS /]]} ) (= scope= flags=0 words=[] bindings=[('package_name', {[DQ [VarSub RELEASE_DIR][LIT_CHARS /kubernetes.tar.gz]]})]) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS create_tarball]} {[DQ [VarSub package_name]]} {[DQ [VarSub release_stage][LIT_CHARS /..]]} ) ) ) (FunctionDef kube::release::create_tarball [] (List (= scope= flags=0 words=[] bindings=[('tarfile', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('stagingdir', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('tar', {[LIT_CHARS tar]})]) (If (List (Fork (Com {[LIT_CHARS which]} {[LIT_CHARS gtar]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (= scope= flags=0 words=[] bindings=[('tar', {[LIT_CHARS gtar]})]) ) (= scope= flags=0 words=[] bindings=[('tar_cmd', {[Array {[DQ [VarSub tar]]} {[DQ [LIT_CHARS czf]]} {[DQ [VarSub tarfile]]} {[DQ [LIT_CHARS -C]]} {[DQ [VarSub stagingdir]]} {[DQ [LIT_CHARS kubernetes]]}]})]) (If (Pipeline (Com {[DQ [VarSub tar]]} {[LIT_CHARS --version]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[LIT_CHARS GNU]} ) ) (= scope= flags=0 words=[] bindings=[('tar_cmd', {[Array {[DQ [VarSub tar_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [LIT_CHARS "--owner=0"]]} {[DQ [LIT_CHARS "--group=0"]]}]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " !!! GNU tar not available. User names will be embedded in output and"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " release tars are not official. Build on Linux or install GNU tar"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " on Mac OS X (brew install gnu-tar)"]]} ) ) ) (Com {[DQ [VarSub tar_cmd bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) ) ) (FunctionDef kube::release::gcs::release [] (List (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_GCS_UPLOAD_RELEASE]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gcs] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS verify_prereqs]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gcs] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS ensure_release_bucket]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gcs] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS push_images]} ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gcs] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS copy_release_artifacts]} ) ) ) (FunctionDef kube::release::gcs::verify_prereqs [] (List (If (DBracket {B? LOGICAL_BINARY_OR {B1 UNARY_STRING_z {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS gsutil]})]]}} {B1 UNARY_STRING_z {[DQ [ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS gcloud]})]]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Releasing Kubernetes requires gsutil and gcloud. Please download,"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "install and authorize through the Google Cloud SDK: "]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " https://developers.google.com/cloud/sdk/"]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub GCLOUD_ACCOUNT test_op=VS_TEST_HYPHEN {}]]}}) (= scope= flags=0 words=[] bindings=[('GCLOUD_ACCOUNT', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS gcloud]} {[LIT_CHARS auth]} {[LIT_CHARS list]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub GCLOUD_ACCOUNT test_op=VS_TEST_HYPHEN {}]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "No account authorized through gcloud. Please fix with:"]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " gcloud auth login"]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub GCLOUD_PROJECT test_op=VS_TEST_HYPHEN {}]]}}) (= scope= flags=0 words=[] bindings=[('GCLOUD_PROJECT', {[ComSub (Pipeline (Com {[LIT_CHARS gcloud]} {[LIT_CHARS config]} {[LIT_CHARS list]} {[LIT_CHARS project]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]})]) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub GCLOUD_PROJECT test_op=VS_TEST_HYPHEN {}]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "No account authorized through gcloud. Please fix with:"]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " gcloud config set project "]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) ) ) (FunctionDef kube::release::gcs::ensure_release_bucket [] (List (= scope= flags=0 words=[{[LIT_CHARS project_hash]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('project_hash', {[ComSub (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS build] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS short_hash]} {[DQ [VarSub GCLOUD_PROJECT]]})]})]) (= scope= flags=0 words=[] bindings=[('KUBE_GCS_RELEASE_BUCKET', {[VarSub KUBE_GCS_RELEASE_BUCKET test_op=VS_TEST_HYPHEN {[LIT_CHARS kubernetes-releases-] [VarSub project_hash]}]})]) (If (Pipeline! (Com {[LIT_CHARS gsutil]} {[LIT_CHARS ls]} {[DQ [LIT_CHARS "gs://"][VarSub KUBE_GCS_RELEASE_BUCKET]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Creating Google Cloud Storage bucket: "][VarSub KUBE_GCS_RELEASE_BUCKET]]} ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS mb]} {[LIT_CHARS -p]} {[DQ [VarSub GCLOUD_PROJECT]]} {[DQ [LIT_CHARS "gs://"][VarSub KUBE_GCS_RELEASE_BUCKET]]} ) ) ) ) ) (FunctionDef kube::release::gcs::ensure_docker_registry [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('reg_container_name', {[DQ [LIT_CHARS gcs-registry]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('running', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS inspect]} {[VarSub reg_container_name]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS build/json-extractor.py]} {[LIT_CHARS 0.State.Running]}) )]})]) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub running]]} {[DQ [LIT_CHARS true]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('boto', {[TildeSub ''] [LIT_CHARS /.config/gcloud/legacy_credentials/] [VarSub GCLOUD_ACCOUNT] [LIT_CHARS /.boto]})]) (= scope= flags=0 words=[{[LIT_CHARS refresh_token]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('refresh_token', {[ComSub (Pipeline (Com {[LIT_CHARS grep]} {[SQ ]}) )]})]) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub refresh_token]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Couldn't find OAuth 2 refresh token in "][VarSub boto]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (AndOr OP_OR_IF (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rm]} {[VarSub reg_container_name]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS true]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Starting GCS backed Docker registry"]]} ) (= scope= flags=0 words=[{[LIT_CHARS -ra]}] bindings=[('docker_cmd', {[Array {OP_NEWLINE "\n"} {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS run]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS "--name="][VarSub reg_container_name]]} {OP_NEWLINE "\n"} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "GCS_BUCKET="][VarSub KUBE_GCS_RELEASE_BUCKET]]} {OP_NEWLINE "\n"} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "STORAGE_PATH="][VarSub KUBE_GCS_DOCKER_REG_PREFIX]]} {OP_NEWLINE "\n"} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "GCP_OAUTH2_REFRESH_TOKEN="][VarSub refresh_token]]} {OP_NEWLINE "\n"} {[LIT_CHARS -p]} {[LIT_CHARS 127.0.0.1] [LIT_OTHER ":"] [LIT_CHARS 5000] [LIT_OTHER ":"] [LIT_CHARS 5000]} {OP_NEWLINE "\n"} {[LIT_CHARS google/docker-registry]} {OP_NEWLINE "\n"}]})]) (Com {[DQ [VarSub docker bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 5]} ) ) ) (FunctionDef kube::release::gcs::push_images [] (List (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_BUILD_RUN_IMAGES]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS kube] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS release] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS gcs] [LIT_OTHER ":"] [LIT_OTHER ":"] [LIT_CHARS ensure_docker_registry]} ) (= scope= flags=0 words=[{[LIT_CHARS b]}, {[LIT_CHARS image_name]}] bindings=[]) (For b [{[DQ [VarSub KUBE_RUN_IMAGES bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('image_name', {[DQ [VarSub KUBE_RUN_IMAGE_BASE][LIT_CHARS -][VarSub b]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Tagging and pushing "][VarSub image_name][LIT_CHARS " to GCS bucket "][VarSub KUBE_GCS_RELEASE_BUCKET]]} ) (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS tag]} {[DQ [VarSub KUBE_RUN_IMAGE_BASE][LIT_CHARS -][VarSub b]]} {[DQ [LIT_CHARS "localhost:5000/"][VarSub image_name]]} ) (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS push]} {[DQ [LIT_CHARS "localhost:5000/"][VarSub image_name]]} ) (Com {[DQ [VarSub DOCKER bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[LIT_CHARS rmi]} {[DQ [LIT_CHARS "localhost:5000/"][VarSub image_name]]} ) ) ) ) ) (FunctionDef kube::release::gcs::copy_release_artifacts [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('gcs_destination', {[DQ [LIT_CHARS "gs://"][VarSub KUBE_GCS_RELEASE_BUCKET][LIT_CHARS /][VarSub KUBE_GCS_RELEASE_PREFIX]]})]) (= scope= flags=0 words=[] bindings=[('gcs_options', {[Array ]})]) (If (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_GCS_NO_CACHING]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (= scope= flags=0 words=[] bindings=[('gcs_options', {[Array {[DQ [LIT_CHARS -h]]} {[DQ [LIT_CHARS "Cache-Control:private, max-age=0"]]}]})]) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Copying release artifacts to "][VarSub gcs_destination]]} ) (If (Com {[LIT_CHARS gsutil]} {[LIT_CHARS ls]} {[DQ [VarSub gcs_destination]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "!!! "][VarSub gcs_destination][LIT_CHARS " not empty."]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS read]} {[LIT_CHARS -p]} {[DQ [LIT_CHARS "Delete everything under "][VarSub gcs_destination][LIT_CHARS "? [y/n] "]]} {[LIT_CHARS -r]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "EOF on prompt. Skipping upload"]]} ) (Com {[LIT_CHARS return]} ) ) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub REPLY]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Skipping upload"]]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS -m]} {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS -R]} {[DQ [VarSub gcs_destination]]} ) ) ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS -m]} {[DQ [VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_PLUS {[VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} {[LIT_CHARS cp]} {[LIT_CHARS -r]} {[DQ [VarSub RELEASE_DIR]] [LIT_CHARS /] [LIT_OTHER "*"]} {[DQ [VarSub gcs_destination]]} ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS -m]} {[DQ [VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_PLUS {[VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} {[LIT_CHARS cp]} {[DQ [VarSub RELEASE_STAGE][LIT_CHARS "/full/kubernetes/cluster/gce/templates/*.sh"]]} {[DQ [VarSub gcs_destination][LIT_CHARS extra/gce-templates/]]} ) (= scope= flags=0 words=[{[LIT_CHARS platform]}, {[LIT_CHARS platforms]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('platforms', {[Array {[ComSub (List (Com {[LIT_CHARS cd]} {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /client]]}) (Com {[LIT_CHARS echo]} {[LIT_OTHER "*"]}) )]}]})]) (For platform [{[DQ [VarSub platforms bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (List (= scope= flags=0 words=[] bindings=[('src', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /client/][VarSub platform][LIT_CHARS "/kubernetes/client/bin/*"]]})]) (= scope= flags=0 words=[] bindings=[('dst', {[DQ [VarSub gcs_destination][LIT_CHARS bin/][VarSub platform transform_ops=[PatSub {[LIT_CHARS -]} {[LIT_SLASH /]}]][LIT_CHARS /]]})]) (If (DBracket {B1 UNARY_FILE_d {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /server/][VarSub platform]]}}) (= scope= flags=0 words=[] bindings=[('src', {[DQ [VarSub RELEASE_STAGE][LIT_CHARS /server/][VarSub platform][LIT_CHARS "/kubernetes/server/bin/*"]]})]) ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS -m]} {[DQ [VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) test_op=VS_TEST_PLUS {[VarSub gcs_options bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]]} {[LIT_CHARS cp]} {[DQ [VarSub src]]} {[DQ [VarSub dst]]} ) ) ) (If (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub KUBE_GCS_MAKE_PUBLIC]} {[LIT_OTHER "^"] [LIT_DBRACKET_LIKE "["] [LIT_CHARS yY] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "$"]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "+++ Marking all uploaded objects public"]]} ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS acl]} {[LIT_CHARS ch]} {[LIT_CHARS -R]} {[LIT_CHARS -g]} {[LIT_CHARS all] [LIT_OTHER ":"] [LIT_CHARS R]} {[DQ [VarSub gcs_destination]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) ) (Com {[LIT_CHARS gsutil]} {[LIT_CHARS ls]} {[LIT_CHARS -lhr]} {[DQ [VarSub gcs_destination]]} ) ) ) )