(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: configure
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'dir='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$PREPARE_DIR')}
                    )
                )
              }
            )
            (C {<rm>} {<-r>} {<-f>} {($ Id.VSub_DollarName '$dir')})
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$dir')})
            (C {<local>} 
              {<Id.Lit_VarLike 'conf='> ($ Id.VSub_DollarName '$PWD') </> 
                ($ Id.VSub_DollarName '$PY27') </configure>
              }
            )
            (C {<pushd>} {($ Id.VSub_DollarName '$dir')})
            (command.TimeBlock
              pipeline: (C {($ Id.VSub_DollarName '$conf')} {<--without-threads>})
            )
            (C {<popd>})
          ]
        )
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'NPROC='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {<nproc>})])
        )
      }
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'JOBS='> 
        (word_part.ArithSub
          anode: 
            (arith_expr.TernaryOp
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_DEqual
                  left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike NPROC>)
                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                )
              true_expr: (arith_expr.VarRef token:<Id.Lit_ArithVarLike NPROC>)
              false_expr: 
                (arith_expr.Binary
                  op_id: Id.Arith_Minus
                  left: (arith_expr.VarRef token:<Id.Lit_ArithVarLike NPROC>)
                  right: (arith_expr.ArithWord w:{<Id.Lit_Digits 1>})
                )
            )
        )
      }
    )
    (command.ShFunction
      name: build-python
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'dir='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$PREPARE_DIR')}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'extra_cflags='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(SQ <-O0>)})
                )
              }
            )
            (C {<pushd>} {($ Id.VSub_DollarName '$dir')})
            (C {<make>} {<clean>})
            (command.TimeBlock
              pipeline: 
                (C {<make>} {<-j>} {($ Id.VSub_DollarName '$JOBS')} 
                  {<Id.Lit_VarLike 'EXTRA_CFLAGS='> (DQ ($ Id.VSub_DollarName '$extra_cflags'))}
                )
            )
            (C {<popd>})
          ]
        )
    )
    (command.ShFunction
      name: cpython-instrumented
      body: 
        (command.BraceGroup
          children: [
            (C {<configure>} {<_devbuild/cpython-instrumented>})
            (C {<build-python>} {<_devbuild/cpython-instrumented>} {(SQ <'-O0 -pg'>)})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)