We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[package] fakeit/*: Package id ignores options
### Description

The `fakeit` option for integration is meant to select the correct header file for the matching integration, as there are different header files based on the integration chosen e.g. `gtest`, `boost`, `standalone`.

These options can be seen in the recipe.
Including the package step in the recipe which copies a different header based on the `integration` option

The link for the source shows the separate header files in it under the `single_header` folder: https://github.com/eranpeer/FakeIt/releases/tag/2.3.2

The problem is that there is only one package and it contains the header for the `standalone` `integration` option only.

At least part of the cause of the problem can be seen in the recipe file with the `package_id()`

The package id for fakeit is ignore the option `integration` which changes which header file is used for the package (and package id)
Currently the recipe specifies:
```
    def package_id(self):
        self.info.header_only()
```

But the header_only is designed to ignore options, which is incorrect in this case, as we have a different header filee to package based on the integrated test library e.g. gtest or boost (or standalone).

```
    def header_only(self):
        self.settings.clear()
        self.options.clear()
        self.requires.clear()
```


### Package and Environment Details

* Package Name/Version: **fakeit/\***
* Operating System+version: **All**
* Compiler+version: **All**
* Docker image: **All**
* Conan version: **All**
* Python version: **All**


### Conan profile

[settings]
os=Windows
os_build=Windows
arch=x86_64
arch_build=x86_64
compiler=Visual Studio
compiler.version=16
build_type=Debug
[options]
[conf]
[build_requires]
[env]

### Steps to reproduce

conan install .

### Logs

<details><summary>Click to expand log</summary>

```
Build requirements
    fakeit/2.3.2 from 'conan-center' - Cache
    gtest/1.11.0 from 'conan-center' - Cache
Build requirements packages
    fakeit/2.3.2:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache
    gtest/1.11.0:875c67f4d8a79bdd002908b75efce119eb82836d - Cache
```

</details>


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `recipes/fakeit/all/conanfile.py`
Content:
```
1 from conan import ConanFile
2 from conan.errors import ConanInvalidConfiguration
3 from conan.tools.build import check_min_cppstd
4 from conan.tools.files import apply_conandata_patches, export_conandata_patches, get, copy
5 from conan.tools.layout import basic_layout
6 import os
7 
8 
9 required_conan_version = ">=1.52.0"
10 
11 class FakeItConan(ConanFile):
12     name = "fakeit"
13     description = "C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking."
14     topics = ("mock", "fake", "spy")
15     license = "MIT"
16     homepage = "https://github.com/eranpeer/FakeIt"
17     url = "https://github.com/conan-io/conan-center-index"
18     package_type = "header-library"
19     settings = "os", "arch", "compiler", "build_type"
20     options = {
21         "integration": ["boost", "catch", "cute", "gtest", "mettle", "nunit", "mstest", "qtest", "standalone", "tpunit"]
22     }
23     default_options = {"integration": "standalone"}
24     no_copy_source = True
25 
26     @property
27     def _min_cppstd(self):
28         return 11
29 
30     def export_sources(self):
31         export_conandata_patches(self)
32 
33     def layout(self):
34         basic_layout(self, src_folder="src")
35 
36     def requirements(self):
37         if self.options.integration == "boost":
38             self.requires("boost/1.79.0")
39         elif self.options.integration == "catch":
40             self.requires("catch2/2.13.9")
41         elif self.options.integration == "gtest":
42             self.requires("gtest/1.11.0")
43         elif self.options.integration == "qtest":
44             self.requires("qt/6.3.0")
45         elif self.options.integration == "standalone":
46             pass
47         else:
48             raise ConanInvalidConfiguration("%s is not (yet) available on cci" % self.options.integration)
49 
50     def package_id(self):
51         self.info.clear()
52 
53     def validate(self):
54         if self.settings.compiler.get_safe("cppstd"):
55             check_min_cppstd(self, self._min_cppstd)
56 
57     def source(self):
58         get(self, **self.conan_data["sources"][self.version], strip_root=True)
59 
60     def build(self):
61         apply_conandata_patches(self)
62 
63     def package(self):
64         copy(self, pattern="LICENSE", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder)
65         copy(
66             self,
67             pattern="fakeit.hpp",
68             dst=os.path.join(self.package_folder, "include"),
69             src=os.path.join(self.source_folder, "single_header", str(self.options.integration)),
70         )
71
```
--- 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/recipes/fakeit/all/conanfile.py b/recipes/fakeit/all/conanfile.py
--- a/recipes/fakeit/all/conanfile.py
+++ b/recipes/fakeit/all/conanfile.py
@@ -48,7 +48,10 @@
             raise ConanInvalidConfiguration("%s is not (yet) available on cci" % self.options.integration)
 
     def package_id(self):
-        self.info.clear()
+        # The "integration" option must be kept because it will impact which header is packaged,
+        # therefor self.info.clear() cannot be used.
+        self.info.settings.clear()
+        self.info.requires.clear()
 
     def validate(self):
         if self.settings.compiler.get_safe("cppstd"):

{"golden_diff": "diff --git a/recipes/fakeit/all/conanfile.py b/recipes/fakeit/all/conanfile.py\n--- a/recipes/fakeit/all/conanfile.py\n+++ b/recipes/fakeit/all/conanfile.py\n@@ -48,7 +48,10 @@\n             raise ConanInvalidConfiguration(\"%s is not (yet) available on cci\" % self.options.integration)\n \n     def package_id(self):\n-        self.info.clear()\n+        # The \"integration\" option must be kept because it will impact which header is packaged,\n+        # therefor self.info.clear() cannot be used.\n+        self.info.settings.clear()\n+        self.info.requires.clear()\n \n     def validate(self):\n         if self.settings.compiler.get_safe(\"cppstd\"):\n", "issue": "[package] fakeit/*: Package id ignores options\n### Description\r\n\r\nThe `fakeit` option for integration is meant to select the correct header file for the matching integration, as there are different header files based on the integration chosen e.g. `gtest`, `boost`, `standalone`.\r\n\r\nThese options can be seen in the recipe.\r\nIncluding the package step in the recipe which copies a different header based on the `integration` option\r\n\r\nThe link for the source shows the separate header files in it under the `single_header` folder: https://github.com/eranpeer/FakeIt/releases/tag/2.3.2\r\n\r\nThe problem is that there is only one package and it contains the header for the `standalone` `integration` option only.\r\n\r\nAt least part of the cause of the problem can be seen in the recipe file with the `package_id()`\r\n\r\nThe package id for fakeit is ignore the option `integration` which changes which header file is used for the package (and package id)\r\nCurrently the recipe specifies:\r\n```\r\n    def package_id(self):\r\n        self.info.header_only()\r\n```\r\n\r\nBut the header_only is designed to ignore options, which is incorrect in this case, as we have a different header filee to package based on the integrated test library e.g. gtest or boost (or standalone).\r\n\r\n```\r\n    def header_only(self):\r\n        self.settings.clear()\r\n        self.options.clear()\r\n        self.requires.clear()\r\n```\r\n\r\n\r\n### Package and Environment Details\r\n\r\n* Package Name/Version: **fakeit/\\***\r\n* Operating System+version: **All**\r\n* Compiler+version: **All**\r\n* Docker image: **All**\r\n* Conan version: **All**\r\n* Python version: **All**\r\n\r\n\r\n### Conan profile\r\n\r\n[settings]\r\nos=Windows\r\nos_build=Windows\r\narch=x86_64\r\narch_build=x86_64\r\ncompiler=Visual Studio\r\ncompiler.version=16\r\nbuild_type=Debug\r\n[options]\r\n[conf]\r\n[build_requires]\r\n[env]\r\n\r\n### Steps to reproduce\r\n\r\nconan install .\r\n\r\n### Logs\r\n\r\n<details><summary>Click to expand log</summary>\r\n\r\n```\r\nBuild requirements\r\n    fakeit/2.3.2 from 'conan-center' - Cache\r\n    gtest/1.11.0 from 'conan-center' - Cache\r\nBuild requirements packages\r\n    fakeit/2.3.2:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache\r\n    gtest/1.11.0:875c67f4d8a79bdd002908b75efce119eb82836d - Cache\r\n```\r\n\r\n</details>\r\n\n", "before_files": [{"content": "from conan import ConanFile\nfrom conan.errors import ConanInvalidConfiguration\nfrom conan.tools.build import check_min_cppstd\nfrom conan.tools.files import apply_conandata_patches, export_conandata_patches, get, copy\nfrom conan.tools.layout import basic_layout\nimport os\n\n\nrequired_conan_version = \">=1.52.0\"\n\nclass FakeItConan(ConanFile):\n    name = \"fakeit\"\n    description = \"C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking.\"\n    topics = (\"mock\", \"fake\", \"spy\")\n    license = \"MIT\"\n    homepage = \"https://github.com/eranpeer/FakeIt\"\n    url = \"https://github.com/conan-io/conan-center-index\"\n    package_type = \"header-library\"\n    settings = \"os\", \"arch\", \"compiler\", \"build_type\"\n    options = {\n        \"integration\": [\"boost\", \"catch\", \"cute\", \"gtest\", \"mettle\", \"nunit\", \"mstest\", \"qtest\", \"standalone\", \"tpunit\"]\n    }\n    default_options = {\"integration\": \"standalone\"}\n    no_copy_source = True\n\n    @property\n    def _min_cppstd(self):\n        return 11\n\n    def export_sources(self):\n        export_conandata_patches(self)\n\n    def layout(self):\n        basic_layout(self, src_folder=\"src\")\n\n    def requirements(self):\n        if self.options.integration == \"boost\":\n            self.requires(\"boost/1.79.0\")\n        elif self.options.integration == \"catch\":\n            self.requires(\"catch2/2.13.9\")\n        elif self.options.integration == \"gtest\":\n            self.requires(\"gtest/1.11.0\")\n        elif self.options.integration == \"qtest\":\n            self.requires(\"qt/6.3.0\")\n        elif self.options.integration == \"standalone\":\n            pass\n        else:\n            raise ConanInvalidConfiguration(\"%s is not (yet) available on cci\" % self.options.integration)\n\n    def package_id(self):\n        self.info.clear()\n\n    def validate(self):\n        if self.settings.compiler.get_safe(\"cppstd\"):\n            check_min_cppstd(self, self._min_cppstd)\n\n    def source(self):\n        get(self, **self.conan_data[\"sources\"][self.version], strip_root=True)\n\n    def build(self):\n        apply_conandata_patches(self)\n\n    def package(self):\n        copy(self, pattern=\"LICENSE\", dst=os.path.join(self.package_folder, \"licenses\"), src=self.source_folder)\n        copy(\n            self,\n            pattern=\"fakeit.hpp\",\n            dst=os.path.join(self.package_folder, \"include\"),\n            src=os.path.join(self.source_folder, \"single_header\", str(self.options.integration)),\n        )\n", "path": "recipes/fakeit/all/conanfile.py"}], "after_files": [{"content": "from conan import ConanFile\nfrom conan.errors import ConanInvalidConfiguration\nfrom conan.tools.build import check_min_cppstd\nfrom conan.tools.files import apply_conandata_patches, export_conandata_patches, get, copy\nfrom conan.tools.layout import basic_layout\nimport os\n\n\nrequired_conan_version = \">=1.52.0\"\n\nclass FakeItConan(ConanFile):\n    name = \"fakeit\"\n    description = \"C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking.\"\n    topics = (\"mock\", \"fake\", \"spy\")\n    license = \"MIT\"\n    homepage = \"https://github.com/eranpeer/FakeIt\"\n    url = \"https://github.com/conan-io/conan-center-index\"\n    package_type = \"header-library\"\n    settings = \"os\", \"arch\", \"compiler\", \"build_type\"\n    options = {\n        \"integration\": [\"boost\", \"catch\", \"cute\", \"gtest\", \"mettle\", \"nunit\", \"mstest\", \"qtest\", \"standalone\", \"tpunit\"]\n    }\n    default_options = {\"integration\": \"standalone\"}\n    no_copy_source = True\n\n    @property\n    def _min_cppstd(self):\n        return 11\n\n    def export_sources(self):\n        export_conandata_patches(self)\n\n    def layout(self):\n        basic_layout(self, src_folder=\"src\")\n\n    def requirements(self):\n        if self.options.integration == \"boost\":\n            self.requires(\"boost/1.79.0\")\n        elif self.options.integration == \"catch\":\n            self.requires(\"catch2/2.13.9\")\n        elif self.options.integration == \"gtest\":\n            self.requires(\"gtest/1.11.0\")\n        elif self.options.integration == \"qtest\":\n            self.requires(\"qt/6.3.0\")\n        elif self.options.integration == \"standalone\":\n            pass\n        else:\n            raise ConanInvalidConfiguration(\"%s is not (yet) available on cci\" % self.options.integration)\n\n    def package_id(self):\n        # The \"integration\" option must be kept because it will impact which header is packaged,\n        # therefor self.info.clear() cannot be used.\n        self.info.settings.clear()\n        self.info.requires.clear()\n\n    def validate(self):\n        if self.settings.compiler.get_safe(\"cppstd\"):\n            check_min_cppstd(self, self._min_cppstd)\n\n    def source(self):\n        get(self, **self.conan_data[\"sources\"][self.version], strip_root=True)\n\n    def build(self):\n        apply_conandata_patches(self)\n\n    def package(self):\n        copy(self, pattern=\"LICENSE\", dst=os.path.join(self.package_folder, \"licenses\"), src=self.source_folder)\n        copy(\n            self,\n            pattern=\"fakeit.hpp\",\n            dst=os.path.join(self.package_folder, \"include\"),\n            src=os.path.join(self.source_folder, \"single_header\", str(self.options.integration)),\n        )\n", "path": "recipes/fakeit/all/conanfile.py"}]}