def __init__(self, global_context, command_argv, options_context, pkg, run_node): super(BuildContext, self).__init__(global_context, command_argv, options_context, pkg, run_node) self.builder_registry = BuilderRegistry() self.section_writer = SectionWriter() o, a = self.options_context.parser.parse_args(command_argv) if o.inplace: self.inplace = True else: self.inplace = False # Builders signature: # - first argument: name, str. Name of the entity to be built # - second argument: object. Value returned by # NodePackage.iter_category for this category # TODO: # Refactor builders so that they directoy register outputs # instead of returning stuff to be registered (to allow for "delayed" # registration) def data_section_builder(name, section): return name, section.nodes, section.ref_node, section.target_dir def package_builder(name, node_py_package): return name, node_py_package.nodes, self.top_or_sub_directory_node, "$sitedir" def module_builder(name, node): return name, [node], self.top_or_sub_directory_node, "$sitedir" def script_builder(name, executable): scripts_node = self.build_node.make_node("scripts-%s" % sys.version[:3]) scripts_node.mkdir() if sys.platform == "win32": nodes = create_win32_script(name, executable, scripts_node) else: nodes = create_posix_script(name, executable, scripts_node) return name, nodes, scripts_node, "$bindir" self.builder_registry.register_category("datafiles", data_section_builder) self.builder_registry.register_category("packages", package_builder) self.builder_registry.register_category("modules", module_builder) self.builder_registry.register_category("scripts", script_builder) if self.pkg.sub_directory is not None: sub_directory_node = self.top_node.find_node( self.pkg.sub_directory) else: sub_directory_node = None self._node_pkg = NodeRepresentation(run_node, self.top_node, sub_directory_node) self._node_pkg.update_package(pkg) categories = (("packages", "pythonfiles"), ("modules", "pythonfiles"), ("datafiles", "datafiles"), ("scripts", "executables"), ("extensions", "extensions"), ("compiled_libraries", "compiled_libraries")) self.outputs_registry = OutputRegistry(categories) self.isection_registry = ISectionRegistry() self.isection_registry.register_category("extensions", _generic_iregistrer) self.isection_registry.register_category("compiled_libraries", _generic_iregistrer) self.isection_registry.register_category("packages", _generic_iregistrer) self.isection_registry.register_category("modules", _generic_iregistrer) self.isection_registry.register_category("datafiles", _generic_iregistrer) self.isection_registry.register_category("scripts", _generic_iregistrer) self._current_default_section = 0 self._meta = {}