(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (--verbose))} {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=') (Id.Lit_Equals '=')} {(DQ (-v))} {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:47) ) ] action: [ (C {(shift)} {(1)}) (command.ShFunction name: debug body: (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(DQ ($ Id.VSub_Star '$*'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:66) ) ] ) ) ] spids: [14 49] ) ] else_action: [ (command.ShFunction name: debug body: (command.BraceGroup children: [ (command.Sentence child: (C {(Id.Lit_Other ':')}) terminator: (Token id:Id.Op_Semi val:';' span_id:79) ) ] ) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:97) ) ] action: [ (C {(echo)} {(DQ ('Usage: ') ($ Id.VSub_Number '$0') (' <private_libdir>'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:111) arg_word: {(1)} ) ] spids: [86 99] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UNAME) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:120) command_list: (command.CommandList children:[(C {(uname)} {(-s)})]) ) ) } spids: [118] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$UNAME'))} {(Id.Lit_Equals '=')} {(DQ (Linux))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:142) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHLIB_EXT) op: assign_op.Equal rhs: {(DQ (so))} spids: [147] ) ] ) ] spids: [127 144] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$UNAME'))} {(Id.Lit_Equals '=')} {(DQ (Darwin))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:167) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHLIB_EXT) op: assign_op.Equal rhs: {(DQ (dylib))} spids: [172] ) ] ) ] spids: [152 169] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ("WARNING: Could not autodetect platform type ('uname -s' == ") ($ Id.VSub_DollarName '$UNAME') ('); assuming Linux') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:188) fd: -1 arg_word: {(2)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UNAME) op: assign_op.Equal rhs: {(DQ (Linux))} spids: [192] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHLIB_EXT) op: assign_op.Equal rhs: {(DQ (so))} spids: [198] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:private_libdir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [206] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} { (DQ ($ Id.VSub_DollarName '$private_libdir') (/libarpack.) ($ Id.VSub_DollarName '$SHLIB_EXT') ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:225) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('ERROR: Could not open ') ($ Id.VSub_DollarName '$private_libdir') (/libarpack.) ($ Id.VSub_DollarName '$SHLIB_EXT') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:239) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:243) arg_word: {(2)} ) ] spids: [210 227] ) ] ) (command.ShFunction name: find_shlib body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lib_path) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [257] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ ($ Id.VSub_DollarName '$lib_path'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:274) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$UNAME'))} {(Id.Lit_Equals '=')} {(DQ (Linux))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:294) ) ] action: [ (command.Pipeline children: [ (C {(ldd)} {(DQ ($ Id.VSub_DollarName '$lib_path'))}) (C {(grep)} {($ Id.VSub_Number '$2')}) (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:317))} {(-f3)} ) (C {(xargs)}) ] negated: F ) ] spids: [279 296] ) ] else_action: [ (command.Pipeline children: [ (C {(otool)} {(-L)} {(DQ ($ Id.VSub_DollarName '$lib_path'))}) (C {(grep)} {($ Id.VSub_Number '$2')}) (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:353))} {(-f1)}) (C {(xargs)}) ] negated: F ) ] ) ] spids: [263 276] ) ] ) ] ) ) (command.ShFunction name: private_libname body: (command.BraceGroup children: [ (C {(echo)} { (DQ ($ Id.VSub_DollarName '$private_libdir') (/lib) ($ Id.VSub_Number '$1') (.) ($ Id.VSub_DollarName '$SHLIB_EXT') ) } ) ] ) ) (command.ForEach iter_name: lib iter_words: [{(arpack)} {(lapack)}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ ($ Id.VSub_DollarName '$private_libdir') (/lib) ($ Id.VSub_DollarName '$lib') (.) ($ Id.VSub_DollarName '$SHLIB_EXT') ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:423) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_PATH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:437) command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 441 ) command_list: (command.CommandList children: [ (C {(private_libname)} {($ Id.VSub_DollarName '$lib')} ) ] ) ) ) } {(libgfortran)} ) ] ) ) } spids: [436] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGCC_PATH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:453) command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 457 ) command_list: (command.CommandList children: [ (C {(private_libname)} {($ Id.VSub_DollarName '$lib')} ) ] ) ) ) } {(libgcc_s)} ) ] ) ) } spids: [452] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBQUADMATH_PATH) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:469) command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 473 ) command_list: (command.CommandList children: [ (C {(private_libname)} {($ Id.VSub_DollarName '$lib')} ) ] ) ) ) } {(libquadmath)} ) ] ) ) } spids: [468] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_DIRS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:497) command_list: (command.CommandList children: [ (C {(dirname)} {($ Id.VSub_DollarName '$LIBGFORTRAN_PATH')}) ] ) ) ) } spids: [493] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_DIRS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:509) command_list: (command.CommandList children: [ (C {(dirname)} {($ Id.VSub_DollarName '$LIBGCC_PATH')}) ] ) ) ) } spids: [505] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_DIRS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:521) command_list: (command.CommandList children: [ (C {(dirname)} {($ Id.VSub_DollarName '$LIBQUADMATH_PATH')}) ] ) ) ) } spids: [517] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_SONAMES) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_SONAMES') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:538) command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_PATH'))} ) ] ) ) ) } spids: [534] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGCC_SONAMES) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBGCC_SONAMES') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:552) command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ Id.VSub_DollarName '$LIBGCC_PATH'))}) ] ) ) ) } spids: [548] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBQUADMATH_SONAMES) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LIBQUADMATH_SONAMES') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:566) command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ Id.VSub_DollarName '$LIBQUADMATH_PATH'))} ) ] ) ) ) } spids: [562] ) ] ) ] spids: [408 425] ) ] ) ] ) ) (command.ShFunction name: uniquify body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(tr)} {(DQ (' '))} {(DQ (Id.Lit_Other '\\') (n))}) (C {(sort)}) (C {(uniq)}) (C {(grep)} {(-v)} {(SQ (Token id:Id.Lit_Chars val:'^$' span_id:625))}) (C {(tr)} {(DQ (Id.Lit_Other '\\') (n))} {(DQ (' '))}) ] negated: F ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIBGFORTRAN_DIRS) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:645) command_list: (command.CommandList children: [(C {(uniquify)} {(DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS'))})] ) ) } spids: [644] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SONAMES) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:655) command_list: (command.CommandList children: [ (C {(uniquify)} { (DQ ($ Id.VSub_DollarName '$LIBGFORTRAN_SONAMES') (' ') ($ Id.VSub_DollarName '$LIBGCC_SONAMES') (' ') ($ Id.VSub_DollarName '$LIBQUADMATH_SONAMES') ) } ) ] ) ) ) } spids: [653] ) ] ) (C {(debug)} {(DQ ('Discovered traces of libgfortran within ') ($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS'))} ) (C {(debug)} {(DQ ('Got SONAMES of ') ($ Id.VSub_DollarName '$SONAMES'))}) (command.ForEach iter_name: soname iter_words: [{($ Id.VSub_DollarName '$SONAMES')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: dir iter_words: [{($ Id.VSub_DollarName '$LIBGFORTRAN_DIRS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} { (DQ ($ Id.VSub_DollarName '$private_libdir') (/) ($ Id.VSub_DollarName '$soname') ) } {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ ($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$soname') ) } {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:739) ) ] action: [ (C {(cp)} {(-v)} { (DQ ($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$soname')) } {(DQ ($ Id.VSub_DollarName '$private_libdir'))} ) (C {(chmod)} {(755)} { (DQ ($ Id.VSub_DollarName '$private_libdir') (/) ($ Id.VSub_DollarName '$soname') ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$UNAME'))} {(Id.Lit_Equals '=')} {(DQ (Darwin))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:785) ) ] action: [ (C {(install_name_tool)} {(-id)} {(DQ ('@rpath/') ($ Id.VSub_DollarName '$soname'))} {(DQ ($ Id.VSub_DollarName '$private_libdir') (/) ($ Id.VSub_DollarName '$soname'))} ) ] spids: [770 787] ) ] ) ] spids: [710 741] ) ] ) ] ) ) ] ) ) (command.ShFunction name: change_linkage body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lib_path) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [840] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(DQ ($ Id.VSub_DollarName '$lib_path'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:864) ) ] action: [ (C {(debug)} {(DQ (' ') ($ Id.VSub_DollarName '$lib_path') (" doesn't exist, skipping"))} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:878) ) ] spids: [851 866] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:soname) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [889] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$UNAME'))} {(Id.Lit_Equals '=')} {(DQ (Darwin))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:911) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_link) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:917) command_list: (command.CommandList children: [ (C {(find_shlib)} {(DQ ($ Id.VSub_DollarName '$lib_path'))} {(DQ ($ Id.VSub_DollarName '$soname'))} ) ] ) ) } spids: [916] ) ] ) (C {(echo)} {(DQ (' ') ($ Id.VSub_DollarName '$old_link'))}) (C {(install_name_tool)} {(-change)} {(DQ ($ Id.VSub_DollarName '$old_link'))} {(DQ ('@rpath/') ($ Id.VSub_DollarName '$soname'))} {(DQ ($ Id.VSub_DollarName '$lib_path'))} ) ] spids: [896 913] ) ] else_action: [ (C {(patchelf)} {(--set-rpath)} { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:966) ) (ORIGIN) } {(DQ ($ Id.VSub_DollarName '$lib_path'))} ) ] ) ] ) ) (command.ForEach iter_name: lib iter_words: [ {(libopenblas)} {(libarpack)} {(libcholmod)} {(liblapack)} {($ Id.VSub_DollarName '$SONAMES')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: lib_path iter_words: [ {($ Id.VSub_DollarName '$private_libdir') (/) ($ Id.VSub_DollarName '$lib') (Id.Lit_Star '*') } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: soname iter_words: [{($ Id.VSub_DollarName '$SONAMES')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(debug)} { (DQ ('changing linkage of ') ($ Id.VSub_DollarName '$lib_path') (' to ') ($ Id.VSub_DollarName '$soname') ) } ) (C {(change_linkage)} {(DQ ($ Id.VSub_DollarName '$lib_path'))} {(DQ ($ Id.VSub_DollarName '$soname'))} ) ] ) ) ] ) ) ] ) ) ] )