Skip to content

Commit bc44299

Browse files
committed
Conan tool_requires
1 parent 60a5750 commit bc44299

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

cppython/plugins/conan/builder.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,13 @@ def __init__(self) -> None:
121121
self._filename = 'conanfile.py'
122122

123123
@staticmethod
124-
def _create_conanfile(conan_file: Path, dependencies: list[ConanDependency], name: str, version: str) -> None:
124+
def _create_conanfile(
125+
conan_file: Path,
126+
dependencies: list[ConanDependency],
127+
dependency_groups: dict[str, list[ConanDependency]],
128+
name: str,
129+
version: str,
130+
) -> None:
125131
"""Creates a conanfile.py file with the necessary content."""
126132
template_string = """
127133
import os
@@ -134,6 +140,7 @@ class AutoPackage(ConanFile):
134140
version = "${version}"
135141
settings = "os", "compiler", "build_type", "arch"
136142
requires = ${dependencies}
143+
test_requires = ${test_requires}
137144
138145
def layout(self):
139146
cmake_layout(self)
@@ -168,10 +175,13 @@ def export_sources(self):
168175

169176
template = Template(dedent(template_string))
170177

178+
test_dependencies = dependency_groups.get('test', [])
179+
171180
values = {
172181
'name': name,
173182
'version': version,
174183
'dependencies': [dependency.requires() for dependency in dependencies],
184+
'test_requires': [dependency.requires() for dependency in test_dependencies],
175185
}
176186

177187
result = template.substitute(values)
@@ -183,6 +193,7 @@ def generate_conanfile(
183193
self,
184194
directory: DirectoryPath,
185195
dependencies: list[ConanDependency],
196+
dependency_groups: dict[str, list[ConanDependency]],
186197
name: str,
187198
version: str,
188199
) -> None:
@@ -199,4 +210,4 @@ def generate_conanfile(
199210
conan_file.write_text(modified.code, encoding='utf-8')
200211
else:
201212
directory.mkdir(parents=True, exist_ok=True)
202-
self._create_conanfile(conan_file, dependencies, name, version)
213+
self._create_conanfile(conan_file, dependencies, dependency_groups, name, version)

cppython/plugins/conan/plugin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,17 @@ def _prepare_installation(self) -> Path:
101101
"""
102102
# Resolve dependencies and generate conanfile.py
103103
resolved_dependencies = [resolve_conan_dependency(req) for req in self.core_data.cppython_data.dependencies]
104+
105+
# Resolve dependency groups
106+
resolved_dependency_groups = {
107+
group_name: [resolve_conan_dependency(req) for req in group_requirements]
108+
for group_name, group_requirements in self.core_data.cppython_data.dependency_groups.items()
109+
}
110+
104111
self.builder.generate_conanfile(
105112
self.core_data.project_data.project_root,
106113
resolved_dependencies,
114+
resolved_dependency_groups,
107115
self.core_data.pep621_data.name,
108116
self.core_data.pep621_data.version,
109117
)

0 commit comments

Comments
 (0)