(command.CommandList
  children: [
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<nounset>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<pipefail>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-o>} {<errexit>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [{<source>} {<'build/common.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'OVM_PYTHON_OBJS='> 
          (SQ <'\n'> <'Python/_warnings.c\n'> <'Python/bltinmodule.c\n'> <'Python/ceval.c\n'> 
            <'Python/codecs.c\n'> <'Python/errors.c\n'> <'Python/frozen.c\n'> <'Python/frozenmain.c\n'> <'Python/future.c\n'> 
            <'Python/getargs.c\n'> <'Python/getcompiler.c\n'> <'Python/getcopyright.c\n'> <'Python/getplatform.c\n'> 
            <'Python/getversion.c\n'> <'Python/import.c\n'> <'Python/marshal.c\n'> <'Python/modsupport.c\n'> <'Python/mystrtoul.c\n'> 
            <'Python/mysnprintf.c\n'> <'Python/pyarena.c\n'> <'Python/pyctype.c\n'> <'Python/pyfpe.c\n'> <'Python/pymath.c\n'> 
            <'Python/pystate.c\n'> <'Python/pythonrun.c\n'> <'Python/random.c\n'> <'Python/structmember.c\n'> <'Python/sysmodule.c\n'> 
            <'Python/traceback.c\n'> <'Python/getopt.c\n'> <'Python/pystrcmp.c\n'> <'Python/pystrtod.c\n'> <'Python/dtoa.c\n'> 
            <'Python/formatter_unicode.c\n'> <'Python/formatter_string.c\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OBJECT_OBJS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OBJECT_OBJS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OBJECT_OBJS='> name:OBJECT_OBJS)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'Objects/abstract.c\n'> <'Objects/boolobject.c\n'> 
                <'Objects/bufferobject.c\n'> <'Objects/bytes_methods.c\n'> <'Objects/bytearrayobject.c\n'> <'Objects/capsule.c\n'> 
                <'Objects/cellobject.c\n'> <'Objects/classobject.c\n'> <'Objects/cobject.c\n'> <'Objects/codeobject.c\n'> 
                <'Objects/complexobject.c\n'> <'Objects/descrobject.c\n'> <'Objects/enumobject.c\n'> <'Objects/exceptions.c\n'> 
                <'Objects/genobject.c\n'> <'Objects/fileobject.c\n'> <'Objects/floatobject.c\n'> <'Objects/frameobject.c\n'> 
                <'Objects/funcobject.c\n'> <'Objects/intobject.c\n'> <'Objects/iterobject.c\n'> <'Objects/listobject.c\n'> 
                <'Objects/longobject.c\n'> <'Objects/dictobject.c\n'> <'Objects/memoryobject.c\n'> <'Objects/methodobject.c\n'> 
                <'Objects/moduleobject.c\n'> <'Objects/object.c\n'> <'Objects/obmalloc.c\n'> <'Objects/rangeobject.c\n'> <'Objects/setobject.c\n'> 
                <'Objects/sliceobject.c\n'> <'Objects/stringobject.c\n'> <'Objects/structseq.c\n'> <'Objects/tupleobject.c\n'> 
                <'Objects/typeobject.c\n'> <'Objects/weakrefobject.c\n'> <'Objects/unicodeobject.c\n'> <'Objects/unicodectype.c\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MODULE_OBJS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MODULE_OBJS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODULE_OBJS='> name:MODULE_OBJS)
          op: assign_op.Equal
          rhs: {(SQ <'\n'> <'Modules/getpath.c\n'> <'Modules/main.c\n'> <'Modules/gcmodule.c\n'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MODOBJS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MODOBJS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MODOBJS='> name:MODOBJS)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'Modules/posixmodule.c\n'> <'Modules/errnomodule.c  \n'> 
                <'Modules/pwdmodule.c\n'> <'Modules/_sre.c  \n'> <'Modules/_codecsmodule.c  \n'> <'Modules/_weakref.c\n'> 
                <'Modules/zipimport.c  \n'> <'Modules/signalmodule.c\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OVM_LIBRARY_OBJS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OVM_LIBRARY_OBJS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OVM_LIBRARY_OBJS='> name:OVM_LIBRARY_OBJS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> <'Modules/getbuildinfo.c\n'> <'Parser/myreadline.c\n'> 
                ($ Id.VSub_DollarName OBJECT_OBJS) <'\n'> ($ Id.VSub_DollarName OVM_PYTHON_OBJS) <' \n'> ($ Id.VSub_DollarName MODULE_OBJS) <'\n'> 
                ($ Id.VSub_DollarName MODOBJS) <'\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [{<readonly>} {<Id.Lit_VarLike 'EMPTY_STR='> (SQ <'""'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'PREPROC_FLAGS='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [
              {<-D>}
              {<OVM_MAIN>}
              {<-D>}
              {<Id.Lit_VarLike 'PYTHONPATH='> (DQ ($ Id.VSub_DollarName EMPTY_STR))}
              {<-D>}
              {<Id.Lit_VarLike 'VERSION='> (DQ ($ Id.VSub_DollarName EMPTY_STR))}
              {<-D>}
              {<Id.Lit_VarLike 'VPATH='> (DQ ($ Id.VSub_DollarName EMPTY_STR))}
              {<-D>}
              {<Py_BUILD_CORE>}
            ]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'INCLUDE_PATHS='> 
          (ShArrayLiteral
            left: <Id.Op_LParen _>
            words: [{<-I>} {<.>} {<-I>} {<Include>} {<-I>} {<'../_devbuild/gen'>}]
            right: <Id.Right_ShArrayLiteral _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'CC='> 
          (BracedVarSub
            left: <Id.Left_DollarBrace '${'>
            token: <Id.VSub_Name CC>
            var_name: CC
            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<cc>})
            right: <Id.Right_DollarBrace '}'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'BASE_CFLAGS='> 
          (SQ <'-fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes'>)
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <readonly>
      more_env: []
      words: [
        {<readonly>}
        {<Id.Lit_VarLike 'CFLAGS='> 
          (BracedVarSub
            left: <Id.Left_DollarBrace '${'>
            token: <Id.VSub_Name CFLAGS>
            var_name: CFLAGS
            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
            right: <Id.Right_DollarBrace '}'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <build>
      name: build
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: {($ Id.VSub_DollarName PY27) <Id.Lit_Slash '/'> <ovm2>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'module_init='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 2>
                    var_name: 2
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: 
                          {($ Id.VSub_DollarName PY27) <Id.Lit_Slash '/'> <Modules> <Id.Lit_Slash '/'> 
                            <config.c>
                          }
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'main_name='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 3>
                    var_name: 3
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: {<_tmp> <Id.Lit_Slash '/'> <hello> <Id.Lit_Slash '/'> <main_name.c>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'c_module_srcs='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 4>
                    var_name: 4
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: 
                          {<_tmp> <Id.Lit_Slash '/'> <hello> <Id.Lit_Slash '/'> <c-module-srcs.txt>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<4>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'abs_out='> ($ Id.VSub_DollarName PWD) <'/'> 
                  ($ Id.VSub_DollarName out)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'abs_module_init='> ($ Id.VSub_DollarName PWD) <'/'> 
                  ($ Id.VSub_DollarName module_init)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'abs_main_name='> ($ Id.VSub_DollarName PWD) <'/'> 
                  ($ Id.VSub_DollarName main_name)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'abs_c_module_srcs='> ($ Id.VSub_DollarName PWD) <'/'> 
                  ($ Id.VSub_DollarName c_module_srcs)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <source-detected-config-or-die>
              more_env: []
              words: [{<source-detected-config-or-die>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {($ Id.VSub_DollarName PY27)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<compile_readline>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<link_readline>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName HAVE_READLINE))}
                                {<Id.Lit_Equals '='>}
                                {<1>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'c_module_src_list='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'c_module_src_list='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'c_module_src_list='>
                              name: c_module_src_list
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [{<cat>} {($ Id.VSub_DollarName abs_c_module_srcs)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'compile_readline='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'compile_readline='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'compile_readline='>
                              name: compile_readline
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'-D HAVE_READLINE'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'link_readline='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'link_readline='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'link_readline='>
                              name: link_readline
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'-l readline'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [475 488]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'c_module_src_list='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'c_module_src_list='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'c_module_src_list='>
                          name: c_module_src_list
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.AndOr
                                children: [
                                  (command.Simple
                                    blame_tok: <grep>
                                    more_env: []
                                    words: [
                                      {<grep>}
                                      {<-v>}
                                      {(SQ <'/readline.c'>)}
                                      {($ Id.VSub_DollarName abs_c_module_srcs)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <true>
                                    more_env: []
                                    words: [{<true>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_DPipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'compile_readline='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'compile_readline='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'compile_readline='>
                          name: compile_readline
                        )
                      op: assign_op.Equal
                      rhs: {(SQ )}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'link_readline='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'link_readline='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'link_readline='>
                          name: link_readline
                        )
                      op: assign_op.Equal
                      rhs: {(SQ )}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.TimeBlock
                  keyword: <Id.KW_Time time>
                  pipeline: 
                    (command.Simple
                      blame_tok: <Id.VSub_DollarName '$CC'>
                      more_env: []
                      words: [
                        {($ Id.VSub_DollarName CC)}
                        {(${ Id.VSub_Name BASE_CFLAGS)}
                        {(${ Id.VSub_Name CFLAGS)}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name INCLUDE_PATHS>
                              var_name: INCLUDE_PATHS
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name PREPROC_FLAGS>
                              var_name: PREPROC_FLAGS
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<-D>}
                        {<Id.Lit_VarLike 'PREFIX='> 
                          (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            ($ Id.VSub_DollarName PREFIX) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                          )
                        }
                        {<-D>}
                        {<Id.Lit_VarLike 'EXEC_PREFIX='> 
                          (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            ($ Id.VSub_DollarName PREFIX) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                          )
                        }
                        {<-o>}
                        {($ Id.VSub_DollarName abs_out)}
                        {($ Id.VSub_DollarName OVM_LIBRARY_OBJS)}
                        {($ Id.VSub_DollarName abs_module_init)}
                        {($ Id.VSub_DollarName abs_main_name)}
                        {($ Id.VSub_DollarName c_module_src_list)}
                        {<'Modules/ovm.c'>}
                        {($ Id.VSub_DollarName compile_readline)}
                        {<-l>}
                        {<m>}
                        {($ Id.VSub_DollarName link_readline)}
                        {(DQ ($ Id.VSub_At '@'))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <build-dbg>
      name: build-dbg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <build>
              more_env: []
              words: [{<build>} {(DQ ($ Id.VSub_At '@'))} {<-O0>} {<-g>} {<-D>} {<OVM_DEBUG>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <build-opt>
      name: build-opt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <build>
              more_env: []
              words: [{<build>} {(DQ ($ Id.VSub_At '@'))} {<-O3>} {<-fno-omit-frame-pointer>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <add-py27>
      name: add-py27
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <xargs>
              more_env: []
              words: [
                {<xargs>}
                {<-I>}
                {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>}
                {<-->}
                {<echo>}
                {($ Id.VSub_DollarName PY27) <'/'> <Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <python-sources>
      name: python-sources
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName OVM_LIBRARY_OBJS))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <add-py27>
                  more_env: []
                  words: [{<add-py27>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_headers>
      name: _headers
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'c_module_srcs='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: 
                          {<_tmp> <Id.Lit_Slash '/'> <hello> <Id.Lit_Slash '/'> <c-module-srcs.txt>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'abs_c_module_srcs='> ($ Id.VSub_DollarName PWD) <'/'> 
                  ($ Id.VSub_DollarName c_module_srcs)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {($ Id.VSub_DollarName PY27)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcc>
              more_env: []
              words: [
                {<gcc>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name INCLUDE_PATHS>
                      var_name: INCLUDE_PATHS
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name PREPROC_FLAGS>
                      var_name: PREPROC_FLAGS
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
                {<-MM>}
                {($ Id.VSub_DollarName OVM_LIBRARY_OBJS)}
                {<'Modules/ovm.c'>}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <cat>
                        more_env: []
                        words: [{<cat>} {($ Id.VSub_DollarName abs_c_module_srcs)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <python-headers>
      name: python-headers
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'c_module_srcs='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <_headers>
                  more_env: []
                  words: [{<_headers>} {($ Id.VSub_DollarName c_module_srcs)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <egrep>
                  more_env: []
                  words: [{<egrep>} {<--only-matching>} {(SQ <'[^ ]+\\.h'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-v>} {(SQ <'_build/detected-config.h'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(SQ <'s|^Python/../||'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <uniq>
                  more_env: []
                  words: [{<uniq>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <add-py27>
                  more_env: []
                  words: [{<add-py27>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
                <Id.Op_Pipe _>
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <make-tar>
      name: make-tar
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'app_name='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 1>
                    var_name: 1
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<hello>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'bytecode_zip='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 2>
                    var_name: 2
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: {<bytecode-cpython.zip>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'out='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 3>
                    var_name: 3
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonHyphen _>
                        arg_word: {<_release> <Id.Lit_Slash '/'> <hello.tar>}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<version_file>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName app_name)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <oil>
                  pattern: (pat.Words words:[{<oil>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'version_file='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'version_file='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'version_file='>
                              name: version_file
                            )
                          op: assign_op.Equal
                          rhs: {<oil-version.txt>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <hello>
                  pattern: (pat.Words words:[{<hello>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'version_file='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'version_file='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'version_file='>
                              name: version_file
                            )
                          op: assign_op.Equal
                          rhs: {<'build/testdata/hello-version.txt'>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [{<die>} {(DQ <'Unknown app '> ($ Id.VSub_DollarName app_name))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'version='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <head>
                        more_env: []
                        words: [{<head>} {<-n>} {<1>} {($ Id.VSub_DollarName version_file)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Creating '> ($ Id.VSub_DollarName app_name) <' version '> 
                    ($ Id.VSub_DollarName version)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'c_module_srcs='> <'_build/'> ($ Id.VSub_DollarName app_name) 
                  <'/c-module-srcs.txt'>
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'sed_expr='> 
                  (DQ <'s,^,'> (${ Id.VSub_Name app_name) <-> (${ Id.VSub_Name version) <'/,'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tar>
              more_env: []
              words: [
                {<tar>}
                {<--create>}
                {<--transform>}
                {(DQ ($ Id.VSub_DollarName sed_expr))}
                {<--file>}
                {($ Id.VSub_DollarName out)}
                {<LICENSE.txt>}
                {<INSTALL.txt>}
                {<configure>}
                {<install>}
                {<Makefile>}
                {<'build/compile.sh'>}
                {<'build/actions.sh'>}
                {<'build/common.sh'>}
                {<'build/detect-'> <Id.Lit_Star '*'> <.c>}
                {<'_build/'> ($ Id.VSub_DollarName app_name) <'/'> ($ Id.VSub_DollarName bytecode_zip)}
                {<'_build/'> ($ Id.VSub_DollarName app_name) <'/'> <Id.Lit_Star '*'> <.c>}
                {($ Id.VSub_DollarName PY27) <'/LICENSE'>}
                {($ Id.VSub_DollarName PY27) <'/Modules/ovm.c'>}
                {($ Id.VSub_DollarName c_module_srcs)}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <cat>
                            more_env: []
                            words: [{<cat>} {($ Id.VSub_DollarName c_module_srcs)}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <add-py27>
                            more_env: []
                            words: [{<add-py27>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <python-headers>
                        more_env: []
                        words: [{<python-headers>} {($ Id.VSub_DollarName c_module_srcs)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <python-sources>
                        more_env: []
                        words: [{<python-sources>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <ls>
              more_env: []
              words: [{<ls>} {<-l>} {($ Id.VSub_DollarName out)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <count-c-lines>
      name: count-c-lines
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {($ Id.VSub_DollarName PY27)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <wc>
                  more_env: []
                  words: [{<wc>} {<-l>} {($ Id.VSub_DollarName OVM_LIBRARY_OBJS)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-n>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <'Files:'>)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [i]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName OVM_LIBRARY_OBJS)}])
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {($ Id.VSub_DollarName i)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.Simple
                  blame_tok: <wc>
                  more_env: []
                  words: [{<wc>} {<-l>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <Id.Left_DoubleQuote '"'>
      more_env: []
      words: [{(DQ ($ Id.VSub_At '@'))}]
      redirects: []
      do_fork: T
    )
  ]
)