(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<uwsgi>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<2.0.15>}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: {(DQ <'uWSGI application container server'>)}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'http://projects.unbit.it/uwsgi/'>)}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <all>)}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <GPL2>)}
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends)
          op: assign_op.Equal
          rhs: {(DQ <mailcap>)}
          spids: [41]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:install)
          op: assign_op.Equal
          rhs: {(DQ <uwsgi.pre-install>)}
          spids: [46]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgusers)
          op: assign_op.Equal
          rhs: {(DQ <uwsgi>)}
          spids: [51]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkggroups)
          op: assign_op.Equal
          rhs: {(DQ <uwsgi>)}
          spids: [56]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> <'\tattr-dev\n'> <'\tcurl-dev\n'> <'\tgeoip-dev\n'> <'\tjansson-dev\n'> 
                <'\tlibcap-dev\n'> <'\tlinux-headers\n'> <'\tlinux-pam-dev\n'> <'\tlibxml2-dev\n'> <'\tlibxslt-dev\n'> <'\tlua5.2-dev\n'> 
                <'\tpaxmark\n'> <'\tpcre-dev\n'> <'\tpostgresql-dev\n'> <'\tpython\n'> <'\tpython2-dev\n'> <'\tpython3-dev\n'> 
                <'\tzeromq-dev\n'> <'\tzlib-dev\n'> <'\t'>
              )
            }
          spids: [61]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'http://projects.unbit.it/downloads/uwsgi-'> (${ Id.VSub_Name pkgver) <'.tar.gz\n'> 
                <'\tuwsgi.initd\n'> <'\tuwsgi.ini\n'> <'\treadme.emperor\n'> <'\talpine.buildconf\n'> <'\tmusl-fix-python.patch\n'> <'\t'>
              )
            }
          spids: [85]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$srcdir') </> ($ Id.VSub_DollarName '$pkgname') <-> 
                ($ Id.VSub_DollarName '$pkgver')
              )
            }
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_plugins)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> <'\talarm_curl\n'> <'\tcache\n'> <'\tcarbon\n'> <'\tcgi\n'> 
                <'\tcheaper_backlog2\n'> <'\tcheaper_busyness\n'> <'\tcorerouter\n'> <'\tcurl_cron\n'> <'\tdumbloop\n'> <'\tdummy\n'> <'\techo\n'> 
                <'\temperor_amqp\n'> <'\temperor_pg\n'> <'\temperor_zeromq\n'> <'\tfastrouter\n'> <'\tforkptyrouter\n'> <'\tgeoip\n'> 
                <'\tgevent\n'> <'\tgraylog2\n'> <'\thttp\n'> <'\tlegion_cache_fetch\n'> <'\tlogcrypto\n'> <'\tlogfile\n'> <'\tlogpipe\n'> 
                <'\tlogsocket\n'> <'\tlogzmq\n'> <'\tlua\n'> <'\tmsgpack\n'> <'\tnagios\n'> <'\tnotfound\n'> <'\tpam\n'> <'\tping\n'> 
                <'\tpty\n'> <'\tpython\n'> <'\trawrouter\n'> <'\tredislog\n'> <'\trouter_basicauth\n'> <'\trouter_cache\n'> 
                <'\trouter_expires\n'> <'\trouter_hash\n'> <'\trouter_http\n'> <'\trouter_memcached\n'> <'\trouter_metrics\n'> 
                <'\trouter_radius\n'> <'\trouter_redirect\n'> <'\trouter_redis\n'> <'\trouter_rewrite\n'> <'\trouter_static\n'> 
                <'\trouter_uwsgi\n'> <'\trpc\n'> <'\trrdtool\n'> <'\trsyslog\n'> <'\tsignal\n'> <'\tspooler\n'> <'\tsslrouter\n'> 
                <'\tstats_pusher_file\n'> <'\tstats_pusher_socket\n'> <'\tstats_pusher_statsd\n'> <'\tsymcall\n'> <'\tsyslog\n'> 
                <'\ttransformation_chunked\n'> <'\ttransformation_gzip\n'> <'\ttransformation_offload\n'> <'\ttransformation_template\n'> 
                <'\ttransformation_tofile\n'> <'\ttuntap\n'> <'\tugreen\n'> <'\twebdav\n'> <'\txslt\n'> <'\tzabbix\n'> <'\tzergpool\n'> <'\t'>
              )
            }
          spids: [116]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_plugins3)
          op: assign_op.Equal
          rhs: {(DQ <'gevent:gevent3 python:python3'>)}
          spids: [199]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [205]
        )
      ]
    )
    (command.ForEach
      iter_name: _p
      iter_words: [{($ Id.VSub_DollarName '$_plugins')} {($ Id.VSub_DollarName '$_plugins3')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:subpackages)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$subpackages') <' uwsgi-'> 
                        (braced_var_sub
                          token: <Id.VSub_Name _p>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<'*:'>})
                        ) <':_plugin'>
                      )
                    }
                  spids: [223]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_desc_gevent)
          op: assign_op.Equal
          rhs: {(DQ <'uWSGI plugin for gevent (Python 2)'>)}
          spids: [238]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_desc_gevent3)
          op: assign_op.Equal
          rhs: {(DQ <'uWSGI plugin for gevent (Python 3)'>)}
          spids: [243]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_desc_python)
          op: assign_op.Equal
          rhs: {(DQ <'uWSGI plugin for Python 2'>)}
          spids: [248]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_desc_python3)
          op: assign_op.Equal
          rhs: {(DQ <'uWSGI plugin for Python 3'>)}
          spids: [253]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<default_prepare>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<cp>} {(DQ ($ Id.VSub_DollarName '$srcdir')) </alpine.buildconf>} 
              {<buildconf/alpine.ini>}
            )
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (command.BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (C {<msg>} {(DQ <'Building core'>)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<python2>} {<uwsgiconfig.py>} {<--build>} {<alpine>}]
                  more_env: [(env_pair name:CC val:{(DQ <gcc>)} spids:[314])]
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<export>} {<Id.Lit_VarLike 'UWSGICONFIG_LUAPC='> (DQ <lua5.2>)})
            (C {<local>} {<item>})
            (command.ForEach
              iter_name: item
              iter_words: [{($ Id.VSub_DollarName '$_plugins')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<_build>} {<python>} {(DQ ($ Id.VSub_DollarName '$item'))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ForEach
              iter_name: item
              iter_words: [{($ Id.VSub_DollarName '$_plugins3')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<_build>} {<python3>} {(DQ ($ Id.VSub_DollarName '$item'))})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: _build
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'python='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'plugin='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Number 2>
                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<':*'>})
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'myname='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Number 2>
                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<'*:'>})
                  )
                )
              }
            )
            (C {<msg>} 
              {
                (DQ <'Building '> ($ Id.VSub_DollarName '$plugin') <' plugin ('> 
                  ($ Id.VSub_DollarName '$myname') <')'>
                )
              }
            )
            (C {($ Id.VSub_DollarName '$python')} {<uwsgiconfig.py>} {<--plugin>} 
              {<plugins/> ($ Id.VSub_DollarName '$plugin')} {<alpine>} {($ Id.VSub_DollarName '$myname')}
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (command.BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-m>} {<755>} {<-D>} {<uwsgi>} 
                  {(DQ ($ Id.VSub_DollarName '$pkgdir')) </usr/sbin/uwsgi>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-m>} {<644>} {<-D>} 
                  {(DQ ($ Id.VSub_DollarName '$srcdir')) </readme.emperor>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) </etc/uwsgi/conf.d/readme.emperor>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-m>} {<644>} {<-D>} {(DQ ($ Id.VSub_DollarName '$srcdir')) </uwsgi.ini>} 
                  {(DQ ($ Id.VSub_DollarName '$pkgdir')) </etc/uwsgi/uwsgi.ini>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-m>} {<755>} {<-D>} 
                  {(DQ ($ Id.VSub_DollarName '$srcdir')) </uwsgi.initd>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) </etc/init.d/uwsgi>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<install>} {<-m>} {<775>} {<-d>} {<-o>} {<root>} {<-g>} {<uwsgi>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) </var/log/uwsgi>}
            )
            (C {<paxmark>} {<-em>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) </usr/sbin/uwsgi>})
          ]
        )
    )
    (command.ShFunction
      name: _plugin
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'name='> 
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name subpkgname>
                    suffix_op: 
                      (suffix_op.Unary
                        op_id: Id.VOp1_Pound
                        arg_word: {($ Id.VSub_DollarName '$pkgname') <->}
                      )
                  )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'desc='> 
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {<eval>} 
                            {
                              (DQ <'echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                <_desc_> ($ Id.VSub_DollarName '$name')
                              )
                            }
                          )
                        ]
                      )
                  )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name desc>
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: Id.VTest_ColonHyphen
                              arg_word: {(DQ <'uWSGI plugin '> ($ Id.VSub_DollarName '$name'))}
                            )
                        )
                      )
                    }
                  spids: [675]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:depends)
                  op: assign_op.Equal
                  rhs: {(DQ <uwsgi>)}
                  spids: [688]
                )
              ]
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (C {<local>} 
              {<Id.Lit_VarLike 'requires='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [
                                {<sed>}
                                {(SQ <'$a print(" ".join(REQUIRES))'>)}
                                {<plugins/> ($ Id.VSub_DollarName '$name') </uwsgiplugin.py>}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_Great '2>'>
                                  fd: 2
                                  arg_word: {</dev/null>}
                                )
                              ]
                            )
                            (command.Simple
                              words: [{<python3>}]
                              redirects: [
                                (redir.Redir
                                  op: <Id.Redir_Great '2>'>
                                  fd: 2
                                  arg_word: {</dev/null>}
                                )
                              ]
                            )
                          ]
                          negated: F
                        )
                      ]
                    )
                )
              }
            )
            (command.Sentence child:(C {<local>} {<req>}) terminator:<Id.Op_Semi _>)
            (command.ForEach
              iter_name: req
              iter_words: [{($ Id.VSub_DollarName '$requires')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_DollarName '$_plugins'))})
                                    (C {<grep>} {<-qw>} {(DQ ($ Id.VSub_DollarName '$req'))})
                                  ]
                                  negated: F
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:depends)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$depends') <' '> 
                                        ($ Id.VSub_DollarName '$pkgname') <-> ($ Id.VSub_DollarName '$req')
                                      )
                                    }
                                  spids: [771]
                                )
                              ]
                            )
                          ]
                          spids: [749 768]
                        )
                      ]
                      else_action: [
                        (C {<error>} 
                          {
                            (DQ <"There's no subpackage for requirement "> 
                              ($ Id.VSub_DollarName '$req') <'!'>
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<install>} {<-m>} {<755>} {<-D>} {(${ Id.VSub_Name name) <_plugin.so>} 
                  {(DQ ($ Id.VSub_DollarName '$subpkgdir')) </usr/lib/uwsgi/> (${ Id.VSub_Name name) 
                    <_plugin.so>
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'cb3ce7dc9eb9806151b04b04dc80ac7204cb4ddadf295eea98d5ebbf3a8c02f4b0bfb9a0490997c5edf427e39d3073a2d5b4fe7bd8ec458b30c0aab8e1da9bef  uwsgi-2.0.15.tar.gz\n'
                > 
                <
'63137d45437e00deb970d66e2abddf7f235636b748f6cf545f54ff5557066c2a71db5c4a3bab2edceb4e65d3d7fac887f1f4c0e77658127e02b64d3026780b4c  uwsgi.initd\n'
                > 
                <
'370202e143d0e041a2e36905346080d3ca592c9a74705a8c4e142a1307d22b921c10e673d683ca284ea27d184474ed86edd7723a6e590d35a562ad7cf6afa529  uwsgi.ini\n'
                > 
                <
'2798c9d2e49e29292ffe6a5a29b866301c78d5f322fc5d07dfa9569efdaa5220237a5f6744652fbdd957be29311ddaff190541333f042cbf0e907dfa98ce3e2a  readme.emperor\n'
                > 
                <
'f3cff00926929a5bb40afafb65fd5228582af35fbf524562282020c4c4ae9c659231b2381f4b3cceb18e8f3f6c888c21bdd8ed4ddcd81e92fbc6a0891800ce38  alpine.buildconf\n'
                > 
                <
'de68b16b44e554a79c073c9befa10566796316dbf4c375b4d6b633d80b0282694cca233f0a70f3d6570584324f14276826bbeb8f38b550c00087a05f9ba9227f  musl-fix-python.patch'
                >
              )
            }
          spids: [838]
        )
      ]
    )
  ]
)