(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(build/common.sh)})
    (FuncDef
      name: write-release-date
      body: 
        (BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(_build)})
            (SimpleCommand
              words: [{(date)} {(--utc)} {(--rfc-3339)} {(seconds)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(_build/release-date.txt)}
                  spids: [73]
                )
              ]
            )
          ]
          spids: [47]
        )
      spids: [43 46]
    )
    (FuncDef
      name: main-name
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:python_main)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [90 94]
                      )
                    }
                  spids: [89]
                )
              ]
              spids: [87]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ovm_bundle_prefix)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello.ovm)})
                        spids: [100 104]
                      )
                    }
                  spids: [99]
                )
              ]
              spids: [97]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('char* MAIN_NAME = ') (Right_DoubleQuote '"') ($ VSub_Name '$python_main') 
                        (Right_DoubleQuote '"') (';\n') ('#if OVM_DEBUG\n') ('  char* OVM_BUNDLE_FILENAME = ') (Right_DoubleQuote '"') 
                        (${ VSub_Name ovm_bundle_prefix) (-dbg) (Right_DoubleQuote '"') (';\n') ('#else\n') ('  char* OVM_BUNDLE_FILENAME = ') 
                        (Right_DoubleQuote '"') ($ VSub_Name '$ovm_bundle_prefix') (Right_DoubleQuote '"') (';\n') ('#endif\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [110]
                )
              ]
            )
          ]
          spids: [84]
        )
      spids: [80 83]
    )
    (FuncDef
      name: c-module-toc
      body: 
        (BraceGroup
          children: [(C {(cd)} {($ VSub_Name '$PY27')}) (C {(../build/c_module_toc.py)})]
          spids: [143]
        )
      spids: [139 142]
    )
    (FuncDef
      name: runpy-deps
      body: 
        (BraceGroup
          children: [
            (C {($ VSub_Name '$PREPARE_DIR') (/python)} {(-S)} {(build/runpy_deps.py)} {(both)} 
              {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [163]
        )
      spids: [159 162]
    )
    (FuncDef
      name: runpy-py-to-compile
      body: 
        (BraceGroup
          children: [(C {($ VSub_Name '$PREPARE_DIR') (/python)} {(-S)} {(build/runpy_deps.py)} {(py)})]
          spids: [186]
        )
      spids: [182 185]
    )
    (FuncDef
      name: app-deps
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:app_name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [245 249]
                      )
                    }
                  spids: [244]
                )
              ]
              spids: [242]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pythonpath)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(build) (Lit_Slash /) (testdata)}
                          )
                        spids: [255 261]
                      )
                    }
                  spids: [254]
                )
              ]
              spids: [252]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:main_module)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [267 271]
                      )
                    }
                  spids: [266]
                )
              ]
              spids: [264]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:prefix)
                  op: Equal
                  rhs: {(_build/) ($ VSub_Name '$app_name') (/app-deps)}
                  spids: [277]
                )
              ]
              spids: [275]
            )
            (C {(ln)} {(-s)} {(-f)} {($ VSub_Name '$PWD') (/build/app_deps.py)} {(_tmp)})
            (SimpleCommand
              words: [
                {($ VSub_Name '$PREPARE_DIR') (/python)}
                {(-S)}
                {(_tmp/app_deps.py)}
                {(both)}
                {($ VSub_Name '$main_module')}
                {($ VSub_Name '$prefix')}
              ]
              more_env: [(env_pair name:PYTHONPATH val:{($ VSub_Name '$pythonpath')} spids:[301])]
            )
          ]
          spids: [239]
        )
      spids: [235 238]
    )
    (FuncDef
      name: py-to-compile
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pythonpath)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(build) (Lit_Slash /) (testdata)}
                          )
                        spids: [335 341]
                      )
                    }
                  spids: [334]
                )
              ]
              spids: [332]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:main_module)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [347 351]
                      )
                    }
                  spids: [346]
                )
              ]
              spids: [344]
            )
            (SimpleCommand
              words: [
                {($ VSub_Name '$PREPARE_DIR') (/python)}
                {(-S)}
                {(build/app_deps.py)}
                {(py)}
                {($ VSub_Name '$main_module')}
              ]
              more_env: [(env_pair name:PYTHONPATH val:{($ VSub_Name '$pythonpath')} spids:[355])]
            )
          ]
          spids: [329]
        )
      spids: [325 328]
    )
    (FuncDef
      name: quick-ref-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [386]
                )
              ]
              spids: [384]
            )
            (ForEach
              iter_name: path
              iter_words: [{($ VSub_Name '$dir') (/) (Lit_Other '*')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [(C {(echo)} {(DQ ($ VSub_Name '$path') (' ') ($ VSub_Name '$path'))})]
                  spids: [401 416]
                )
              spids: [395 399]
            )
          ]
          spids: [381]
        )
      spids: [377 380]
    )
    (FuncDef
      name: pyc-version-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:manifest_path)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(_build) (Lit_Slash /) (oil) (Lit_Slash /) (bytecode-opy-manifest.txt)}
                          )
                        spids: [431 439]
                      )
                    }
                  spids: [430]
                )
              ]
              spids: [428]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filename)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$manifest_path')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [457 461]
                      )
                    }
                  spids: [456]
                )
              ]
              spids: [454]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:user_str)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name filename>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(-manifest.txt)})
                        spids: [468 472]
                      ) (.zip)
                    }
                  spids: [467]
                )
              ]
              spids: [465]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(dirname)} {($ VSub_Name '$manifest_path')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [479 483]
                      )
                    }
                  spids: [478]
                )
              ]
              spids: [476]
            )
            (SimpleCommand
              words: [{(echo)} {($ VSub_Name '$user_str')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$dir') (/pyc-version.txt)}
                  spids: [491]
                )
              ]
            )
            (C {(echo)} {($ VSub_Name '$dir') (/pyc-version.txt)} {(pyc-version.txt)})
          ]
          spids: [425]
        )
      spids: [421 424]
    )
    (FuncDef
      name: make-dotd
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:app_name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)})
                        spids: [525 529]
                      )
                    }
                  spids: [524]
                )
              ]
              spids: [522]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:app_deps_to_compile)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: 
                              {(_tmp) (Lit_Slash /) (hello) (Lit_Slash /) (app-deps-to-compile.txt)}
                          )
                        spids: [535 543]
                      )
                    }
                  spids: [534]
                )
              ]
              spids: [532]
            )
            (C {(echo)} {(DQ ('# TODO ') ($ VSub_Name '$app_deps_to_compile'))})
            (C {(echo)} {(DQ (X_build/) ($ VSub_Name '$app_name') ('/ovm:'))})
            (C {(echo)} {(DQ (X_build/) ($ VSub_Name '$app_name') ('/ovm-dbg:'))})
            (C {(echo)} {(DQ (X_build/) ($ VSub_Name '$app_name') ('/ovm-cov:'))})
          ]
          spids: [519]
        )
      spids: [515 518]
    )
    (FuncDef
      name: extdecls
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: mod
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name '$mod'))} {(Lit_Other '=')} {(readline)})
                        (C {(echo)} {(DQ ('#ifdef HAVE_READLINE'))})
                      ]
                    )
                    (C {(echo)} {(DQ ('extern void init') ($ VSub_Name '$mod') ('(void);'))})
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name '$mod'))} {(Lit_Other '=')} {(readline)})
                        (C {(echo)} {(DQ ('#endif'))})
                      ]
                    )
                  ]
                  spids: [633 683]
                )
              spids: [627 631]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [619]
        )
      spids: [615 618]
    )
    (FuncDef
      name: initbits
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: mod
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name '$mod'))} {(Lit_Other '=')} {(readline)})
                        (C {(echo)} {(DQ ('#ifdef HAVE_READLINE'))})
                      ]
                    )
                    (C {(echo)} 
                      {
                        (DQ ('    {') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                          ($ VSub_Name '$mod') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (', init') ($ VSub_Name '$mod') ('},')
                        )
                      }
                    )
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name '$mod'))} {(Lit_Other '=')} {(readline)})
                        (C {(echo)} {(DQ ('#endif'))})
                      ]
                    )
                  ]
                  spids: [714 768]
                )
              spids: [708 712]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [700]
        )
      spids: [696 699]
    )
    (FuncDef
      name: gen-module-init
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:extdecls) op:Equal spids:[793])]
              spids: [791]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:extdecls)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(extdecls)} {(DQ ($ VSub_At '$@'))})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [797 803]
                      )
                    }
                  spids: [796]
                )
              ]
              spids: [796]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:initbits) op:Equal spids:[808])]
              spids: [806]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:initbits)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(initbits)} {(DQ ($ VSub_At '$@'))})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [812 818]
                      )
                    }
                  spids: [811]
                )
              ]
              spids: [811]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:template)
                  op: Equal
                  rhs: {($ VSub_Name '$PY27') (/Modules/config.c.in)}
                  spids: [824]
                )
              ]
              spids: [822]
            )
            (C {(awk)} {(-v)} {(Lit_VarLike 'template=') ($ VSub_Name '$template')} {(-v)} 
              {(Lit_VarLike 'extdecls=') (DQ ($ VSub_Name '$extdecls'))} {(-v)} {(Lit_VarLike 'initbits=') (DQ ($ VSub_Name '$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'> 
                  <'    '>
                )
              } {($ VSub_Name '$template')}
            )
          ]
          spids: [788]
        )
      spids: [784 787]
    )
    (FuncDef
      name: join-modules
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:static)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(static-c-modules.txt)}
                          )
                        spids: [895 899]
                      )
                    }
                  spids: [894]
                )
              ]
              spids: [892]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:discovered)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_build) (Lit_Slash /) (oil) (Lit_Slash /) (all-deps-c.txt)}
                          )
                        spids: [905 913]
                      )
                    }
                  spids: [904]
                )
              ]
              spids: [902]
            )
            (Pipeline
              children: [
                (C {(egrep)} {(--no-filename)} {(--only-matching)} {(SQ <'^[a-zA-Z_\\.]+'>)} 
                  {($ VSub_Name '$static')} {($ VSub_Name '$discovered')}
                )
                (C {(sort)})
                (C {(uniq)})
              ]
              negated: F
            )
          ]
          spids: [889]
        )
      spids: [885 888]
    )
    (FuncDef
      name: clean-pyc
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(find)} {($ VSub_Name '$PY27') (/Lib)} {(-name)} {(SQ <'*.pyc'>)})
                (C {(xargs)} {(--no-run-if-empty)} {(--)} {(rm)} {(--verbose)})
              ]
              negated: F
            )
          ]
          spids: [977]
        )
      spids: [973 976]
    )
    (FuncDef
      name: clean-repo
      body: 
        (BraceGroup
          children: [
            (C {(clean-source-tarball-build)})
            (C {(rm)} {(-r)} {(-f)} {(_build)} {(_release)})
            (C {(rm)} {(-f)} {(_bin/hello.) (Lit_Other '*')})
            (C {(clean-pyc)})
          ]
          spids: [1016]
        )
      spids: [1012 1015]
    )
    (FuncDef
      name: clean-source-tarball-build
      body: 
        (BraceGroup
          children: [
            (C {(rm)} {(-f)} {(-v)} {(_bin/oil.) (Lit_Other '*')})
            (C {(rm)} {(-f)} {(-v)} {(_build/oil/ovm)} {(_build/oil/ovm-dbg)})
          ]
          spids: [1062]
        )
      spids: [1058 1061]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)