def cmd_clean(args): from contexo import ctx_cmod from contexo.ctx_depmgr import CTXDepMgr from contexo import ctx_base from contexo import ctx_envswitch # # Get Code Module Paths from view. # cview = ctx_view.CTXView( args.view, getAccessPolicy(args), validate=bool(args.repo_validation) ) exp_modules = expand_list_files(cview, args.modules) bc = getBuildConfiguration( cview, args ) depmgr = CTXDepMgr ( cview.getItemPaths('modules'), args.tolerate_missing_headers, bc.getArchPath(), args.legacy_compiling_mod ) deprecated_tolerate_missing_headers_warning(args) depmgr = CTXDepMgr ( codeModulePaths = cview.getItemPaths('modules'), failOnMissingHeaders = args.fail_on_missing_headers, archPath = bc.getArchPath(), legacyCompilingMod = args.legacy_compiling_mod ) depmgr.addCodeModules( exp_modules, args.tests ) session = ctx_base.CTXBuildSession( bc ) session.setDependencyManager( depmgr ) # # Determine which modules to clean. # if args.deps: module_names = depmgr.getCodeModulesWithDependencies () else: module_names = exp_modules modules = depmgr.createCodeModules( set(exp_modules) | (set(module_names) - set(exp_modules) ) ) print "cleaning modules:" for module in modules: print " " + module.getName() module.clean (bc.getTitle())
def cmd_export(args): from contexo import ctx_cmod from contexo import ctx_base from contexo import ctx_envswitch from contexo.ctx_depmgr import CTXDepMgr from contexo.ctx_export import CTXExportData envLayout = None oldEnv = None if args.env != None: envLayout = EnvironmentLayout( cfgFile, args.env ) oldEnv = switchEnvironment( envLayout, True ) # Prepare all cview = ctx_view.CTXView( args.view, getAccessPolicy(args), validate=bool(args.repo_validation) ) bc = getBuildConfiguration( cview, args ) deprecated_tolerate_missing_headers_warning(args) depmgr = CTXDepMgr ( cview.getItemPaths('modules'), args.fail_on_missing_headers, bc.getArchPath() ) session = ctx_base.CTXBuildSession( bc ) session.setDependencyManager( depmgr ) export_items = expand_list_files( cview, args.export_items ) # Make sure we have only one type of item to export component_export = True for item in export_items: if item.endswith( '.comp' ): if component_export == False: userErrorExit("An export operation can either export a list of components OR a list of modules, not both.") else: component_export = False components = list() main_modules = list() # Excluding dependency modules if component_export: # Construct and validate component objects components = create_components( export_items, cview.getItemPaths('comp') ) for comp in components: for library, compmodules in comp.libraries.items(): depmgr.addCodeModules( compmodules, args.tests ) main_modules.extend( compmodules ) else: main_modules = export_items # Divert modules into main modules and dependency modules export_modules = depmgr.getCodeModulesWithDependencies() if args.deps else main_modules export_modules.sort() dep_modules = set(export_modules) - set(main_modules) ctx_modules = depmgr.createCodeModules( main_modules, args.tests ) ctx_modules.extend ( depmgr.createCodeModules( dep_modules ) ) module_map = dict() for mod in ctx_modules: module_map[mod.getName()] = mod depmgr.updateDependencyHash() # Dispatch export data to handler (through pipe) package = CTXExportData() package.setExportData( module_map, components, args.tests, session, depmgr, cview, envLayout, args ) package.dispatch() # Restore environment if args.env != None: switchEnvironment( oldEnv, False )