def initialize(self, settings, env): if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings) if 'cppstd' in self.settings.fields: conan_v2_behavior("Setting 'cppstd' is deprecated in favor of 'compiler.cppstd'," " please update your recipe.", v1_behavior=self.output.warn) # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self._conan_dep_cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names (only 'host' if different contexts) self.deps_user_info = DepsUserInfo() # user specified env variables self._conan_env_values = env.copy() # user specified -e if self.description is not None and not isinstance(self.description, six.string_types): raise ConanException("Recipe 'description' must be a string.")
def initialize(self, settings, env): if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings) if 'cppstd' in self.settings.fields: self.output.warn( "Setting 'cppstd' is deprecated in favor of 'compiler.cppstd'," " please update your recipe.") # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names, and the values a dict with the vars self.deps_user_info = DepsUserInfo() # user specified env variables self._conan_env_values = env.copy() # user specified -e
def _get_conanfile(settings, frameworks=False, system_libs=False): conan_file = ConanFileMock() conan_file.settings = settings conan_file.source_folder = "my_cache_source_folder" conan_file.build_folder = "my_cache_build_folder" conan_file.deps_env_info = DepsEnvInfo() conan_file.deps_user_info = DepsUserInfo() conan_file.deps_cpp_info = DepsCppInfo() cpp_info = CppInfo("/root") cpp_info.include_paths.append("path/to/include1") cpp_info.lib_paths.append("path/to/lib1") cpp_info.libs.append("mylib") cpp_info.bindirs = "path/to/bin1" cpp_info.cflags.append("c_flag1") cpp_info.cxxflags.append("cxx_flag1") cpp_info.defines.append("mydefine1") if system_libs: cpp_info.system_libs.append("system_lib1") if frameworks: cpp_info.frameworks = ["AVFoundation", "VideoToolbox"] cpp_info.framework_paths.extend(['path/to/Frameworks1', 'path/to/Frameworks2']) conan_file.deps_cpp_info.update(cpp_info, "zlib") conan_file.env_info = EnvInfo() return conan_file
def initialize(self, settings, env, buildenv=None): self._conan_buildenv = buildenv if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings) conan_v2_error("Setting 'cppstd' is deprecated in favor of 'compiler.cppstd'," " please update your recipe.", 'cppstd' in self.settings.fields) # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self._conan_dep_cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names (only 'host' if different contexts) self.deps_user_info = DepsUserInfo() # user specified env variables self._conan_env_values = env.copy() # user specified -e if self.description is not None and not isinstance(self.description, six.string_types): raise ConanException("Recipe 'description' must be a string.") if not hasattr(self, "virtualenv"): # Allow the user to override it with True or False self.virtualenv = True
def initialize(self, settings, env, local=None): if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings, local) try: if self.settings.os_build and self.settings.os: self.output.writeln("*"*60, front=Color.BRIGHT_RED) self.output.writeln(" This package defines both 'os' and 'os_build' ", front=Color.BRIGHT_RED) self.output.writeln(" Please use 'os' for libraries and 'os_build'", front=Color.BRIGHT_RED) self.output.writeln(" only for build-requires used for cross-building", front=Color.BRIGHT_RED) self.output.writeln("*"*60, front=Color.BRIGHT_RED) except ConanException: pass # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names, and the values a dict with the vars self.deps_user_info = DepsUserInfo() # user specified env variables self._conan_env_values = env.copy() # user specified -e
def __init__(self, shared=None, options=None, options_values=None): options = options or "" self.command = None self.path = None self.source_folder = self.build_folder = "." self.settings = None self.options = Options(PackageOptions.loads(options)) if options_values: for var, value in options_values.items(): self.options._data[var] = value self.deps_cpp_info = MockDepsCppInfo( ) # ("deps_cpp_info", "sysroot")("/path/to/sysroot") self.deps_cpp_info.sysroot = "/path/to/sysroot" self.output = TestBufferConanOutput() self.in_local_cache = False self.install_folder = "myinstallfolder" if shared is not None: self.options = namedtuple("options", "shared")(shared) self.should_configure = True self.should_build = True self.should_install = True self.should_test = True self.generators = [] self.captured_env = {} self.deps_env_info = DepsEnvInfo() self.env_info = EnvInfo() self.deps_user_info = DepsUserInfo() self._conan_env_values = EnvValues()
def _propagate_info(self, node, using_build_profile): # it is necessary to recompute # the node transitive information necessary to compute the package_id # as it will be used by reevaluate_node() when package_revision_mode is used and # PACKAGE_ID_UNKNOWN happens due to unknown revisions self._binaries_analyzer.package_id_transitive_reqs(node) # Get deps_cpp_info from upstream nodes node_order = [ n for n in node.public_closure if n.binary != BINARY_SKIP ] # List sort is stable, will keep the original order of the closure, but prioritize levels conan_file = node.conanfile # FIXME: Not the best place to assign the _conan_using_build_profile conan_file._conan_using_build_profile = using_build_profile transitive = [it for it in node.transitive_closure.values()] br_host = [] for it in node.dependencies: if it.require.build_require_context == CONTEXT_HOST: br_host.extend(it.dst.transitive_closure.values()) # Initialize some members if we are using different contexts if using_build_profile: conan_file.user_info_build = DepsUserInfo() for n in node_order: if n not in transitive: conan_file.output.info("Applying build-requirement: %s" % str(n.ref)) dep_cpp_info = n.conanfile._conan_dep_cpp_info if not using_build_profile: # Do not touch anything conan_file.deps_user_info[n.ref.name] = n.conanfile.user_info conan_file.deps_cpp_info.add(n.ref.name, dep_cpp_info) conan_file.deps_env_info.update(n.conanfile.env_info, n.ref.name) else: if n in transitive or n in br_host: conan_file.deps_user_info[ n.ref.name] = n.conanfile.user_info conan_file.deps_cpp_info.add(n.ref.name, dep_cpp_info) else: conan_file.user_info_build[ n.ref.name] = n.conanfile.user_info env_info = EnvInfo() env_info._values_ = n.conanfile.env_info._values_.copy() # Add cpp_info.bin_paths/lib_paths to env_info (it is needed for runtime) env_info.DYLD_LIBRARY_PATH.extend(dep_cpp_info.lib_paths) env_info.DYLD_FRAMEWORK_PATH.extend( dep_cpp_info.framework_paths) env_info.LD_LIBRARY_PATH.extend(dep_cpp_info.lib_paths) env_info.PATH.extend(dep_cpp_info.bin_paths) conan_file.deps_env_info.update(env_info, n.ref.name) # Update the info but filtering the package values that not apply to the subtree # of this current node and its dependencies. subtree_libnames = [node.ref.name for node in node_order] add_env_conaninfo(conan_file, subtree_libnames)
def __init__(self, output, runner, settings, user=None, channel=None, local=None): # User defined generators self.generators = self.generators if hasattr(self, "generators") else ["txt"] if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings, local) try: if self.settings.os_build and self.settings.os: output.writeln("*"*60, front=Color.BRIGHT_RED) output.writeln(" This package defines both 'os' and 'os_build' ", front=Color.BRIGHT_RED) output.writeln(" Please use 'os' for libraries and 'os_build'", front=Color.BRIGHT_RED) output.writeln(" only for build-requires used for cross-building", front=Color.BRIGHT_RED) output.writeln("*"*60, front=Color.BRIGHT_RED) except ConanException: pass self.exports = create_exports(self) self.exports_sources = create_exports_sources(self) # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names, and the values a dict with the vars self.deps_user_info = DepsUserInfo() self.copy = None # initialized at runtime self.copy_deps = None # initialized at runtime # an output stream (writeln, info, warn error) self.output = output # something that can run commands, as os.sytem self._runner = runner self.develop = False # user specified env variables self._env_values = EnvValues() # Updated at runtime, user specified -e self._user = user self._channel = channel self.in_local_cache = False self.description = None # Vars to control the build steps (build(), package()) self.should_configure = True self.should_build = True self.should_install = True
def configs_test(self): deps_cpp_info = DepsCppInfo() deps_cpp_info.includedirs.append("C:/whatever") deps_cpp_info.debug.includedirs.append("C:/whenever") deps_cpp_info.libs.extend(["math"]) deps_cpp_info.debug.libs.extend(["debug_Lib"]) child = DepsCppInfo() child.includedirs.append("F:/ChildrenPath") child.debug.includedirs.append("F:/ChildrenDebugPath") child.cppflags.append("cxxmyflag") child.debug.cppflags.append("cxxmydebugflag") deps_cpp_info._dependencies["Boost"] = child deps_env_info = DepsEnvInfo() env_info_lib1 = EnvInfo() env_info_lib1.var = "32" env_info_lib1.othervar.append("somevalue") deps_env_info.update(env_info_lib1, "LIB1") deps_user_info = DepsUserInfo() deps_user_info["LIB2"].myuservar = "23" fakeconan = namedtuple("Conanfile", "deps_cpp_info cpp_info deps_env_info env_info user_info deps_user_info") output = TXTGenerator(fakeconan(deps_cpp_info, None, deps_env_info, deps_user_info, {}, defaultdict(dict))).content deps_cpp_info2, _, deps_env_info2 = TXTGenerator.loads(output) self.assertEqual(deps_cpp_info.includedirs, deps_cpp_info2.includedirs) self.assertEqual(deps_cpp_info.libdirs, deps_cpp_info2.libdirs) self.assertEqual(deps_cpp_info.bindirs, deps_cpp_info2.bindirs) self.assertEqual(deps_cpp_info.libs, deps_cpp_info2.libs) self.assertEqual(len(deps_cpp_info._dependencies), len(deps_cpp_info2._dependencies)) self.assertEqual(deps_cpp_info["Boost"].includedirs, deps_cpp_info2["Boost"].includedirs) self.assertEqual(deps_cpp_info["Boost"].cppflags, deps_cpp_info2["Boost"].cppflags) self.assertEqual(deps_cpp_info["Boost"].cppflags, ["cxxmyflag"]) self.assertEqual(deps_cpp_info.debug.includedirs, deps_cpp_info2.debug.includedirs) self.assertEqual(deps_cpp_info.debug.includedirs, ["C:/whenever"]) self.assertEqual(deps_cpp_info.debug.libs, deps_cpp_info2.debug.libs) self.assertEqual(deps_cpp_info.debug.libs, ["debug_Lib"]) self.assertEqual(deps_cpp_info["Boost"].debug.includedirs, deps_cpp_info2["Boost"].debug.includedirs) self.assertEqual(deps_cpp_info["Boost"].debug.includedirs, ["F:/ChildrenDebugPath"]) self.assertEqual(deps_cpp_info["Boost"].debug.cppflags, deps_cpp_info2["Boost"].debug.cppflags) self.assertEqual(deps_cpp_info["Boost"].debug.cppflags, ["cxxmydebugflag"]) self.assertEqual(deps_env_info["LIB1"].var, "32") self.assertEqual(deps_env_info["LIB1"].othervar, ["somevalue"]) self.assertEqual(deps_user_info["LIB2"].myuservar, "23")
def configs_test(self): deps_cpp_info = DepsCppInfo() deps_cpp_info.filter_empty = False child = CppInfo("Boost", "F:/") child.filter_empty = False child.version = "<version>" child.includedirs.append("ChildrenPath") child.debug.includedirs.append("ChildrenDebugPath") child.cxxflags.append("cxxmyflag") child.debug.cxxflags.append("cxxmydebugflag") child.libs.extend(["math"]) child.debug.libs.extend(["debug_Lib"]) deps_cpp_info.add("Boost", DepCppInfo(child)) deps_env_info = DepsEnvInfo() env_info_lib1 = EnvInfo() env_info_lib1.var = "32" env_info_lib1.othervar.append("somevalue") deps_env_info.update(env_info_lib1, "LIB1") deps_user_info = DepsUserInfo() deps_user_info["LIB2"].myuservar = "23" fakeconan = namedtuple("Conanfile", "deps_cpp_info cpp_info deps_env_info env_info user_info deps_user_info") output = TXTGenerator(fakeconan(deps_cpp_info, None, deps_env_info, deps_user_info, {}, defaultdict(dict))).content deps_cpp_info2, _, deps_env_info2, _ = TXTGenerator.loads(output, filter_empty=False) self.assertEqual(deps_cpp_info.includedirs, deps_cpp_info2.includedirs) self.assertEqual(deps_cpp_info.libdirs, deps_cpp_info2.libdirs) self.assertEqual(deps_cpp_info.bindirs, deps_cpp_info2.bindirs) self.assertEqual(deps_cpp_info.libs, deps_cpp_info2.libs) self.assertEqual(len(deps_cpp_info._dependencies), len(deps_cpp_info2._dependencies)) self.assertEqual(deps_cpp_info["Boost"].includedirs, deps_cpp_info2["Boost"].includedirs) self.assertEqual(deps_cpp_info["Boost"].cxxflags, deps_cpp_info2["Boost"].cxxflags) self.assertEqual(deps_cpp_info["Boost"].cxxflags, ["cxxmyflag"]) self.assertEqual(deps_cpp_info.debug.includedirs, deps_cpp_info2.debug.includedirs) self.assertEqual(deps_cpp_info.debug.includedirs, ['F:/include', 'F:/ChildrenDebugPath']) self.assertEqual(deps_cpp_info.debug.libs, deps_cpp_info2.debug.libs) self.assertEqual(deps_cpp_info.debug.libs, ["debug_Lib"]) self.assertEqual(deps_cpp_info["Boost"].debug.includedirs, deps_cpp_info2["Boost"].debug.includedirs) self.assertEqual(deps_cpp_info["Boost"].debug.includedirs, ['include', 'ChildrenDebugPath']) self.assertEqual(deps_cpp_info["Boost"].debug.cxxflags, deps_cpp_info2["Boost"].debug.cxxflags) self.assertEqual(deps_cpp_info["Boost"].debug.cxxflags, ["cxxmydebugflag"]) self.assertEqual(deps_env_info["LIB1"].var, "32") self.assertEqual(deps_env_info["LIB1"].othervar, ["somevalue"]) self.assertEqual(deps_user_info["LIB2"].myuservar, "23")
def __init__(self, output, runner, settings, conanfile_directory, user=None, channel=None): # User defined generators self.generators = self.generators if hasattr( self, "generators") else ["txt"] if isinstance(self.generators, str): self.generators = [self.generators] # User defined options self.options = create_options(self) self.requires = create_requirements(self) self.settings = create_settings(self, settings) self.exports = create_exports(self) self.exports_sources = create_exports_sources(self) # needed variables to pack the project self.cpp_info = None # Will be initialized at processing time self.deps_cpp_info = DepsCppInfo() # environment variables declared in the package_info self.env_info = None # Will be initialized at processing time self.deps_env_info = DepsEnvInfo() # user declared variables self.user_info = None # Keys are the package names, and the values a dict with the vars self.deps_user_info = DepsUserInfo() self.copy = None # initialized at runtime # an output stream (writeln, info, warn error) self.output = output # something that can run commands, as os.sytem self._runner = runner self.conanfile_directory = conanfile_directory self._scope = None self.develop = False # user specified env variables self._env_values = EnvValues() # Updated at runtime, user specified -e self._user = user self._channel = channel # Are we in local cache? Suggest a better name self.in_local_cache = False # Init a description self.description = None
def _loads_deps_user_info(text): ret = DepsUserInfo() lib_name = None for line in text.splitlines(): if not line: continue if not lib_name and not line.startswith("[USER_"): raise ConanException("Error, invalid file format reading user info variables") elif line.startswith("[USER_"): lib_name = line[6:-1] else: var_name, value = line.split("=", 1) setattr(ret[lib_name], var_name, value) return ret
def _loads_user_info(text, user_info_prefix): _prefix_for_user_info_host = "[{}_".format(user_info_prefix) _prefix_for_user_info_host_length = len(_prefix_for_user_info_host) ret = DepsUserInfo() lib_name = None for line in text.splitlines(): if not line: continue if not lib_name and not line.startswith(_prefix_for_user_info_host): raise ConanException("Error, invalid file format reading user info variables") elif line.startswith(_prefix_for_user_info_host): lib_name = line[_prefix_for_user_info_host_length:-1] else: var_name, value = line.split("=", 1) setattr(ret[lib_name], var_name, value) return ret
def _get_conanfile(self, settings): conan_file = ConanFileMock() conan_file.settings = settings conan_file.source_folder = "my_cache_source_folder" conan_file.build_folder = "my_cache_build_folder" conan_file.deps_env_info = DepsEnvInfo() conan_file.deps_user_info = DepsUserInfo() conan_file.deps_cpp_info = DepsCppInfo() cpp_info = CppInfo("/root") cpp_info.include_paths.append("path/to/include1") cpp_info.lib_paths.append("path/to/lib1") cpp_info.libs.append("mylib") cpp_info.bindirs = "path/to/bin1" cpp_info.cflags.append("c_flag1") cpp_info.cppflags.append("cxx_flag1") cpp_info.defines.append("mydefine1") conan_file.deps_cpp_info.update(cpp_info, "zlib") conan_file.env_info = EnvInfo() return conan_file
def visual_studio_extensions_test(self): settings = Settings.loads(get_default_settings_yml()) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "15" settings.arch = "x86" settings.build_type = "Release" conan_file = ConanFileMock() conan_file.settings = settings conan_file.deps_env_info = DepsEnvInfo() conan_file.deps_user_info = DepsUserInfo() conan_file.deps_cpp_info = DepsCppInfo() cpp_info = CppInfo("/root") cpp_info.libs.append("mylib") cpp_info.libs.append("other.lib") conan_file.deps_cpp_info.update(cpp_info, "zlib") conan_file.env_info = EnvInfo() gen = CompilerArgsGenerator(conan_file) self.assertEqual('-O2 -Ob2 -DNDEBUG -link mylib.lib other.lib', gen.content)
def test_user_info_build(self): conanfile = ConanFile(Mock(), None) conanfile.initialize(Settings({}), EnvValues()) conanfile.user_info_build = DepsUserInfo() user_info = UserInfo() user_info.VAR1 = "value1" conanfile.user_info_build["build_pkg"] = user_info user_info = UserInfo() user_info.VAR1 = "other-value1" conanfile.user_info_build["other-build-pkg"] = user_info generator = TXTGenerator(conanfile) txt_out = generator.content self.assertIn( textwrap.dedent(""" [USERBUILD_build_pkg] VAR1=value1 [USERBUILD_other-build-pkg] VAR1=other-value1"""), txt_out)
def __init__(self, shared=None, options=None, options_values=None): options = options or "" self.command = None self.path = None self.settings = None self.options = Options(PackageOptions.loads(options)) if options_values: for var, value in options_values.items(): self.options._data[var] = value self.deps_cpp_info = MockDepsCppInfo( ) # ("deps_cpp_info", "sysroot")("/path/to/sysroot") self.deps_cpp_info.sysroot = "/path/to/sysroot" self.output = TestBufferConanOutput() self.in_local_cache = False if shared is not None: self.options = namedtuple("options", "shared")(shared) self.should_configure = True self.should_build = True self.should_install = True self.should_test = True self.generators = [] self.captured_env = {} self.deps_env_info = DepsEnvInfo() self.env_info = EnvInfo() self.deps_user_info = DepsUserInfo() self._conan_env_values = EnvValues() self.folders = Folders() self.folders.set_base_source(".") self.folders.set_base_export_sources(".") self.folders.set_base_build(".") self.folders.set_base_install("myinstallfolder") self.folders.set_base_generators(".") self._conan_user = None self._conan_channel = None self.env_scripts = {} self.win_bash = None self.conf = ConfDefinition().get_conanfile_conf(None) self.cpp = Infos()
def variables_setup_test(self): conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(Settings({}), EnvValues()) # Add some cpp_info for dependencies ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder1") cpp_info.defines = ["MYDEFINE1"] cpp_info.cflags.append("-Flag1=23") cpp_info.version = "1.3" cpp_info.description = "My cool description" conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder2") cpp_info.defines = ["MYDEFINE2"] cpp_info.version = "2.3" cpp_info.exelinkflags = ["-exelinkflag"] cpp_info.sharedlinkflags = ["-sharedlinkflag"] cpp_info.cxxflags = ["-cxxflag"] cpp_info.public_deps = ["MyPkg"] conanfile.deps_cpp_info.add(ref.name, cpp_info) # Add env_info env_info = EnvInfo() env_info.VAR1 = "env_info-value1" env_info.PATH.append("path-extended") conanfile.deps_env_info.update(env_info, "env_info_pkg") # Add user_info user_info = UserInfo() user_info.VAR1 = "user_info-value1" conanfile.deps_user_info["user_info_pkg"] = user_info # Add user_info_build conanfile.user_info_build = DepsUserInfo() user_info = UserInfo() user_info.VAR1 = "user_info_build-value1" conanfile.user_info_build["user_info_build_pkg"] = user_info generator = JsonGenerator(conanfile) json_out = generator.content parsed = json.loads(json_out) # Check dependencies dependencies = parsed["dependencies"] self.assertEqual(len(dependencies), 2) my_pkg = dependencies[0] self.assertEqual(my_pkg["name"], "MyPkg") self.assertEqual(my_pkg["description"], "My cool description") self.assertEqual(my_pkg["defines"], ["MYDEFINE1"]) # Check env_info env_info = parsed["deps_env_info"] self.assertListEqual(sorted(env_info.keys()), sorted(["VAR1", "PATH"])) self.assertEqual(env_info["VAR1"], "env_info-value1") self.assertListEqual(env_info["PATH"], ["path-extended"]) # Check user_info user_info = parsed["deps_user_info"] self.assertListEqual(list(user_info.keys()), ["user_info_pkg"]) self.assertListEqual(list(user_info["user_info_pkg"].keys()), ["VAR1"]) self.assertEqual(user_info["user_info_pkg"]["VAR1"], "user_info-value1") # Check user_info_build user_info_build = parsed["user_info_build"] self.assertListEqual(list(user_info_build.keys()), ["user_info_build_pkg"]) self.assertListEqual( list(user_info_build["user_info_build_pkg"].keys()), ["VAR1"]) self.assertEqual(user_info_build["user_info_build_pkg"]["VAR1"], "user_info_build-value1")
def test_idempotent(self): conanfile = ConanFile(Mock(), None) conanfile.initialize(Settings({}), EnvValues()) # Add some cpp_info ref = ConanFileReference.loads("MyPkg/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder1") cpp_info.names["txt"] = "mypkg1-txt" cpp_info.version = ref.version cpp_info.defines = ["MYDEFINE1"] cpp_info.cxxflags = ["-cxxflag_parent"] cpp_info.includedirs = ["mypkg1/include"] cpp_info.filter_empty = False conanfile.deps_cpp_info.add(ref.name, cpp_info) ref = ConanFileReference.loads("MyPkg2/0.1@lasote/stables") cpp_info = CppInfo(ref.name, "dummy_root_folder2") cpp_info.defines = ["MYDEFINE2"] cpp_info.cxxflags = ["-cxxflag_dep"] cpp_info.filter_empty = False conanfile.deps_cpp_info.add(ref.name, cpp_info) # Add env_info env_info = EnvInfo() env_info.VAR1 = "value1" env_info.PATH.append("path-extended") conanfile.deps_env_info.update(env_info, "my_pkg") env_info = EnvInfo() env_info.VAR1 = "other-value1" env_info.PATH.append("other-path-extended") conanfile.deps_env_info.update(env_info, "other-pkg") # Add user_info for HOST user_info = UserInfo() user_info.VAR1 = "value1" conanfile.deps_user_info["my_pkg"] = user_info user_info = UserInfo() user_info.VAR1 = "other-value1" conanfile.deps_user_info["other-pkg"] = user_info # Add user_info for BUILD conanfile.user_info_build = DepsUserInfo() user_info = UserInfo() user_info.VAR1 = "value1" conanfile.user_info_build["build_pkg"] = user_info user_info = UserInfo() user_info.VAR1 = "other-value1" conanfile.user_info_build["other-build-pkg"] = user_info master_content = TXTGenerator(conanfile).content after_cpp_info, after_user_info, after_env_info, after_user_info_build = \ TXTGenerator.loads(master_content, filter_empty=False) # Assign them to a different conanfile other_conanfile = ConanFile(Mock(), None) other_conanfile.initialize(Settings({}), EnvValues()) other_conanfile.deps_cpp_info = after_cpp_info other_conanfile.deps_env_info = after_env_info other_conanfile.deps_user_info = after_user_info other_conanfile.user_info_build = after_user_info_build after_content = TXTGenerator(other_conanfile).content self.assertListEqual(master_content.splitlines(), after_content.splitlines())