(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (--verbose))} {(Lit_Other ']')} ) (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (-v))} {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)} {(1)}) (command.FuncDef name: debug body: (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {(DQ ($ VSub_Star '$*'))}) terminator: <Op_Semi ';'> ) ] ) ) ] ) ] else_action: [ (command.FuncDef name: debug body: (command.BraceGroup children: [(command.Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)] ) ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' <private_libdir>'))}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:UNAME) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(uname)} {(-s)})]) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UNAME'))} {(Lit_Other '=')} {(DQ (Linux))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SHLIB_EXT) op:Equal rhs:{(DQ (so))})] ) ] ) (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UNAME'))} {(Lit_Other '=')} {(DQ (Darwin))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SHLIB_EXT) op:Equal rhs:{(DQ (dylib))})] ) ] ) ] else_action: [ (command.SimpleCommand words: [ {(echo)} { (DQ ("WARNING: Could not autodetect platform type ('uname -s' == ") ($ VSub_DollarName '$UNAME') ('); assuming Linux') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:UNAME) op:Equal rhs:{(DQ (Linux))})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SHLIB_EXT) op:Equal rhs:{(DQ (so))})] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:private_libdir) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} { (DQ ($ VSub_DollarName '$private_libdir') (/libarpack.) ($ VSub_DollarName '$SHLIB_EXT') ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.SimpleCommand words: [ {(echo)} { (DQ ('ERROR: Could not open ') ($ VSub_DollarName '$private_libdir') (/libarpack.) ($ VSub_DollarName '$SHLIB_EXT') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(2)}) ] ) ] ) (command.FuncDef name: find_shlib body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lib_path) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_DollarName '$lib_path'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UNAME'))} {(Lit_Other '=')} {(DQ (Linux))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(ldd)} {(DQ ($ VSub_DollarName '$lib_path'))}) (C {(grep)} {($ VSub_Number '$2')}) (C {(cut)} {(-d) (SQ <' '>)} {(-f3)}) (C {(xargs)}) ] negated: F ) ] ) ] else_action: [ (command.Pipeline children: [ (C {(otool)} {(-L)} {(DQ ($ VSub_DollarName '$lib_path'))}) (C {(grep)} {($ VSub_Number '$2')}) (C {(cut)} {(-d) (SQ <' '>)} {(-f1)}) (C {(xargs)}) ] negated: F ) ] ) ] ) ] ) ] ) ) (command.FuncDef name: private_libname body: (command.BraceGroup children: [ (C {(echo)} { (DQ ($ VSub_DollarName '$private_libdir') (/lib) ($ VSub_Number '$1') (.) ($ 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 {(Lit_Other '[')} {(-f)} { (DQ ($ VSub_DollarName '$private_libdir') (/lib) ($ VSub_DollarName '$lib') (.) ($ VSub_DollarName '$SHLIB_EXT') ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_PATH) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(private_libname)} {($ VSub_DollarName '$lib')}) ] ) left_token: <Left_CommandSub '$('> ) ) } {(libgfortran)} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGCC_PATH) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(private_libname)} {($ VSub_DollarName '$lib')}) ] ) left_token: <Left_CommandSub '$('> ) ) } {(libgcc_s)} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBQUADMATH_PATH) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(find_shlib)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(private_libname)} {($ VSub_DollarName '$lib')}) ] ) left_token: <Left_CommandSub '$('> ) ) } {(libquadmath)} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_DIRS) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dirname)} {($ VSub_DollarName '$LIBGFORTRAN_PATH')}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_DIRS) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(dirname)} {($ VSub_DollarName '$LIBGCC_PATH')})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_DIRS) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBGFORTRAN_DIRS') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(dirname)} {($ VSub_DollarName '$LIBQUADMATH_PATH')}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_SONAMES) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBGFORTRAN_SONAMES') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ VSub_DollarName '$LIBGFORTRAN_PATH'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGCC_SONAMES) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBGCC_SONAMES') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ VSub_DollarName '$LIBGCC_PATH'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBQUADMATH_SONAMES) op: Equal rhs: { (DQ ($ VSub_DollarName '$LIBQUADMATH_SONAMES') (' ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(basename)} {(DQ ($ VSub_DollarName '$LIBQUADMATH_PATH'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] ) ] ) ) (command.FuncDef name: uniquify body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {(tr)} {(DQ (' '))} {(DQ (Lit_Other '\\') (n))}) (C {(sort)}) (C {(uniq)}) (C {(grep)} {(-v)} {(SQ <'^$'>)}) (C {(tr)} {(DQ (Lit_Other '\\') (n))} {(DQ (' '))}) ] negated: F ) ] ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:LIBGFORTRAN_DIRS) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(uniquify)} {(DQ ($ VSub_DollarName '$LIBGFORTRAN_DIRS'))})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:SONAMES) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(uniquify)} { (DQ ($ VSub_DollarName '$LIBGFORTRAN_SONAMES') (' ') ($ VSub_DollarName '$LIBGCC_SONAMES') (' ') ($ VSub_DollarName '$LIBQUADMATH_SONAMES') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(debug)} {(DQ ('Discovered traces of libgfortran within ') ($ VSub_DollarName '$LIBGFORTRAN_DIRS'))} ) (C {(debug)} {(DQ ('Got SONAMES of ') ($ VSub_DollarName '$SONAMES'))}) (command.ForEach iter_name: soname iter_words: [{($ VSub_DollarName '$SONAMES')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: dir iter_words: [{($ VSub_DollarName '$LIBGFORTRAN_DIRS')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} { (DQ ($ VSub_DollarName '$private_libdir') (/) ($ VSub_DollarName '$soname') ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} {(-f)} { (DQ ($ VSub_DollarName '$dir') (/) ($ VSub_DollarName '$soname') ) } {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(cp)} {(-v)} {(DQ ($ VSub_DollarName '$dir') (/) ($ VSub_DollarName '$soname'))} {(DQ ($ VSub_DollarName '$private_libdir'))} ) (C {(chmod)} {(755)} { (DQ ($ VSub_DollarName '$private_libdir') (/) ($ VSub_DollarName '$soname') ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UNAME'))} {(Lit_Other '=')} {(DQ (Darwin))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(install_name_tool)} {(-id)} {(DQ ('@rpath/') ($ VSub_DollarName '$soname'))} {(DQ ($ VSub_DollarName '$private_libdir') (/) ($ VSub_DollarName '$soname'))} ) ] ) ] ) ] ) ] ) ] ) ) ] ) ) (command.FuncDef name: change_linkage body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:lib_path) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_DollarName '$lib_path'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(debug)} {(DQ (' ') ($ VSub_DollarName '$lib_path') (" doesn't exist, skipping"))} ) (command.ControlFlow token:<ControlFlow_Return return>) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:soname) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$UNAME'))} {(Lit_Other '=')} {(DQ (Darwin))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:old_link) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(find_shlib)} {(DQ ($ VSub_DollarName '$lib_path'))} {(DQ ($ VSub_DollarName '$soname'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(echo)} {(DQ (' ') ($ VSub_DollarName '$old_link'))}) (C {(install_name_tool)} {(-change)} {(DQ ($ VSub_DollarName '$old_link'))} {(DQ ('@rpath/') ($ VSub_DollarName '$soname'))} {(DQ ($ VSub_DollarName '$lib_path'))} ) ] ) ] else_action: [ (C {(patchelf)} {(--set-rpath)} {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (ORIGIN)} {(DQ ($ VSub_DollarName '$lib_path'))} ) ] ) ] ) ) (command.ForEach iter_name: lib iter_words: [ {(libopenblas)} {(libarpack)} {(libcholmod)} {(liblapack)} {($ VSub_DollarName '$SONAMES')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: lib_path iter_words: [ {($ VSub_DollarName '$private_libdir') (/) ($ VSub_DollarName '$lib') (Lit_Other '*')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ForEach iter_name: soname iter_words: [{($ VSub_DollarName '$SONAMES')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(debug)} { (DQ ('changing linkage of ') ($ VSub_DollarName '$lib_path') (' to ') ($ VSub_DollarName '$soname') ) } ) (C {(change_linkage)} {(DQ ($ VSub_DollarName '$lib_path'))} {(DQ ($ VSub_DollarName '$soname'))} ) ] ) ) ] ) ) ] ) ) ] )