def _create_package_and_reference(self, bento_info, r_bento_info): pkg = PackageDescription.from_string(bento_info) node_pkg = NodeRepresentation(self.run_node, self.top_node) node_pkg.update_package(pkg) r_pkg = PackageDescription.from_string(r_bento_info) r_node_pkg = NodeRepresentation(self.run_node, self.top_node) r_node_pkg.update_package(r_pkg) return node_pkg, r_node_pkg
def test_iter_source_nodes(self): r_files = set([ op.join("src", "foo.c"), op.join("src", "bar.c"), op.join("src", "fubar.c"), op.join("foo", "__init__.py"), op.join("foo", "bar", "__init__.py"), "fu.py", "foo.1" ]) bento_info = """\ Name: foo DataFiles: foo TargetDir: $sharedir Files: foo.1 Library: Extension: _foo Sources: src/foo.c, src/bar.c CompiledLibrary: fubar Sources: src/fubar.c Packages: foo, foo.bar Modules: fu """ create_fake_package_from_bento_info(self.top_node, bento_info) package = PackageDescription.from_string(bento_info) node_package = NodeRepresentation(self.top_node, self.top_node) node_package.update_package(package) files = set( n.path_from(self.top_node) for n in node_package.iter_source_nodes()) self.assertEqual(files, r_files)
def __init__(self, global_context, cmd_args, option_context, pkg, run_node): super(SdistContext, self).__init__(global_context, cmd_args, option_context, pkg, run_node) self._meta = {} self._node_pkg = NodeRepresentation(run_node, self.top_node) self._node_pkg.update_package(pkg)
def test_sources_glob(self): bento_info = """\ Name: foo Library: Extension: _foo Sources: src/foo.c, src/bar.c """ create_fake_package_from_bento_info(self.top_node, bento_info) bento_info = """\ Name: foo Library: Extension: _foo Sources: src/*.c """ pkg = PackageDescription.from_string(bento_info) node_pkg = NodeRepresentation(self.top_node, self.top_node) node_pkg.update_package(pkg) extensions = dict(node_pkg.iter_category("extensions")) self.assertEqual(len(extensions), 1) self.assertEqual(len(extensions["_foo"].nodes), 2)
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 = {}