We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Deprecation message for `cppinfo.cppflags`
Introduce a new alias of `cppflags` named `cxxflags` and change the docs. If possible, show a deprecation message when cppflags is used.
The choice of `cppflags` meaning `c++flags` was not good, because `cppflags` means preprocessor flags and it is confusing.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `conans/model/build_info.py`
Content:
```
1 import os
2 from collections import OrderedDict
3 
4 
5 DEFAULT_INCLUDE = "include"
6 DEFAULT_LIB = "lib"
7 DEFAULT_BIN = "bin"
8 DEFAULT_RES = "res"
9 DEFAULT_SHARE = "share"
10 
11 
12 class _CppInfo(object):
13     """ Object that stores all the necessary information to build in C/C++.
14     It is intended to be system independent, translation to
15     specific systems will be produced from this info
16     """
17     def __init__(self):
18         self.includedirs = []  # Ordered list of include paths
19         self.srcdirs = []  # Ordered list of source paths
20         self.libdirs = []  # Directories to find libraries
21         self.resdirs = []  # Directories to find resources, data, etc
22         self.bindirs = []  # Directories to find executables and shared libs
23         self.builddirs = []
24         self.rootpaths = []
25         self.libs = []  # The libs to link against
26         self.defines = []  # preprocessor definitions
27         self.cflags = []  # pure C flags
28         self.cppflags = []  # C++ compilation flags
29         self.sharedlinkflags = []  # linker flags
30         self.exelinkflags = []  # linker flags
31         self.rootpath = ""
32         self.sysroot = ""
33         self._include_paths = None
34         self._lib_paths = None
35         self._bin_paths = None
36         self._build_paths = None
37         self._res_paths = None
38         self._src_paths = None
39         self.version = None  # Version of the conan package
40         self.description = None  # Description of the conan package
41         # When package is editable, filter_empty=False, so empty dirs are maintained
42         self.filter_empty = True
43 
44     def _filter_paths(self, paths):
45         abs_paths = [os.path.join(self.rootpath, p)
46                      if not os.path.isabs(p) else p for p in paths]
47         if self.filter_empty:
48             return [p for p in abs_paths if os.path.isdir(p)]
49         else:
50             return abs_paths
51 
52     @property
53     def include_paths(self):
54         if self._include_paths is None:
55             self._include_paths = self._filter_paths(self.includedirs)
56         return self._include_paths
57 
58     @property
59     def lib_paths(self):
60         if self._lib_paths is None:
61             self._lib_paths = self._filter_paths(self.libdirs)
62         return self._lib_paths
63 
64     @property
65     def src_paths(self):
66         if self._src_paths is None:
67             self._src_paths = self._filter_paths(self.srcdirs)
68         return self._src_paths
69 
70     @property
71     def bin_paths(self):
72         if self._bin_paths is None:
73             self._bin_paths = self._filter_paths(self.bindirs)
74         return self._bin_paths
75 
76     @property
77     def build_paths(self):
78         if self._build_paths is None:
79             self._build_paths = self._filter_paths(self.builddirs)
80         return self._build_paths
81 
82     @property
83     def res_paths(self):
84         if self._res_paths is None:
85             self._res_paths = self._filter_paths(self.resdirs)
86         return self._res_paths
87 
88 
89 class CppInfo(_CppInfo):
90     """ Build Information declared to be used by the CONSUMERS of a
91     conans. That means that consumers must use this flags and configs i order
92     to build properly.
93     Defined in user CONANFILE, directories are relative at user definition time
94     """
95     def __init__(self, root_folder):
96         super(CppInfo, self).__init__()
97         self.rootpath = root_folder  # the full path of the package in which the conans is found
98         self.includedirs.append(DEFAULT_INCLUDE)
99         self.libdirs.append(DEFAULT_LIB)
100         self.bindirs.append(DEFAULT_BIN)
101         self.resdirs.append(DEFAULT_RES)
102         self.builddirs.append("")
103         # public_deps is needed to accumulate list of deps for cmake targets
104         self.public_deps = []
105         self.configs = {}
106 
107     def __getattr__(self, config):
108 
109         def _get_cpp_info():
110             result = _CppInfo()
111             result.rootpath = self.rootpath
112             result.sysroot = self.sysroot
113             result.includedirs.append(DEFAULT_INCLUDE)
114             result.libdirs.append(DEFAULT_LIB)
115             result.bindirs.append(DEFAULT_BIN)
116             result.resdirs.append(DEFAULT_RES)
117             result.builddirs.append("")
118             return result
119 
120         return self.configs.setdefault(config, _get_cpp_info())
121 
122 
123 class _BaseDepsCppInfo(_CppInfo):
124     def __init__(self):
125         super(_BaseDepsCppInfo, self).__init__()
126 
127     def update(self, dep_cpp_info):
128 
129         def merge_lists(seq1, seq2):
130             return [s for s in seq1 if s not in seq2] + seq2
131 
132         self.includedirs = merge_lists(self.includedirs, dep_cpp_info.include_paths)
133         self.srcdirs = merge_lists(self.srcdirs, dep_cpp_info.src_paths)
134         self.libdirs = merge_lists(self.libdirs, dep_cpp_info.lib_paths)
135         self.bindirs = merge_lists(self.bindirs, dep_cpp_info.bin_paths)
136         self.resdirs = merge_lists(self.resdirs, dep_cpp_info.res_paths)
137         self.builddirs = merge_lists(self.builddirs, dep_cpp_info.build_paths)
138         self.libs = merge_lists(self.libs, dep_cpp_info.libs)
139         self.rootpaths.append(dep_cpp_info.rootpath)
140 
141         # Note these are in reverse order
142         self.defines = merge_lists(dep_cpp_info.defines, self.defines)
143         self.cppflags = merge_lists(dep_cpp_info.cppflags, self.cppflags)
144         self.cflags = merge_lists(dep_cpp_info.cflags, self.cflags)
145         self.sharedlinkflags = merge_lists(dep_cpp_info.sharedlinkflags, self.sharedlinkflags)
146         self.exelinkflags = merge_lists(dep_cpp_info.exelinkflags, self.exelinkflags)
147 
148         if not self.sysroot:
149             self.sysroot = dep_cpp_info.sysroot
150 
151     @property
152     def include_paths(self):
153         return self.includedirs
154 
155     @property
156     def lib_paths(self):
157         return self.libdirs
158 
159     @property
160     def src_paths(self):
161         return self.srcdirs
162 
163     @property
164     def bin_paths(self):
165         return self.bindirs
166 
167     @property
168     def build_paths(self):
169         return self.builddirs
170 
171     @property
172     def res_paths(self):
173         return self.resdirs
174 
175 
176 class DepsCppInfo(_BaseDepsCppInfo):
177     """ Build Information necessary to build a given conans. It contains the
178     flags, directories and options if its dependencies. The conans CONANFILE
179     should use these flags to pass them to the underlaying build system (Cmake, make),
180     so deps info is managed
181     """
182 
183     def __init__(self):
184         super(DepsCppInfo, self).__init__()
185         self._dependencies = OrderedDict()
186         self.configs = {}
187 
188     def __getattr__(self, config):
189         return self.configs.setdefault(config, _BaseDepsCppInfo())
190 
191     @property
192     def dependencies(self):
193         return self._dependencies.items()
194 
195     @property
196     def deps(self):
197         return self._dependencies.keys()
198 
199     def __getitem__(self, item):
200         return self._dependencies[item]
201 
202     def update(self, dep_cpp_info, pkg_name):
203         assert isinstance(dep_cpp_info, CppInfo)
204         self._dependencies[pkg_name] = dep_cpp_info
205         super(DepsCppInfo, self).update(dep_cpp_info)
206         for config, cpp_info in dep_cpp_info.configs.items():
207             self.configs.setdefault(config, _BaseDepsCppInfo()).update(cpp_info)
208 
209     def update_deps_cpp_info(self, dep_cpp_info):
210         assert isinstance(dep_cpp_info, DepsCppInfo)
211         for pkg_name, cpp_info in dep_cpp_info.dependencies:
212             self.update(cpp_info, pkg_name)
213
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/conans/model/build_info.py b/conans/model/build_info.py
--- a/conans/model/build_info.py
+++ b/conans/model/build_info.py
@@ -1,6 +1,7 @@
 import os
 from collections import OrderedDict
 
+import deprecation
 
 DEFAULT_INCLUDE = "include"
 DEFAULT_LIB = "lib"
@@ -25,7 +26,7 @@
         self.libs = []  # The libs to link against
         self.defines = []  # preprocessor definitions
         self.cflags = []  # pure C flags
-        self.cppflags = []  # C++ compilation flags
+        self.cxxflags = []  # C++ compilation flags
         self.sharedlinkflags = []  # linker flags
         self.exelinkflags = []  # linker flags
         self.rootpath = ""
@@ -85,6 +86,17 @@
             self._res_paths = self._filter_paths(self.resdirs)
         return self._res_paths
 
+    # Compatibility for 'cppflags' (old style property to allow decoration)
+    @deprecation.deprecated(deprecated_in="1.13", removed_in="2.0", details="Use 'cxxflags' instead")
+    def get_cppflags(self):
+        return self.cxxflags
+
+    @deprecation.deprecated(deprecated_in="1.13", removed_in="2.0", details="Use 'cxxflags' instead")
+    def set_cppflags(self, value):
+        self.cxxflags = value
+
+    cppflags = property(get_cppflags, set_cppflags)
+
 
 class CppInfo(_CppInfo):
     """ Build Information declared to be used by the CONSUMERS of a
@@ -140,7 +152,7 @@
 
         # Note these are in reverse order
         self.defines = merge_lists(dep_cpp_info.defines, self.defines)
-        self.cppflags = merge_lists(dep_cpp_info.cppflags, self.cppflags)
+        self.cxxflags = merge_lists(dep_cpp_info.cxxflags, self.cxxflags)
         self.cflags = merge_lists(dep_cpp_info.cflags, self.cflags)
         self.sharedlinkflags = merge_lists(dep_cpp_info.sharedlinkflags, self.sharedlinkflags)
         self.exelinkflags = merge_lists(dep_cpp_info.exelinkflags, self.exelinkflags)

{"golden_diff": "diff --git a/conans/model/build_info.py b/conans/model/build_info.py\n--- a/conans/model/build_info.py\n+++ b/conans/model/build_info.py\n@@ -1,6 +1,7 @@\n import os\n from collections import OrderedDict\n \n+import deprecation\n \n DEFAULT_INCLUDE = \"include\"\n DEFAULT_LIB = \"lib\"\n@@ -25,7 +26,7 @@\n         self.libs = []  # The libs to link against\n         self.defines = []  # preprocessor definitions\n         self.cflags = []  # pure C flags\n-        self.cppflags = []  # C++ compilation flags\n+        self.cxxflags = []  # C++ compilation flags\n         self.sharedlinkflags = []  # linker flags\n         self.exelinkflags = []  # linker flags\n         self.rootpath = \"\"\n@@ -85,6 +86,17 @@\n             self._res_paths = self._filter_paths(self.resdirs)\n         return self._res_paths\n \n+    # Compatibility for 'cppflags' (old style property to allow decoration)\n+    @deprecation.deprecated(deprecated_in=\"1.13\", removed_in=\"2.0\", details=\"Use 'cxxflags' instead\")\n+    def get_cppflags(self):\n+        return self.cxxflags\n+\n+    @deprecation.deprecated(deprecated_in=\"1.13\", removed_in=\"2.0\", details=\"Use 'cxxflags' instead\")\n+    def set_cppflags(self, value):\n+        self.cxxflags = value\n+\n+    cppflags = property(get_cppflags, set_cppflags)\n+\n \n class CppInfo(_CppInfo):\n     \"\"\" Build Information declared to be used by the CONSUMERS of a\n@@ -140,7 +152,7 @@\n \n         # Note these are in reverse order\n         self.defines = merge_lists(dep_cpp_info.defines, self.defines)\n-        self.cppflags = merge_lists(dep_cpp_info.cppflags, self.cppflags)\n+        self.cxxflags = merge_lists(dep_cpp_info.cxxflags, self.cxxflags)\n         self.cflags = merge_lists(dep_cpp_info.cflags, self.cflags)\n         self.sharedlinkflags = merge_lists(dep_cpp_info.sharedlinkflags, self.sharedlinkflags)\n         self.exelinkflags = merge_lists(dep_cpp_info.exelinkflags, self.exelinkflags)\n", "issue": "Deprecation message for `cppinfo.cppflags`\nIntroduce a new alias of `cppflags` named `cxxflags` and change the docs. If possible, show a deprecation message when cppflags is used.\r\nThe choice of `cppflags` meaning `c++flags` was not good, because `cppflags` means preprocessor flags and it is confusing.\n", "before_files": [{"content": "import os\nfrom collections import OrderedDict\n\n\nDEFAULT_INCLUDE = \"include\"\nDEFAULT_LIB = \"lib\"\nDEFAULT_BIN = \"bin\"\nDEFAULT_RES = \"res\"\nDEFAULT_SHARE = \"share\"\n\n\nclass _CppInfo(object):\n    \"\"\" Object that stores all the necessary information to build in C/C++.\n    It is intended to be system independent, translation to\n    specific systems will be produced from this info\n    \"\"\"\n    def __init__(self):\n        self.includedirs = []  # Ordered list of include paths\n        self.srcdirs = []  # Ordered list of source paths\n        self.libdirs = []  # Directories to find libraries\n        self.resdirs = []  # Directories to find resources, data, etc\n        self.bindirs = []  # Directories to find executables and shared libs\n        self.builddirs = []\n        self.rootpaths = []\n        self.libs = []  # The libs to link against\n        self.defines = []  # preprocessor definitions\n        self.cflags = []  # pure C flags\n        self.cppflags = []  # C++ compilation flags\n        self.sharedlinkflags = []  # linker flags\n        self.exelinkflags = []  # linker flags\n        self.rootpath = \"\"\n        self.sysroot = \"\"\n        self._include_paths = None\n        self._lib_paths = None\n        self._bin_paths = None\n        self._build_paths = None\n        self._res_paths = None\n        self._src_paths = None\n        self.version = None  # Version of the conan package\n        self.description = None  # Description of the conan package\n        # When package is editable, filter_empty=False, so empty dirs are maintained\n        self.filter_empty = True\n\n    def _filter_paths(self, paths):\n        abs_paths = [os.path.join(self.rootpath, p)\n                     if not os.path.isabs(p) else p for p in paths]\n        if self.filter_empty:\n            return [p for p in abs_paths if os.path.isdir(p)]\n        else:\n            return abs_paths\n\n    @property\n    def include_paths(self):\n        if self._include_paths is None:\n            self._include_paths = self._filter_paths(self.includedirs)\n        return self._include_paths\n\n    @property\n    def lib_paths(self):\n        if self._lib_paths is None:\n            self._lib_paths = self._filter_paths(self.libdirs)\n        return self._lib_paths\n\n    @property\n    def src_paths(self):\n        if self._src_paths is None:\n            self._src_paths = self._filter_paths(self.srcdirs)\n        return self._src_paths\n\n    @property\n    def bin_paths(self):\n        if self._bin_paths is None:\n            self._bin_paths = self._filter_paths(self.bindirs)\n        return self._bin_paths\n\n    @property\n    def build_paths(self):\n        if self._build_paths is None:\n            self._build_paths = self._filter_paths(self.builddirs)\n        return self._build_paths\n\n    @property\n    def res_paths(self):\n        if self._res_paths is None:\n            self._res_paths = self._filter_paths(self.resdirs)\n        return self._res_paths\n\n\nclass CppInfo(_CppInfo):\n    \"\"\" Build Information declared to be used by the CONSUMERS of a\n    conans. That means that consumers must use this flags and configs i order\n    to build properly.\n    Defined in user CONANFILE, directories are relative at user definition time\n    \"\"\"\n    def __init__(self, root_folder):\n        super(CppInfo, self).__init__()\n        self.rootpath = root_folder  # the full path of the package in which the conans is found\n        self.includedirs.append(DEFAULT_INCLUDE)\n        self.libdirs.append(DEFAULT_LIB)\n        self.bindirs.append(DEFAULT_BIN)\n        self.resdirs.append(DEFAULT_RES)\n        self.builddirs.append(\"\")\n        # public_deps is needed to accumulate list of deps for cmake targets\n        self.public_deps = []\n        self.configs = {}\n\n    def __getattr__(self, config):\n\n        def _get_cpp_info():\n            result = _CppInfo()\n            result.rootpath = self.rootpath\n            result.sysroot = self.sysroot\n            result.includedirs.append(DEFAULT_INCLUDE)\n            result.libdirs.append(DEFAULT_LIB)\n            result.bindirs.append(DEFAULT_BIN)\n            result.resdirs.append(DEFAULT_RES)\n            result.builddirs.append(\"\")\n            return result\n\n        return self.configs.setdefault(config, _get_cpp_info())\n\n\nclass _BaseDepsCppInfo(_CppInfo):\n    def __init__(self):\n        super(_BaseDepsCppInfo, self).__init__()\n\n    def update(self, dep_cpp_info):\n\n        def merge_lists(seq1, seq2):\n            return [s for s in seq1 if s not in seq2] + seq2\n\n        self.includedirs = merge_lists(self.includedirs, dep_cpp_info.include_paths)\n        self.srcdirs = merge_lists(self.srcdirs, dep_cpp_info.src_paths)\n        self.libdirs = merge_lists(self.libdirs, dep_cpp_info.lib_paths)\n        self.bindirs = merge_lists(self.bindirs, dep_cpp_info.bin_paths)\n        self.resdirs = merge_lists(self.resdirs, dep_cpp_info.res_paths)\n        self.builddirs = merge_lists(self.builddirs, dep_cpp_info.build_paths)\n        self.libs = merge_lists(self.libs, dep_cpp_info.libs)\n        self.rootpaths.append(dep_cpp_info.rootpath)\n\n        # Note these are in reverse order\n        self.defines = merge_lists(dep_cpp_info.defines, self.defines)\n        self.cppflags = merge_lists(dep_cpp_info.cppflags, self.cppflags)\n        self.cflags = merge_lists(dep_cpp_info.cflags, self.cflags)\n        self.sharedlinkflags = merge_lists(dep_cpp_info.sharedlinkflags, self.sharedlinkflags)\n        self.exelinkflags = merge_lists(dep_cpp_info.exelinkflags, self.exelinkflags)\n\n        if not self.sysroot:\n            self.sysroot = dep_cpp_info.sysroot\n\n    @property\n    def include_paths(self):\n        return self.includedirs\n\n    @property\n    def lib_paths(self):\n        return self.libdirs\n\n    @property\n    def src_paths(self):\n        return self.srcdirs\n\n    @property\n    def bin_paths(self):\n        return self.bindirs\n\n    @property\n    def build_paths(self):\n        return self.builddirs\n\n    @property\n    def res_paths(self):\n        return self.resdirs\n\n\nclass DepsCppInfo(_BaseDepsCppInfo):\n    \"\"\" Build Information necessary to build a given conans. It contains the\n    flags, directories and options if its dependencies. The conans CONANFILE\n    should use these flags to pass them to the underlaying build system (Cmake, make),\n    so deps info is managed\n    \"\"\"\n\n    def __init__(self):\n        super(DepsCppInfo, self).__init__()\n        self._dependencies = OrderedDict()\n        self.configs = {}\n\n    def __getattr__(self, config):\n        return self.configs.setdefault(config, _BaseDepsCppInfo())\n\n    @property\n    def dependencies(self):\n        return self._dependencies.items()\n\n    @property\n    def deps(self):\n        return self._dependencies.keys()\n\n    def __getitem__(self, item):\n        return self._dependencies[item]\n\n    def update(self, dep_cpp_info, pkg_name):\n        assert isinstance(dep_cpp_info, CppInfo)\n        self._dependencies[pkg_name] = dep_cpp_info\n        super(DepsCppInfo, self).update(dep_cpp_info)\n        for config, cpp_info in dep_cpp_info.configs.items():\n            self.configs.setdefault(config, _BaseDepsCppInfo()).update(cpp_info)\n\n    def update_deps_cpp_info(self, dep_cpp_info):\n        assert isinstance(dep_cpp_info, DepsCppInfo)\n        for pkg_name, cpp_info in dep_cpp_info.dependencies:\n            self.update(cpp_info, pkg_name)\n", "path": "conans/model/build_info.py"}], "after_files": [{"content": "import os\nfrom collections import OrderedDict\n\nimport deprecation\n\nDEFAULT_INCLUDE = \"include\"\nDEFAULT_LIB = \"lib\"\nDEFAULT_BIN = \"bin\"\nDEFAULT_RES = \"res\"\nDEFAULT_SHARE = \"share\"\n\n\nclass _CppInfo(object):\n    \"\"\" Object that stores all the necessary information to build in C/C++.\n    It is intended to be system independent, translation to\n    specific systems will be produced from this info\n    \"\"\"\n    def __init__(self):\n        self.includedirs = []  # Ordered list of include paths\n        self.srcdirs = []  # Ordered list of source paths\n        self.libdirs = []  # Directories to find libraries\n        self.resdirs = []  # Directories to find resources, data, etc\n        self.bindirs = []  # Directories to find executables and shared libs\n        self.builddirs = []\n        self.rootpaths = []\n        self.libs = []  # The libs to link against\n        self.defines = []  # preprocessor definitions\n        self.cflags = []  # pure C flags\n        self.cxxflags = []  # C++ compilation flags\n        self.sharedlinkflags = []  # linker flags\n        self.exelinkflags = []  # linker flags\n        self.rootpath = \"\"\n        self.sysroot = \"\"\n        self._include_paths = None\n        self._lib_paths = None\n        self._bin_paths = None\n        self._build_paths = None\n        self._res_paths = None\n        self._src_paths = None\n        self.version = None  # Version of the conan package\n        self.description = None  # Description of the conan package\n        # When package is editable, filter_empty=False, so empty dirs are maintained\n        self.filter_empty = True\n\n    def _filter_paths(self, paths):\n        abs_paths = [os.path.join(self.rootpath, p)\n                     if not os.path.isabs(p) else p for p in paths]\n        if self.filter_empty:\n            return [p for p in abs_paths if os.path.isdir(p)]\n        else:\n            return abs_paths\n\n    @property\n    def include_paths(self):\n        if self._include_paths is None:\n            self._include_paths = self._filter_paths(self.includedirs)\n        return self._include_paths\n\n    @property\n    def lib_paths(self):\n        if self._lib_paths is None:\n            self._lib_paths = self._filter_paths(self.libdirs)\n        return self._lib_paths\n\n    @property\n    def src_paths(self):\n        if self._src_paths is None:\n            self._src_paths = self._filter_paths(self.srcdirs)\n        return self._src_paths\n\n    @property\n    def bin_paths(self):\n        if self._bin_paths is None:\n            self._bin_paths = self._filter_paths(self.bindirs)\n        return self._bin_paths\n\n    @property\n    def build_paths(self):\n        if self._build_paths is None:\n            self._build_paths = self._filter_paths(self.builddirs)\n        return self._build_paths\n\n    @property\n    def res_paths(self):\n        if self._res_paths is None:\n            self._res_paths = self._filter_paths(self.resdirs)\n        return self._res_paths\n\n    # Compatibility for 'cppflags' (old style property to allow decoration)\n    @deprecation.deprecated(deprecated_in=\"1.13\", removed_in=\"2.0\", details=\"Use 'cxxflags' instead\")\n    def get_cppflags(self):\n        return self.cxxflags\n\n    @deprecation.deprecated(deprecated_in=\"1.13\", removed_in=\"2.0\", details=\"Use 'cxxflags' instead\")\n    def set_cppflags(self, value):\n        self.cxxflags = value\n\n    cppflags = property(get_cppflags, set_cppflags)\n\n\nclass CppInfo(_CppInfo):\n    \"\"\" Build Information declared to be used by the CONSUMERS of a\n    conans. That means that consumers must use this flags and configs i order\n    to build properly.\n    Defined in user CONANFILE, directories are relative at user definition time\n    \"\"\"\n    def __init__(self, root_folder):\n        super(CppInfo, self).__init__()\n        self.rootpath = root_folder  # the full path of the package in which the conans is found\n        self.includedirs.append(DEFAULT_INCLUDE)\n        self.libdirs.append(DEFAULT_LIB)\n        self.bindirs.append(DEFAULT_BIN)\n        self.resdirs.append(DEFAULT_RES)\n        self.builddirs.append(\"\")\n        # public_deps is needed to accumulate list of deps for cmake targets\n        self.public_deps = []\n        self.configs = {}\n\n    def __getattr__(self, config):\n\n        def _get_cpp_info():\n            result = _CppInfo()\n            result.rootpath = self.rootpath\n            result.sysroot = self.sysroot\n            result.includedirs.append(DEFAULT_INCLUDE)\n            result.libdirs.append(DEFAULT_LIB)\n            result.bindirs.append(DEFAULT_BIN)\n            result.resdirs.append(DEFAULT_RES)\n            result.builddirs.append(\"\")\n            return result\n\n        return self.configs.setdefault(config, _get_cpp_info())\n\n\nclass _BaseDepsCppInfo(_CppInfo):\n    def __init__(self):\n        super(_BaseDepsCppInfo, self).__init__()\n\n    def update(self, dep_cpp_info):\n\n        def merge_lists(seq1, seq2):\n            return [s for s in seq1 if s not in seq2] + seq2\n\n        self.includedirs = merge_lists(self.includedirs, dep_cpp_info.include_paths)\n        self.srcdirs = merge_lists(self.srcdirs, dep_cpp_info.src_paths)\n        self.libdirs = merge_lists(self.libdirs, dep_cpp_info.lib_paths)\n        self.bindirs = merge_lists(self.bindirs, dep_cpp_info.bin_paths)\n        self.resdirs = merge_lists(self.resdirs, dep_cpp_info.res_paths)\n        self.builddirs = merge_lists(self.builddirs, dep_cpp_info.build_paths)\n        self.libs = merge_lists(self.libs, dep_cpp_info.libs)\n        self.rootpaths.append(dep_cpp_info.rootpath)\n\n        # Note these are in reverse order\n        self.defines = merge_lists(dep_cpp_info.defines, self.defines)\n        self.cxxflags = merge_lists(dep_cpp_info.cxxflags, self.cxxflags)\n        self.cflags = merge_lists(dep_cpp_info.cflags, self.cflags)\n        self.sharedlinkflags = merge_lists(dep_cpp_info.sharedlinkflags, self.sharedlinkflags)\n        self.exelinkflags = merge_lists(dep_cpp_info.exelinkflags, self.exelinkflags)\n\n        if not self.sysroot:\n            self.sysroot = dep_cpp_info.sysroot\n\n    @property\n    def include_paths(self):\n        return self.includedirs\n\n    @property\n    def lib_paths(self):\n        return self.libdirs\n\n    @property\n    def src_paths(self):\n        return self.srcdirs\n\n    @property\n    def bin_paths(self):\n        return self.bindirs\n\n    @property\n    def build_paths(self):\n        return self.builddirs\n\n    @property\n    def res_paths(self):\n        return self.resdirs\n\n\nclass DepsCppInfo(_BaseDepsCppInfo):\n    \"\"\" Build Information necessary to build a given conans. It contains the\n    flags, directories and options if its dependencies. The conans CONANFILE\n    should use these flags to pass them to the underlaying build system (Cmake, make),\n    so deps info is managed\n    \"\"\"\n\n    def __init__(self):\n        super(DepsCppInfo, self).__init__()\n        self._dependencies = OrderedDict()\n        self.configs = {}\n\n    def __getattr__(self, config):\n        return self.configs.setdefault(config, _BaseDepsCppInfo())\n\n    @property\n    def dependencies(self):\n        return self._dependencies.items()\n\n    @property\n    def deps(self):\n        return self._dependencies.keys()\n\n    def __getitem__(self, item):\n        return self._dependencies[item]\n\n    def update(self, dep_cpp_info, pkg_name):\n        assert isinstance(dep_cpp_info, CppInfo)\n        self._dependencies[pkg_name] = dep_cpp_info\n        super(DepsCppInfo, self).update(dep_cpp_info)\n        for config, cpp_info in dep_cpp_info.configs.items():\n            self.configs.setdefault(config, _BaseDepsCppInfo()).update(cpp_info)\n\n    def update_deps_cpp_info(self, dep_cpp_info):\n        assert isinstance(dep_cpp_info, DepsCppInfo)\n        for pkg_name, cpp_info in dep_cpp_info.dependencies:\n            self.update(cpp_info, pkg_name)\n", "path": "conans/model/build_info.py"}]}