(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOTFS_URL)
          op: Equal
          rhs: 
            {(http) (Lit_Other ":") 
              (
//dl-cdn.alpinelinux.org/alpine/v3.6/releases/x86_64/alpine-minirootfs-3.6.2-x86_64.tar.gz
              )
            }
          spids: [58]
        )
      ]
      spids: [56]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:CHROOT_DIR) op:Equal rhs:{(_chroot/alpine1)} spids:[65])]
      spids: [63]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:DISTRO_BUILD_CHROOT_DIR)
          op: Equal
          rhs: {(_chroot/alpine-distro-build)}
          spids: [71]
        )
      ]
      spids: [69]
    )
    (FuncDef
      name: download
      body: 
        (BraceGroup
          children: [
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} {($ VSub_Name "$ROOTFS_URL")})
          ]
          spids: [79]
        )
      spids: [75 78]
    )
    (FuncDef
      name: _extract
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [105 109]
                      )
                    }
                  spids: [104]
                )
              ]
              spids: [102]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tarball)
                  op: Equal
                  rhs: 
                    {(_tmp/) 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name "$ROOTFS_URL")})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [117 121]
                      )
                    }
                  spids: [115]
                )
              ]
              spids: [113]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name "$dest")})
            (SimpleCommand
              words: [
                {(tar)}
                {(--extract)}
                {(--gzip)}
                {(--verbose)}
                {(--directory)}
                {($ VSub_Name "$dest")}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: -1
                  arg_word: {($ VSub_Name "$tarball")}
                  spids: [148]
                )
              ]
            )
          ]
          spids: [99]
        )
      spids: [95 98]
    )
    (FuncDef
      name: extract
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(sudo)} {($ VSub_Number "$0")} {(_extract)} {(DQ ($ VSub_At "$@"))})
              terminator: <Op_Semi ";">
            )
          ]
          spids: [158]
        )
      spids: [154 157]
    )
    (FuncDef
      name: extract-distro-build
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (C {(sudo)} {($ VSub_Number "$0")} {(_extract)} 
                  {($ VSub_Name "$DISTRO_BUILD_CHROOT_DIR")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          spids: [177]
        )
      spids: [173 176]
    )
    (FuncDef
      name: chmod-chroot
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [204 208]
                      )
                    }
                  spids: [203]
                )
              ]
              spids: [201]
            )
            (C {(sudo)} {(chmod)} {(755)} {($ VSub_Name "$dest")})
          ]
          spids: [198]
        )
      spids: [194 197]
    )
    (FuncDef
      name: _setup-dns
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [236 240]
                      )
                    }
                  spids: [235]
                )
              ]
              spids: [233]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {($ VSub_Name "$chroot_dir") (/etc/resolv.conf)}
                  spids: [245]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: {(DQ ("nameserver 8.8.8.8\n") ("nameserver 8.8.4.4\n"))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [249]
                )
              ]
            )
          ]
          spids: [230]
        )
      spids: [226 229]
    )
    (FuncDef
      name: setup-dns
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(sudo)} {($ VSub_Number "$0")} {(_setup-dns)} {(DQ ($ VSub_At "$@"))})
              terminator: <Op_Semi ";">
            )
          ]
          spids: [260]
        )
      spids: [256 259]
    )
    (FuncDef
      name: add-oil-build-deps
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [289 293]
                      )
                    }
                  spids: [288]
                )
              ]
              spids: [286]
            )
            (SimpleCommand
              words: [{(sudo)} {(chroot)} {($ VSub_Name "$chroot_dir")} {(/bin/sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: {(DQ ("apk update\n") ("apk add bash make gcc musl-dev \n"))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [304]
                )
              ]
            )
          ]
          spids: [283]
        )
      spids: [279 282]
    )
    (FuncDef
      name: add-alpine-sdk
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$DISTRO_BUILD_CHROOT_DIR")}
                          )
                        spids: [344 348]
                      )
                    }
                  spids: [343]
                )
              ]
              spids: [341]
            )
            (SimpleCommand
              words: [{(sudo)} {(chroot)} {($ VSub_Name "$chroot_dir")} {(/bin/sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: {(DQ ("apk update\n") ("apk add bash alpine-sdk\n"))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [359]
                )
              ]
            )
          ]
          spids: [338]
        )
      spids: [334 337]
    )
    (FuncDef
      name: list-packages
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$DISTRO_BUILD_CHROOT_DIR")}
                          )
                        spids: [377 381]
                      )
                    }
                  spids: [376]
                )
              ]
              spids: [374]
            )
            (C {(sudo)} {(chroot)} {($ VSub_Name "$chroot_dir")} {(apk)} {(info)})
          ]
          spids: [371]
        )
      spids: [367 370]
    )
    (FuncDef
      name: destroy-chroot
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [407 411]
                      )
                    }
                  spids: [406]
                )
              ]
              spids: [404]
            )
            (C {(sudo)} {(rm)} {(-r)} {(-rf)} {($ VSub_Name "$chroot_dir")})
          ]
          spids: [401]
        )
      spids: [397 400]
    )
    (FuncDef
      name: enter-chroot
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [440 444]
                      )
                    }
                  spids: [439]
                )
              ]
              spids: [437]
            )
            (C {(shift)})
            (C {(sudo)} {(chroot)} {($ VSub_Name "$chroot_dir")} {(DQ ($ VSub_At "$@"))})
          ]
          spids: [434]
        )
      spids: [430 433]
    )
    (FuncDef
      name: interactive
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:chroot_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$CHROOT_DIR")}
                          )
                        spids: [473 477]
                      )
                    }
                  spids: [472]
                )
              ]
              spids: [470]
            )
            (C {(enter-chroot)} {($ VSub_Name "$chroot_dir")} {(/bin/sh)})
          ]
          spids: [467]
        )
      spids: [463 466]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:OIL_VERSION)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(head)} {(-n)} {(1)} {(oil-version.txt)})])
                left_token: <Left_CommandSub "$(">
                spids: [492 500]
              )
            }
          spids: [491]
        )
      ]
      spids: [489]
    )
    (FuncDef
      name: _copy-tar
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(oil)})
                        spids: [513 517]
                      )
                    }
                  spids: [512]
                )
              ]
              spids: [510]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$OIL_VERSION")}
                          )
                        spids: [523 527]
                      )
                    }
                  spids: [522]
                )
              ]
              spids: [520]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest)
                  op: Equal
                  rhs: {($ VSub_Name "$CHROOT_DIR") (/src)}
                  spids: [533]
                )
              ]
              spids: [531]
            )
            (C {(mkdir)} {(-p)} {($ VSub_Name "$dest")})
            (C {(cp)} {(_release/) ($ VSub_Name "$name") (-) ($ VSub_Name "$version") (.tar.gz)} 
              {($ VSub_Name "$dest")}
            )
            (C {(ls)} {(-l)} {($ VSub_Name "$CHROOT_DIR") (/src)})
          ]
          spids: [507]
        )
      spids: [503 506]
    )
    (FuncDef
      name: copy-tar
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(sudo)} {($ VSub_Number "$0")} {(_copy-tar)} {(DQ ($ VSub_At "$@"))})
              terminator: <Op_Semi ";">
            )
          ]
          spids: [569]
        )
      spids: [565 568]
    )
    (FuncDef
      name: _test-tar
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(oil)})
                        spids: [600 604]
                      )
                    }
                  spids: [599]
                )
              ]
              spids: [597]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_Name "$OIL_VERSION")}
                          )
                        spids: [610 614]
                      )
                    }
                  spids: [609]
                )
              ]
              spids: [607]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:target)
                  op: Equal
                  rhs: {(_bin/) (${ VSub_Name name) (.ovm)}
                  spids: [620]
                )
              ]
              spids: [618]
            )
            (SimpleCommand
              words: [{(enter-chroot)} {(SQ )} {(/bin/sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("set -e\n") ("cd src\n") ("tar --extract -z < ") ($ VSub_Name "$name") (-) 
                        ($ VSub_Name "$version") (".tar.gz\n") ("cd ") ($ VSub_Name "$name") (-) ($ VSub_Name "$version") ("\n") ("./configure\n") 
                        ("time make ") ($ VSub_Name "$target") ("\n") ("echo\n") ("echo ") (Right_DoubleQuote "\"") ("*** Running ") 
                        ($ VSub_Name "$target") (Right_DoubleQuote "\"") ("\n") ("#PYTHONVERBOSE=9 \n") ($ VSub_Name "$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")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [640]
                )
              ]
            )
          ]
          spids: [594]
        )
      spids: [590 593]
    )
    (FuncDef
      name: test-tar
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: (C {(sudo)} {($ VSub_Number "$0")} {(_test-tar)} {(DQ ($ VSub_At "$@"))})
              terminator: <Op_Semi ";">
            )
          ]
          spids: [687]
        )
      spids: [683 686]
    )
    (C {(DQ ($ VSub_At "$@"))})
  ]
)