(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCRIPT_DIR) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:53) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:57) command_list: (command.CommandList children: [ (C {(dirname)} { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: BASH_SOURCE span_id: 62 ) bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Id.Lit_Digits 0)} ) ) ) ) } ) ] ) ) ) } ) (C {(pwd)}) ] ) ] ) ) ) } spids: [51] ) ] ) (C {(source)} {(DQ (${ Id.VSub_Name SCRIPT_DIR) (/build_helper.subr))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:JOB_COUNT) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:JOB_COUNT span_id:89) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:91) command_list: (command.CommandList children:[(C {(get_job_count)})]) ) } ) ) ) } spids: [86] ) ] ) (command.ShFunction name: less_than_required_version body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_Number '$1')}) (command.Subshell command_list: (command.CommandList children: [ (command.Simple words: [{(read)} {(-r)} {(major)} {(minor)} {(micro)}] more_env: [(env_pair name:IFS val:{(.)} spids:[114])] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$major')} {(-ne)} {($ Id.VSub_Number '$2')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:139) ) ] action: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$major')} {(-lt)} {($ Id.VSub_Number '$2')} {(Id.Lit_RBracket ']')} ) ] spids: [128 141] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$minor')} {(-ne)} {($ Id.VSub_Number '$3')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:166) ) ] action: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$minor')} {(-lt)} {($ Id.VSub_Number '$3')} {(Id.Lit_RBracket ']')} ) ] spids: [155 168] ) ] else_action: [ (C {(Id.Lit_LBracket '[')} { (braced_var_sub token: (Token id:Id.VSub_Name val:micro span_id:188) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(0)} ) ) } {(-lt)} {($ Id.VSub_Number '$4')} {(Id.Lit_RBracket ']')} ) ] ) ] ) ) ] negated: F ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{(MACOSX_DEPLOYMENT_TARGET)}) ) terminator: (Token id:Id.Op_Semi val:';' span_id:217) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'MACOSX_DEPLOYMENT_TARGET=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:225) command_list: (command.CommandList children:[(C {(sw_vers)} {(-productVersion)})]) ) } ) ] spids: [208 219] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ACTUAL_XCODE_VERSION) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:235) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(xcodebuild)} {(-version)}) (C {(head)} {(-n)} {(1)}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/Xcode //' span_id:253))}) ] negated: F ) ] ) ) } spids: [234] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REQUIRED_XCODE_VERSION) op: assign_op.Equal rhs: {(7.3.0)} spids: [257] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(less_than_required_version)} {($ Id.VSub_DollarName '$ACTUAL_XCODE_VERSION')} {(7)} {(3)} {(0)} ) ] action: [ (C {(echo)} { (DQ ('error: Xcode ') (${ Id.VSub_Name REQUIRED_XCODE_VERSION) (' or later is required.') ) } ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:286) arg_word: {(1)} ) ] spids: [260 272] ) ] ) (command.ShFunction name: usage body: (command.BraceGroup children: [ (C {(echo)} { (DQ ('Usage: ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:304) command_list: (command.CommandList children: [(C {(basename)} {(DQ ($ Id.VSub_Number '$0'))})] ) ) (' [-a]') ) } ) (C {(echo)} { (DQ ( '-a [build_arch] build for specified arch comma separate for multiple archs (eg: x86_64,arm64)' ) ) } ) (C {(echo)} {(DQ ('default is [i386, x86_64, armv7, armv7s, arm64]'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:329) arg_word: {(1)} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILD_TARGET) op: assign_op.Equal rhs: {(DQ ('i386 x86_64 armv7 armv7s arm64'))} spids: [336] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:341) cond: [ (command.Sentence child: (C {(getopts)} {(DQ ('a:f:h:n:'))} {(opt_name)}) terminator: (Token id:Id.Op_Semi val:';' span_id:350) ) ] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$opt_name'))} arms: [ (case_arm pat_list: [{(a)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILD_TARGET) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} spids: [367] ) ] ) ] spids: [364 365 373 -1] ) (case_arm pat_list: [{(f)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILD_OPT) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} spids: [379] ) ] ) ] spids: [376 377 385 -1] ) (case_arm pat_list: [{(h)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NSYNC_HOST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} spids: [391] ) ] ) ] spids: [388 389 397 -1] ) (case_arm pat_list: [{(n)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NSYNC_TARGET) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name OPTARG))} spids: [403] ) ] ) ] spids: [400 401 409 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [(C {(usage)})] spids: [412 413 416 -1] ) ] ) ] ) ) (C {(shift)} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:OPTIND span_id:426)) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) (command.Simple words: [{(read)} {(-r)} {(-a)} {(build_targets)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_TLess val:'<<<' span_id:448) fd: -1 arg_word: {(DQ (${ Id.VSub_Name BUILD_TARGET))} ) ] more_env: [ (env_pair name: IFS val: {(SQ (Token id:Id.Lit_Chars val:' ' span_id:437))} spids: [435] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCRIPT_DIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:458) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(cd)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:461) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_Number '$0')})] ) ) } ) (C {(pwd)}) ] ) ] ) ) } spids: [457] ) ] ) (C {(source)} {(DQ (${ Id.VSub_Name SCRIPT_DIR) (/build_helper.subr))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GENDIR) op: assign_op.Equal rhs: {(tensorflow/contrib/makefile/gen/)} spids: [485] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBDIR) op: assign_op.Equal rhs: {(${ Id.VSub_Name GENDIR) (lib)} spids: [488] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_PREFIX) op: assign_op.Equal rhs: {(libtensorflow-core)} spids: [494] ) ] ) (C {(rm)} {(-rf)} {(${ Id.VSub_Name LIBDIR) (/) (${ Id.VSub_Name LIB_PREFIX) (.a)}) (command.ShFunction name: package_tf_library body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CAP_DIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:523) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_Number '$1')}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:a-z span_id:535))} {(SQ (Token id:Id.Lit_Chars val:A-Z span_id:539))} ) ] negated: F ) ] ) ) } spids: [522] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tf_libs) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name LIBDIR) (/ios_) (${ Id.VSub_Name CAP_DIR) (/) (${ Id.VSub_Name LIB_PREFIX) (-) (${ Id.VSub_Number 1) (.a) ) } spids: [544] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name LIBDIR) (/) (${ Id.VSub_Name LIB_PREFIX) (.a))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:583) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tf_libs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$tf_libs') (' ') (${ Id.VSub_Name LIBDIR) (/) (${ Id.VSub_Name LIB_PREFIX) (.a) ) } spids: [588] ) ] ) ] spids: [565 585] ) ] ) (C {(lipo)} {($ Id.VSub_DollarName '$tf_libs')} {(-create)} {(-output)} {(${ Id.VSub_Name LIBDIR) (/) (${ Id.VSub_Name LIB_PREFIX) (.a)} ) ] ) ) (command.ShFunction name: build_tf_target body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(armv7)}] action: [ (C {(make)} {(-j) (DQ (${ Id.VSub_Name JOB_COUNT))} {(-f)} {(tensorflow/contrib/makefile/Makefile)} {(Id.Lit_VarLike 'TARGET=') (IOS)} {(Id.Lit_VarLike 'IOS_ARCH=') (ARMV7)} {(Id.Lit_VarLike 'LIB_NAME=') (${ Id.VSub_Name LIB_PREFIX) (-armv7.a)} {(Id.Lit_VarLike 'OPTFLAGS=') (DQ (${ Id.VSub_Name BUILD_OPT))} {(Id.Lit_VarLike 'HOST_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_HOST))} {(Id.Lit_VarLike 'TARGET_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_TARGET))} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {(echo)} {(DQ ('armv7 compilation failed.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:727) arg_word: {(1)} ) ] spids: [704 717] ) ] ) (C {(package_tf_library)} {(DQ (armv7))}) ] spids: [647 648 742 -1] ) (case_arm pat_list: [{(armv7s)}] action: [ (C {(make)} {(-j) (DQ (${ Id.VSub_Name JOB_COUNT))} {(-f)} {(tensorflow/contrib/makefile/Makefile)} {(Id.Lit_VarLike 'TARGET=') (IOS)} {(Id.Lit_VarLike 'IOS_ARCH=') (ARMV7S)} {(Id.Lit_VarLike 'LIB_NAME=') (${ Id.VSub_Name LIB_PREFIX) (-armv7s.a)} {(Id.Lit_VarLike 'OPTFLAGS=') (DQ (${ Id.VSub_Name BUILD_OPT))} {(Id.Lit_VarLike 'HOST_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_HOST))} {(Id.Lit_VarLike 'TARGET_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_TARGET))} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {(echo)} {(DQ ('arm7vs compilation failed.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:826) arg_word: {(1)} ) ] spids: [803 816] ) ] ) (C {(package_tf_library)} {(DQ (armv7s))}) ] spids: [745 746 841 -1] ) (case_arm pat_list: [{(arm64)}] action: [ (C {(make)} {(-j) (DQ (${ Id.VSub_Name JOB_COUNT))} {(-f)} {(tensorflow/contrib/makefile/Makefile)} {(Id.Lit_VarLike 'TARGET=') (IOS)} {(Id.Lit_VarLike 'IOS_ARCH=') (ARM64)} {(Id.Lit_VarLike 'LIB_NAME=') (${ Id.VSub_Name LIB_PREFIX) (-arm64.a)} {(Id.Lit_VarLike 'OPTFLAGS=') (DQ (${ Id.VSub_Name BUILD_OPT))} {(Id.Lit_VarLike 'HOST_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_HOST))} {(Id.Lit_VarLike 'TARGET_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_TARGET))} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {(echo)} {(DQ ('arm64 compilation failed.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:924) arg_word: {(1)} ) ] spids: [901 914] ) ] ) (C {(package_tf_library)} {(DQ (arm64))}) ] spids: [844 845 939 -1] ) (case_arm pat_list: [{(i386)}] action: [ (C {(make)} {(-j) (DQ (${ Id.VSub_Name JOB_COUNT))} {(-f)} {(tensorflow/contrib/makefile/Makefile)} {(Id.Lit_VarLike 'TARGET=') (IOS)} {(Id.Lit_VarLike 'IOS_ARCH=') (I386)} {(Id.Lit_VarLike 'LIB_NAME=') (${ Id.VSub_Name LIB_PREFIX) (-i386.a)} {(Id.Lit_VarLike 'OPTFLAGS=') (DQ (${ Id.VSub_Name BUILD_OPT))} {(Id.Lit_VarLike 'HOST_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_HOST))} {(Id.Lit_VarLike 'TARGET_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_TARGET))} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {(echo)} {(DQ ('i386 compilation failed.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1022) arg_word: {(1)} ) ] spids: [999 1012] ) ] ) (C {(package_tf_library)} {(DQ (i386))}) ] spids: [942 943 1037 -1] ) (case_arm pat_list: [{(x86_64)}] action: [ (C {(make)} {(-j) (DQ (${ Id.VSub_Name JOB_COUNT))} {(-f)} {(tensorflow/contrib/makefile/Makefile)} {(Id.Lit_VarLike 'TARGET=') (IOS)} {(Id.Lit_VarLike 'IOS_ARCH=') (X86_64)} {(Id.Lit_VarLike 'LIB_NAME=') (${ Id.VSub_Name LIB_PREFIX) (-x86_64.a)} {(Id.Lit_VarLike 'OPTFLAGS=') (DQ (${ Id.VSub_Name BUILD_OPT))} {(Id.Lit_VarLike 'HOST_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_HOST))} {(Id.Lit_VarLike 'TARGET_NSYNC_LIB=') (DQ (${ Id.VSub_Name NSYNC_TARGET))} ) (command.If arms: [ (if_arm cond: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) ] action: [ (C {(echo)} {(DQ ('x86_64 compilation failed.'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1120) arg_word: {(1)} ) ] spids: [1097 1110] ) ] ) (C {(package_tf_library)} {(DQ (x86_64))}) ] spids: [1040 1041 1135 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(echo)} {(DQ ('Unknown ARCH'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1149) arg_word: {(1)} ) ] spids: [1138 1139 -1 1153] ) ] ) ] ) ) (command.ForEach iter_name: build_tf_element iter_words: [ { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:build_targets span_id:1166) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$build_tf_element'))}) (C {(build_tf_target)} {(DQ ($ Id.VSub_DollarName '$build_tf_element'))}) ] ) ) (C {(echo)} {(DQ ('Done building and packaging TF'))}) (C {(file)} {(${ Id.VSub_Name LIBDIR) (/) (${ Id.VSub_Name LIB_PREFIX) (.a)}) ] )