(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-o>} {<nounset>})
    (C {<Id.KW_Set set>} {<-o>} {<pipefail>})
    (C {<Id.KW_Set set>} {<-o>} {<errexit>})
    (C {<source>} {<build/common.sh>})
    (command.ShFunction
      name: write-release-date
      body: 
        (command.BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {<_build>})
            (command.Simple
              words: [{<date>} {<--utc>} {<--rfc-3339>} {<seconds>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {<_build/release-date.txt>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: main-name
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'python_main='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'ovm_bundle_prefix='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello.ovm>})
                )
              }
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {<EOF>}
                  here_end_span_id: 136
                  stdin_parts: [
                    <'char* MAIN_NAME = '>
                    <Id.Right_DoubleQuote '"'>
                    ($ Id.VSub_DollarName '$python_main')
                    <Id.Right_DoubleQuote '"'>
                    <';\n'>
                    <'#if OVM_DEBUG\n'>
                    <'  char* OVM_BUNDLE_FILENAME = '>
                    <Id.Right_DoubleQuote '"'>
                    (${ Id.VSub_Name ovm_bundle_prefix)
                    <-dbg>
                    <Id.Right_DoubleQuote '"'>
                    <';\n'>
                    <'#else\n'>
                    <'  char* OVM_BUNDLE_FILENAME = '>
                    <Id.Right_DoubleQuote '"'>
                    ($ Id.VSub_DollarName '$ovm_bundle_prefix')
                    <Id.Right_DoubleQuote '"'>
                    <';\n'>
                    <'#endif\n'>
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: c-module-toc
      body: 
        (command.BraceGroup
          children: [(C {<cd>} {($ Id.VSub_DollarName '$PY27')}) (C {<../build/c_module_toc.py>})]
        )
    )
    (command.ShFunction
      name: runpy-deps
      body: 
        (command.BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$PREPARE_DIR') </python>} {<-S>} {<build/runpy_deps.py>} {<both>} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: runpy-py-to-compile
      body: 
        (command.BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$PREPARE_DIR') </python>} {<-S>} {<build/runpy_deps.py>} {<py>})
          ]
        )
    )
    (command.ShFunction
      name: app-deps
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'app_name='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'pythonpath='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {<build> <Id.Lit_Slash /> <testdata>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'main_module='> 
                (braced_var_sub
                  token: <Id.VSub_Number 3>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'prefix='> <_build/> ($ Id.VSub_DollarName '$app_name') </app-deps>}
            )
            (C {<ln>} {<-s>} {<-f>} {($ Id.VSub_DollarName '$PWD') </build/app_deps.py>} {<_tmp>})
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PREPARE_DIR') </python>}
                {<-S>}
                {<_tmp/app_deps.py>}
                {<both>}
                {($ Id.VSub_DollarName '$main_module')}
                {($ Id.VSub_DollarName '$prefix')}
              ]
              more_env: [
                (env_pair
                  name: PYTHONPATH
                  val: {($ Id.VSub_DollarName '$pythonpath')}
                  spids: [302]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: py-to-compile
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'pythonpath='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {<build> <Id.Lit_Slash /> <testdata>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'main_module='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (command.Simple
              words: [
                {($ Id.VSub_DollarName '$PREPARE_DIR') </python>}
                {<-S>}
                {<build/app_deps.py>}
                {<py>}
                {($ Id.VSub_DollarName '$main_module')}
              ]
              more_env: [
                (env_pair
                  name: PYTHONPATH
                  val: {($ Id.VSub_DollarName '$pythonpath')}
                  spids: [356]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: quick-ref-manifest
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'dir='> ($ Id.VSub_Number '$1')})
            (command.ForEach
              iter_name: path
              iter_words: [{($ Id.VSub_DollarName '$dir') </> <Id.Lit_Star '*'>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} 
                      {(DQ ($ Id.VSub_DollarName '$path') <' '> ($ Id.VSub_DollarName '$path'))}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: pyc-version-manifest
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'manifest_path='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: 
                        {<_build> <Id.Lit_Slash /> <oil> <Id.Lit_Slash /> <bytecode-opy-manifest.txt>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'filename='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<basename>} {($ Id.VSub_DollarName '$manifest_path')})]
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'user_str='> 
                (braced_var_sub
                  token: <Id.VSub_Name filename>
                  suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<-manifest.txt>})
                ) <.zip>
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'dir='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {<dirname>} {($ Id.VSub_DollarName '$manifest_path')})]
                    )
                )
              }
            )
            (command.Simple
              words: [{<echo>} {($ Id.VSub_DollarName '$user_str')}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$dir') </pyc-version.txt>}
                )
              ]
            )
            (C {<echo>} {($ Id.VSub_DollarName '$dir') </pyc-version.txt>} {<pyc-version.txt>})
          ]
        )
    )
    (command.ShFunction
      name: make-dotd
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'app_name='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<hello>})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'app_deps_to_compile='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: 
                        {<_tmp> <Id.Lit_Slash /> <hello> <Id.Lit_Slash /> <app-deps-to-compile.txt>}
                    )
                )
              }
            )
            (C {<echo>} {(DQ <'# TODO '> ($ Id.VSub_DollarName '$app_deps_to_compile'))})
            (C {<echo>} {(DQ <X_build/> ($ Id.VSub_DollarName '$app_name') <'/ovm:'>)})
            (C {<echo>} {(DQ <X_build/> ($ Id.VSub_DollarName '$app_name') <'/ovm-dbg:'>)})
            (C {<echo>} {(DQ <X_build/> ($ Id.VSub_DollarName '$app_name') <'/ovm-cov:'>)})
          ]
        )
    )
    (command.ShFunction
      name: extdecls
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: mod
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mod'))} {<Id.Lit_Equals '='>} 
                          {<readline>}
                        )
                        (C {<echo>} {(DQ <'#ifdef HAVE_READLINE'>)})
                      ]
                    )
                    (C {<echo>} {(DQ <'extern void init'> ($ Id.VSub_DollarName '$mod') <'(void);'>)})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mod'))} {<Id.Lit_Equals '='>} 
                          {<readline>}
                        )
                        (C {<echo>} {(DQ <'#endif'>)})
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: initbits
      body: 
        (command.BraceGroup
          children: [
            (command.ForEach
              iter_name: mod
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mod'))} {<Id.Lit_Equals '='>} 
                          {<readline>}
                        )
                        (C {<echo>} {(DQ <'#ifdef HAVE_READLINE'>)})
                      ]
                    )
                    (C {<echo>} 
                      {
                        (DQ <'    {'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          ($ Id.VSub_DollarName '$mod') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <', init'> ($ Id.VSub_DollarName '$mod') 
                          <'},'>
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {(DQ ($ Id.VSub_DollarName '$mod'))} {<Id.Lit_Equals '='>} 
                          {<readline>}
                        )
                        (C {<echo>} {(DQ <'#endif'>)})
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: gen-module-init
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<extdecls>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:extdecls)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {<extdecls>} {(DQ ($ Id.VSub_At '$@'))})]
                          )
                      )
                    }
                  spids: [797]
                )
              ]
            )
            (C {<local>} {<initbits>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:initbits)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {<initbits>} {(DQ ($ Id.VSub_At '$@'))})]
                          )
                      )
                    }
                  spids: [812]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'template='> ($ Id.VSub_DollarName '$PY27') </Modules/config.c.in>}
            )
            (C {<awk>} {<-v>} {<Id.Lit_VarLike 'template='> ($ Id.VSub_DollarName '$template')} {<-v>} 
              {<Id.Lit_VarLike 'extdecls='> (DQ ($ Id.VSub_DollarName '$extdecls'))} {<-v>} {<Id.Lit_VarLike 'initbits='> (DQ ($ Id.VSub_DollarName '$initbits'))} 
              {
                (SQ <'\n'> <'    BEGIN {\n'> 
                  <'      print "/* Generated automatically from " template " */"\n'> <'    }\n'> <'    /MARKER 1/ {\n'> <'      print extdecls\n'> <'      next\n'> <'    }\n'> 
                  <'    /MARKER 2/ {\n'> <'      print initbits\n'> <'      next\n'> <'    }\n'> <'    {\n'> <'      print $0\n'> <'    }\n'> 
                  <'    '>
                )
              } {($ Id.VSub_DollarName '$template')}
            )
          ]
        )
    )
    (command.ShFunction
      name: join-modules
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'static='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {<static-c-modules.txt>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'discovered='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {<_build> <Id.Lit_Slash /> <oil> <Id.Lit_Slash /> <all-deps-c.txt>}
                    )
                )
              }
            )
            (command.Pipeline
              children: [
                (C {<egrep>} {<--no-filename>} {<--only-matching>} {(SQ <'^[a-zA-Z0-9_\\.]+'>)} 
                  {($ Id.VSub_DollarName '$static')} {($ Id.VSub_DollarName '$discovered')}
                )
                (C {<sort>})
                (C {<uniq>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: clean-pyc
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<find>} {<.>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\('>)} {<-type>} 
                  {<d>} {<-a>} {<-name>} {(SQ <'_*'>)} {<-a>} {<-prune>} 
                  {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'>)} {<-o>} {<-name>} {(SQ <'*.pyc'>)} {<-a>} {<-print>}
                )
                (C {<xargs>} {<--no-run-if-empty>} {<-->} {<rm>} {<--verbose>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: clean-repo
      body: 
        (command.BraceGroup
          children: [
            (C {<clean-source-tarball-build>})
            (C {<rm>} {<-r>} {<-f>} {<-v>} {<_build>} {<_release>})
            (C {<rm>} {<-f>} {<-v>} {<_bin/hello.> <Id.Lit_Star '*'>} {<_bin/opy.> <Id.Lit_Star '*'>})
            (C {<clean-pyc>})
          ]
        )
    )
    (command.ShFunction
      name: clean-source-tarball-build
      body: 
        (command.BraceGroup
          children: [
            (C {<rm>} {<-f>} {<-v>} {<_bin/oil.> <Id.Lit_Star '*'>})
            (C {<rm>} {<-f>} {<-v>} {<_build/oil/ovm>} {<_build/oil/ovm-dbg>})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)