(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_DATA) op: assign_op.Equal rhs: {(perf.data)} spids: [10] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:25) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_DATA) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [30] ) ] ) ] spids: [13 27] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:57) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR) op: assign_op.Equal rhs: {(word_part.TildeSub token:(Token id:Id.Lit_TildeLike val:'~' span_id:63)) (/.debug/) } spids: [62] ) ] ) ] spids: [48 59] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') (/)} spids: [73] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILDIDS) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:81) command_list: (command.CommandList children: [(C {(mktemp)} {(/tmp/perf-archive-buildids.XXXXXX)})] ) ) } spids: [80] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NOBUILDID) op: assign_op.Equal rhs: {(0000000000000000000000000000000000000000)} spids: [87] ) ] ) (command.Pipeline children: [ (C {(perf)} {(buildid-list)} {(-i)} {($ Id.VSub_DollarName '$PERF_DATA')} {(--with-hits)}) (command.Simple words: [{(grep)} {(-v)} {(DQ ('^') ($ Id.VSub_DollarName '$NOBUILDID') (' '))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:113) fd: -1 arg_word: {($ Id.VSub_DollarName '$BUILDIDS')} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-s)} {($ Id.VSub_DollarName '$BUILDIDS')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:129) ) ] action: [ (C {(echo)} {(DQ ('perf archive: no build-ids found'))}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {(rm)} {($ Id.VSub_DollarName '$BUILDIDS')}) (C {(true)})] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:150) arg_word: {(1)} ) ] spids: [117 131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MANIFEST) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:158) command_list: (command.CommandList children: [(C {(mktemp)} {(/tmp/perf-archive-manifest.XXXXXX)})] ) ) } spids: [157] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_LINKDIR) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:165) command_list: (command.CommandList children: [(C {(readlink)} {(-f)} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')})] ) ) (/) } spids: [164] ) ] ) (command.Pipeline children: [ (C {(cut)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:180))} {(-f)} {(1)} {($ Id.VSub_DollarName '$BUILDIDS')} ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:192) cond: [ (command.Sentence child: (C {(read)} {(build_id)}) terminator: (Token id:Id.Op_Semi val:';' span_id:198) ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:linkname) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') (.build-id/) (braced_var_sub token: (Token id:Id.VSub_Name val:build_id span_id:207) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)}) length: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) (/) (braced_var_sub token: (Token id:Id.VSub_Name val:build_id span_id:215) suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Id.Lit_Digits 2)}) ) ) } spids: [203] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:222) command_list: (command.CommandList children: [(C {(readlink)} {(-f)} {($ Id.VSub_DollarName '$linkname')})] ) ) } spids: [221] ) ] ) (command.Simple words: [ {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:linkname span_id:234) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:239) fd: -1 arg_word: {($ Id.VSub_DollarName '$MANIFEST')} ) ] ) (command.Simple words: [ {(echo)} { (braced_var_sub token: (Token id:Id.VSub_Name val:filename span_id:247) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_LINKDIR')} ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:252) fd: -1 arg_word: {($ Id.VSub_DollarName '$MANIFEST')} ) ] ) ] ) ) ] negated: F ) (C {(tar)} {(cjf)} {($ Id.VSub_DollarName '$PERF_DATA') (.tar.bz2)} {(-C)} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} {(-T)} {($ Id.VSub_DollarName '$MANIFEST')} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(rm)} {($ Id.VSub_DollarName '$MANIFEST')} {($ Id.VSub_DollarName '$BUILDIDS')}) (C {(true)}) ] ) (C {(echo)} {(-e)} {(DQ ('Now please run:') (Id.Lit_Other '\\') (n))}) (C {(echo)} {(-e)} { (DQ (Id.Lit_Other '$') (' tar xvf ') ($ Id.VSub_DollarName '$PERF_DATA') ('.tar.bz2 -C ~/.debug') (Id.Lit_Other '\\') (n) ) } ) (C {(echo)} {(DQ ("wherever you need to run 'perf report' on."))}) (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:313) arg_word:{(0)}) ] )