(command.CommandList
  children: [
    (C {<echo>} {(DQ <'*** GET GLIBC BEGIN ***'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SRC_DIR)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))}
          spids: [11]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOWNLOAD_URL)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<grep>} {<-i>} {<Id.Lit_Other '^'> <GLIBC_SOURCE_URL>} {<.config>})
                      (C {<cut>} {<-f2>} {<-d> (SQ <'='>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCHIVE_FILE)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name DOWNLOAD_URL>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VOp1_DPound '##'>
                    arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                  )
              )
            }
          spids: [47]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USE_LOCAL_SOURCE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<grep>} {<-i>} {<Id.Lit_Other '^'> <USE_LOCAL_SOURCE>} {<.config>})
                        (C {<cut>} {<-f2>} {<-d> (SQ <'='>)})
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [59]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$USE_LOCAL_SOURCE'))} 
                      {<Id.Lit_Equals '='>} {(DQ <true>)} {<-a>} {<Id.KW_Bang '!'>} {<-f>} 
                      {($ Id.VSub_DollarName '$SRC_DIR') <'/source/'> 
                        ($ Id.VSub_DollarName '$ARCHIVE_FILE')
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} 
              {
                (DQ <'Source bundle '> ($ Id.VSub_DollarName '$SRC_DIR') <'/source/'> 
                  ($ Id.VSub_DollarName '$ARCHIVE_FILE') <' is missing and will be downloaded.'>
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:USE_LOCAL_SOURCE)
                  op: assign_op.Equal
                  rhs: {(DQ <false>)}
                  spids: [127]
                )
              ]
            )
          ]
          spids: [85 113]
        )
      ]
    )
    (C {<cd>} {<source>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                      {(DQ ($ Id.VSub_DollarName '$USE_LOCAL_SOURCE'))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} 
              {(DQ <'Downloading glibc source bundle from '> ($ Id.VSub_DollarName '$DOWNLOAD_URL'))}
            )
            (C {<wget>} {<-c>} {($ Id.VSub_DollarName '$DOWNLOAD_URL')})
          ]
          spids: [140 160]
        )
      ]
      else_action: [
        (C {<echo>} 
          {
            (DQ <'Using local glibc source bundle '> ($ Id.VSub_DollarName '$SRC_DIR') <'/source/'> 
              ($ Id.VSub_DollarName '$ARCHIVE_FILE')
            )
          }
        )
      ]
    )
    (C {<echo>} {(DQ <'Removing glibc work area. This may take a while...'>)})
    (C {<rm>} {<-rf>} {<'../work/glibc'>})
    (C {<mkdir>} {<'../work/glibc'>})
    (C {<tar>} {<-xvf>} {($ Id.VSub_DollarName '$ARCHIVE_FILE')} {<-C>} {<'../work/glibc'>})
    (C {<cd>} {($ Id.VSub_DollarName '$SRC_DIR')})
    (C {<echo>} {(DQ <'*** GET GLIBC END ***'>)})
  ]
)