with mgr.create_file('libexec/constants.sh') as f: print('BAKED_ISIS_VERSION="%s"' % isis_version(ISISROOT), file=f) print('Adding libraries') print('\tAdding forced-ship libraries') # Handle the shiplist separately for copy_lib in LIB_SHIP_PREFIX: found = None for soname in mgr.deplist.keys(): if soname.startswith(copy_lib): found = soname break if found: mgr.add_library(mgr.deplist[found]) mgr.remove_deps([found]) print('\tRemoving system libs') mgr.remove_deps(LIB_SYSTEM_LIST) print('\tFinding deps in search path') mgr.resolve_deps(nocopy = [P.join(ISISROOT, 'lib'), P.join(ISISROOT, '3rdParty', 'lib')], copy = [INSTALLDIR.lib()]) if mgr.deplist: raise Exception('Failed to find some libs in any of our dirs:\n\t%s' % '\n\t'.join(mgr.deplist.keys())) print('Adding files in dist-add and docs') #XXX Don't depend on cwd for dir in 'dist-add', INSTALLDIR.doc(): if P.exists(dir): mgr.add_directory(dir)
# Handle the shiplist separately. This will also add more dependencies print('\tAdding forced-ship libraries') sys.stdout.flush() found_set = set() found_and_to_be_removed = [] for copy_lib in LIB_SHIP_PREFIX: for soname in mgr.deplist.keys(): if soname.startswith(copy_lib): # Bugfix: Do an exhaustive search, as same prefix can # refer to multiple libraries, e.g., libgfortran.so.3 and # libgfortran.so.1, and sometimes the wrong one is picked. if mgr.deplist[soname] in found_set: continue found_set.add(mgr.deplist[soname]) mgr.add_library(mgr.deplist[soname]) found_and_to_be_removed.append(soname) mgr.remove_deps(found_and_to_be_removed) print('\tRemoving system libs') sys.stdout.flush() mgr.remove_deps(LIB_SYSTEM_LIST) # print('\tFinding deps in search path') # sys.stdout.flush() # mgr.resolve_deps(nocopy = [P.join(ISISROOT, 'lib'), P.join(ISISROOT, '3rdParty', 'lib')], # copy = [INSTALLDIR.lib()]) # if mgr.deplist: # raise Exception('Failed to find some libs in any of our dirs:\n\t%s' % '\n\t'.join(mgr.deplist.keys())) # We don't want to distribute with ASP any random files in # 'docs' installed by any of its deps. Distribute only # what we need.
# Handle the shiplist separately. This will also add more dependencies print('\tAdding forced-ship libraries') sys.stdout.flush() found_set = set() found_and_to_be_removed = [] for copy_lib in LIB_SHIP_PREFIX: for soname in mgr.deplist.keys(): if soname.startswith(copy_lib): # Bugfix: Do an exhaustive search, as same prefix can # refer to multiple libraries, e.g., libgfortran.so.3 and # libgfortran.so.1, and sometimes the wrong one is picked. if mgr.deplist[soname] in found_set: continue found_set.add(mgr.deplist[soname]) mgr.add_library(mgr.deplist[soname]) found_and_to_be_removed.append( soname ) mgr.remove_deps( found_and_to_be_removed ) print('\tRemoving system libs') sys.stdout.flush() mgr.remove_deps(LIB_SYSTEM_LIST) print('\tFinding deps in search path') sys.stdout.flush() mgr.resolve_deps(nocopy = [P.join(ISISROOT, 'lib'), P.join(ISISROOT, '3rdParty', 'lib')], copy = [INSTALLDIR.lib()]) if mgr.deplist: raise Exception('Failed to find some libs in any of our dirs:\n\t%s' % '\n\t'.join(mgr.deplist.keys())) print('Adding files in dist-add and docs') sys.stdout.flush() # To do: Don't depend on cwd