def extend(cpp_info, config): """ adds the specific config configuration to the common one """ config_info = cpp_info.configs.get(config) if config_info: def add_lists(seq1, seq2): return seq1 + [s for s in seq2 if s not in seq1] result = CppInfo(str(config_info), config_info.rootpath) result.filter_empty = cpp_info.filter_empty result.includedirs = add_lists(cpp_info.includedirs, config_info.includedirs) result.libdirs = add_lists(cpp_info.libdirs, config_info.libdirs) result.bindirs = add_lists(cpp_info.bindirs, config_info.bindirs) result.resdirs = add_lists(cpp_info.resdirs, config_info.resdirs) result.builddirs = add_lists(cpp_info.builddirs, config_info.builddirs) result.libs = cpp_info.libs + config_info.libs result.defines = cpp_info.defines + config_info.defines result.cflags = cpp_info.cflags + config_info.cflags result.cxxflags = cpp_info.cxxflags + config_info.cxxflags result.sharedlinkflags = cpp_info.sharedlinkflags + config_info.sharedlinkflags result.exelinkflags = cpp_info.exelinkflags + config_info.exelinkflags result.system_libs = add_lists(cpp_info.system_libs, config_info.system_libs) result.build_modules = merge_dicts(cpp_info.build_modules, config_info.build_modules) return result return cpp_info
def setUp(self): settings_mock = _MockSettings(build_type="Release") self.conanfile = ConanFile(TestBufferConanOutput(), None) self.conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder1") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules = ["my-module.cmake"] self.conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables") cpp_info = CppInfo("dummy_root_folder2") cpp_info.filter_empty = False # For testing purposes only cpp_info.name = ref.name cpp_info.build_modules = ["other-mod.cmake", "not-a-cmake-module.pc"] cpp_info.release.build_modules = ["release-mod.cmake"] self.conanfile.deps_cpp_info.update(cpp_info, ref.name)
def test_cpp_info_build_modules_old_behavior(self): folder = temp_folder() info = CppInfo("myname", folder) info.build_modules = [ "old.cmake" ] # Test old behavior with .cmake build modules as list deps_cpp_info = DepsCppInfo() deps_cpp_info.add("myname", DepCppInfo(info)) for gen in [ "cmake", "cmake_multi", "cmake_find_package", "cmake_find_package_multi" ]: assert list(deps_cpp_info["myname"].build_modules_paths[gen]) ==\ [os.path.join(folder, "old.cmake")]
def test_from_old_cppinfo_no_components(): oldcppinfo = CppInfo("ref", "/root/") oldcppinfo.requires = ["my_req::my_component"] for n in _DIRS_VAR_NAMES + _FIELD_VAR_NAMES: setattr(oldcppinfo, n, ["var_{}_1".format(n), "var_{}_2".format(n)]) oldcppinfo.build_modules = { "cmake_find_package": ["my_scripts.cmake", "foo.cmake"], "cmake_find_package_multi": ["my_scripts.cmake", "foo2.cmake"] } cppinfo = from_old_cppinfo(oldcppinfo) assert isinstance(cppinfo, NewCppInfo) for n in _DIRS_VAR_NAMES + _FIELD_VAR_NAMES: assert getattr(cppinfo, n) == ["var_{}_1".format(n), "var_{}_2".format(n)] assert cppinfo.get_property("cmake_build_modules") is None assert cppinfo.requires == ["my_req::my_component"]