(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 {(readonly)} 
      {(Id.Lit_VarLike 'ROOTFS_URL=') 
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 
'http://distfiles.gentoo.org/releases/amd64/autobuilds/20180116T214503Z/stage3-amd64-20180116T214503Z.tar.xz'
            span_id: 54
          )
        )
      }
    )
    (C {(readonly)} {(Id.Lit_VarLike 'CHROOT_DIR=') (_chroot/gentoo)})
    (C {(readonly)} 
      {(Id.Lit_VarLike 'PORTAGE_URL=') 
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'http://distfiles.gentoo.org/snapshots/portage-20180202.tar.xz'
            span_id: 67
          )
        )
      }
    )
    (command.ShFunction
      name: download
      body: 
        (command.BraceGroup
          children: [
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} {($ Id.VSub_DollarName '$ROOTFS_URL')})
            (C {(wget)} {(--no-clobber)} {(--directory)} {(_tmp)} {($ Id.VSub_DollarName '$PORTAGE_URL')})
          ]
        )
    )
    (command.ShFunction
      name: _extract
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'dest=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:113)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$CHROOT_DIR')}
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'tarball=') (_tmp/) 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:124)
                  command_list: 
                    (command.CommandList
                      children: [(C {(basename)} {($ Id.VSub_DollarName '$ROOTFS_URL')})]
                    )
                )
              }
            )
            (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$dest')})
            (command.Simple
              words: [{(tar)} {(--extract)} {(--xz)} {(--directory)} {($ Id.VSub_DollarName '$dest')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:153)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$tarball')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: extract
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ Id.VSub_Number '$0')} {(_extract)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:174)
            )
          ]
        )
    )
    (command.ShFunction
      name: _extract-portage
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'dest=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:190)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$CHROOT_DIR')}
                    )
                )
              }
            )
            (C {(local)} {(Id.Lit_VarLike 'portage_dest=') ($ Id.VSub_DollarName '$dest') (/usr)})
            (C {(local)} 
              {(Id.Lit_VarLike 'tarball=') (_tmp/) 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:208)
                  command_list: 
                    (command.CommandList
                      children: [(C {(basename)} {($ Id.VSub_DollarName '$PORTAGE_URL')})]
                    )
                )
              }
            )
            (command.Simple
              words: [
                {(tar)}
                {(--extract)}
                {(--xz)}
                {(--directory)}
                {($ Id.VSub_DollarName '$portage_dest')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:230)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$tarball')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: extract-portage
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(sudo)} {($ Id.VSub_Number '$0')} {(_extract-portage)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:251)
            )
          ]
        )
    )
    (command.ShFunction
      name: _mount-dirs
      body: 
        (command.BraceGroup
          children: [
            (C {(mount)} {(--rbind)} {(/dev)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/dev)})
            (C {(mount)} {(--make-rslave)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/dev)})
            (C {(mount)} {(-t)} {(Id.KW_Proc proc)} {(/proc)} 
              {($ Id.VSub_DollarName '$CHROOT_DIR') (/proc)}
            )
            (C {(mount)} {(--rbind)} {(/sys)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/sys)})
            (C {(mount)} {(--make-rslave)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/sys)})
            (C {(mount)} {(--rbind)} {(/tmp)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/tmp)})
          ]
        )
    )
    (command.ShFunction
      name: mount-dirs
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: (C {(sudo)} {($ Id.VSub_Number '$0')} {(_mount-dirs)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:341)
            )
          ]
        )
    )
    (command.ShFunction
      name: _setup-portage
      body: 
        (command.BraceGroup
          children: [
            (C {(cp)} {(-v)} 
              {($ Id.VSub_DollarName '$CHROOT_DIR') (/usr/share/portage/config/make.conf.example)} {($ Id.VSub_DollarName '$CHROOT_DIR') (/etc/portage)}
            )
          ]
        )
    )
    (command.ShFunction
      name: setup-portage
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(sudo)} {($ Id.VSub_Number '$0')} {(_setup-portage)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:380)
            )
          ]
        )
    )
    (command.ShFunction
      name: add-oil-build-deps
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'chroot_dir=') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Number val:1 span_id:420)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonHyphen
                      arg_word: {($ Id.VSub_DollarName '$CHROOT_DIR')}
                    )
                )
              }
            )
            (command.Simple
              words: [{(sudo)} {(chroot)} {($ Id.VSub_DollarName '$chroot_dir')} {(/bin/sh)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:434)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 440
                  stdin_parts: [('apk update\n') ('apk add bash make gcc musl-dev \n')]
                )
              ]
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)