(command.CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (command.Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:ROOTFS_URL spids:[58])
          op: Equal
          rhs: 
            {
              (SQ 
                <
'http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/x86_64/alpine-minirootfs-3.6.2-x86_64.tar.gz'
                >
              )
            }
          spids: [58]
        )
      ]
      spids: [56]
    )
    (command.Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:CHROOT_DIR spids:[65])
          op: Equal
          rhs: {(_chroot/alpine1)}
          spids: [65]
        )
      ]
      spids: [63]
    )
    (command.Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:DISTRO_BUILD_CHROOT_DIR spids:[71])
          op: Equal
          rhs: {(_chroot/alpine-distro-build)}
          spids: [71]
        )
      ]
      spids: [69]
    )
    (command.FuncDef
      name: download
      body: 
        (command.BraceGroup
          children: [
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} {($ VSub_DollarName '$ROOTFS_URL')})
          ]
          spids: [79]
        )
      spids: [75 78]
    )
    (command.FuncDef
      name: _extract
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dest spids:[104])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [105 109]
                      )
                    }
                  spids: [104]
                )
              ]
              spids: [102]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:tarball spids:[115])
                  op: Equal
                  rhs: 
                    {(_tmp/) 
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {($ VSub_DollarName '$ROOTFS_URL')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [117 121]
                      )
                    }
                  spids: [115]
                )
              ]
              spids: [113]
            )
            (C {(mkdir)} {(-p)} {($ VSub_DollarName '$dest')})
            (command.SimpleCommand
              words: [
                {(tar)}
                {(--extract)}
                {(--gzip)}
                {(--verbose)}
                {(--directory)}
                {($ VSub_DollarName '$dest')}
              ]
              redirects: [
                (redir.Redir
                  op: <Redir_Less '<'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$tarball')}
                )
              ]
            )
          ]
          spids: [99]
        )
      spids: [95 98]
    )
    (command.FuncDef
      name: extract
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ VSub_Number '$0')} {(_extract)} {(DQ ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [158]
        )
      spids: [154 157]
    )
    (command.FuncDef
      name: extract-distro-build
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(sudo)} {($ VSub_Number '$0')} {(_extract)} 
                  {($ VSub_DollarName '$DISTRO_BUILD_CHROOT_DIR')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [177]
        )
      spids: [173 176]
    )
    (command.FuncDef
      name: chmod-chroot
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dest spids:[203])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [204 208]
                      )
                    }
                  spids: [203]
                )
              ]
              spids: [201]
            )
            (C {(sudo)} {(chmod)} {(755)} {($ VSub_DollarName '$dest')})
          ]
          spids: [198]
        )
      spids: [194 197]
    )
    (command.FuncDef
      name: _setup-dns
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[235])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [236 240]
                      )
                    }
                  spids: [235]
                )
              ]
              spids: [233]
            )
            (command.SimpleCommand
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$chroot_dir') (/etc/resolv.conf)}
                )
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 255
                  stdin_parts: [('nameserver 8.8.8.8\n') ('nameserver 8.8.4.4\n')]
                )
              ]
            )
          ]
          spids: [230]
        )
      spids: [226 229]
    )
    (command.FuncDef
      name: setup-dns
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ VSub_Number '$0')} {(_setup-dns)} {(DQ ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [262]
        )
      spids: [258 261]
    )
    (command.FuncDef
      name: add-oil-build-deps
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[290])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [291 295]
                      )
                    }
                  spids: [290]
                )
              ]
              spids: [288]
            )
            (command.SimpleCommand
              words: [{(sudo)} {(chroot)} {($ VSub_DollarName '$chroot_dir')} {(/bin/sh)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 312
                  stdin_parts: [('apk update\n') ('apk add bash make gcc musl-dev \n')]
                )
              ]
            )
          ]
          spids: [285]
        )
      spids: [281 284]
    )
    (command.FuncDef
      name: add-alpine-sdk
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[347])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$DISTRO_BUILD_CHROOT_DIR')}
                          )
                        spids: [348 352]
                      )
                    }
                  spids: [347]
                )
              ]
              spids: [345]
            )
            (command.SimpleCommand
              words: [{(sudo)} {(chroot)} {($ VSub_DollarName '$chroot_dir')} {(/bin/sh)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 369
                  stdin_parts: [('apk update\n') ('apk add bash alpine-sdk\n')]
                )
              ]
            )
          ]
          spids: [342]
        )
      spids: [338 341]
    )
    (command.FuncDef
      name: list-packages
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[382])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$DISTRO_BUILD_CHROOT_DIR')}
                          )
                        spids: [383 387]
                      )
                    }
                  spids: [382]
                )
              ]
              spids: [380]
            )
            (C {(sudo)} {(chroot)} {($ VSub_DollarName '$chroot_dir')} {(apk)} {(info)})
          ]
          spids: [377]
        )
      spids: [373 376]
    )
    (command.FuncDef
      name: destroy-chroot
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[412])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [413 417]
                      )
                    }
                  spids: [412]
                )
              ]
              spids: [410]
            )
            (C {(sudo)} {(rm)} {(-r)} {(-rf)} {($ VSub_DollarName '$chroot_dir')})
          ]
          spids: [407]
        )
      spids: [403 406]
    )
    (command.FuncDef
      name: enter-chroot
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[445])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [446 450]
                      )
                    }
                  spids: [445]
                )
              ]
              spids: [443]
            )
            (C {(shift)})
            (C {(sudo)} {(chroot)} {($ VSub_DollarName '$chroot_dir')} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [440]
        )
      spids: [436 439]
    )
    (command.FuncDef
      name: interactive
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[478])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [479 483]
                      )
                    }
                  spids: [478]
                )
              ]
              spids: [476]
            )
            (C {(enter-chroot)} {($ VSub_DollarName '$chroot_dir')} {(/bin/sh)})
          ]
          spids: [473]
        )
      spids: [469 472]
    )
    (command.Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:OIL_VERSION spids:[497])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(head)} {(-n)} {(1)} {(oil-version.txt)})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [498 506]
              )
            }
          spids: [497]
        )
      ]
      spids: [495]
    )
    (command.FuncDef
      name: _copy-tar
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[525])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [526 530]
                      )
                    }
                  spids: [525]
                )
              ]
              spids: [523]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[535])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(oil)})
                        spids: [536 540]
                      )
                    }
                  spids: [535]
                )
              ]
              spids: [533]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:version spids:[545])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$OIL_VERSION')}
                          )
                        spids: [546 550]
                      )
                    }
                  spids: [545]
                )
              ]
              spids: [543]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:dest spids:[556])
                  op: Equal
                  rhs: {($ VSub_DollarName '$chroot_dir') (/src)}
                  spids: [556]
                )
              ]
              spids: [554]
            )
            (C {(mkdir)} {(-p)} {($ VSub_DollarName '$dest')})
            (C {(cp)} {(-v)} 
              {(_release/) ($ VSub_DollarName '$name') (-) ($ VSub_DollarName '$version') (.tar.gz)} {($ VSub_DollarName '$dest')}
            )
          ]
          spids: [520]
        )
      spids: [516 519]
    )
    (command.FuncDef
      name: copy-tar
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ VSub_Number '$0')} {(_copy-tar)} {(DQ ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [586]
        )
      spids: [582 585]
    )
    (command.FuncDef
      name: _test-tar
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:chroot_dir spids:[611])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$CHROOT_DIR')}
                          )
                        spids: [612 616]
                      )
                    }
                  spids: [611]
                )
              ]
              spids: [609]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:name spids:[621])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(oil)})
                        spids: [622 626]
                      )
                    }
                  spids: [621]
                )
              ]
              spids: [619]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:version spids:[631])
                  op: Equal
                  rhs: 
                    {
                      (word_part.BracedVarSub
                        token: <VSub_Number 3>
                        suffix_op: 
                          (suffix_op.StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$OIL_VERSION')}
                          )
                        spids: [632 636]
                      )
                    }
                  spids: [631]
                )
              ]
              spids: [629]
            )
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:target spids:[642])
                  op: Equal
                  rhs: {(_bin/) (${ VSub_Name name) (.ovm)}
                  spids: [642]
                )
              ]
              spids: [640]
            )
            (command.SimpleCommand
              words: [{(enter-chroot)} {(DQ ($ VSub_DollarName '$chroot_dir'))} {(/bin/sh)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 705
                  stdin_parts: [
                    ('set -e\n')
                    ('cd src\n')
                    ('tar --extract -z < ')
                    ($ VSub_DollarName '$name')
                    (-)
                    ($ VSub_DollarName '$version')
                    ('.tar.gz\n')
                    ('cd ')
                    ($ VSub_DollarName '$name')
                    (-)
                    ($ VSub_DollarName '$version')
                    ('\n')
                    ('./configure\n')
                    ('time make ')
                    ($ VSub_DollarName '$target')
                    ('\n')
                    ('echo\n')
                    ('echo ')
                    (Right_DoubleQuote '"')
                    ('*** Running ')
                    ($ VSub_DollarName '$target')
                    (Right_DoubleQuote '"')
                    ('\n')
                    ('#PYTHONVERBOSE=9 \n')
                    ($ VSub_DollarName '$target')
                    (' --version\n')
                    ('./install\n')
                    ('echo\n')
                    ('echo ')
                    (Right_DoubleQuote '"')
                    ('*** Running osh')
                    (Right_DoubleQuote '"')
                    ('\n')
                    ('osh --version\n')
                    ('echo status=')
                    ($ VSub_QMark '$?')
                    ('\n')
                    ('echo DONE\n')
                  ]
                )
              ]
            )
          ]
          spids: [606]
        )
      spids: [602 605]
    )
    (command.FuncDef
      name: test-tar
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ VSub_Number '$0')} {(_test-tar)} {(DQ ($ VSub_At '$@'))})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [712]
        )
      spids: [708 711]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)