Skip to content

Commit 20663f4

Browse files
Report top level dependencies properly for conda packages
Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent dce5b2a commit 20663f4

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

src/packagedcode/conda.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,15 @@ def assemble(cls, package_data, resource, codebase, package_adder=models.add_to_
7171
package.populate_license_fields()
7272
yield package
7373

74+
dependent_packages = package_data.dependencies
75+
if dependent_packages:
76+
yield from models.Dependency.from_dependent_packages(
77+
dependent_packages=dependent_packages,
78+
datafile_path=resource.path,
79+
datasource_id=package_data.datasource_id,
80+
package_uid=package.package_uid,
81+
)
82+
7483
CondaMetaYamlHandler.assign_package_to_resources(
7584
package=package,
7685
resource=resource,
@@ -104,6 +113,14 @@ def assemble(cls, package_data, resource, codebase, package_adder=models.add_to_
104113
codebase=codebase,
105114
package_adder=package_adder,
106115
)
116+
meta_yaml_package_data = models.PackageData.from_dict(conda_meta_yaml_package_data)
117+
if meta_yaml_package_data.dependencies:
118+
yield from models.Dependency.from_dependent_packages(
119+
dependent_packages=meta_yaml_package_data.dependencies,
120+
datafile_path=conda_meta_yaml.path,
121+
datasource_id=meta_yaml_package_data.datasource_id,
122+
package_uid=package.package_uid,
123+
)
107124
yield conda_meta_yaml
108125

109126
package.populate_license_fields()

tests/packagedcode/data/conda/assembly-conda-scan.json

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,51 @@
193193
}
194194
],
195195
"dependencies": [
196+
{
197+
"purl": "pkg:conda/zlib",
198+
"extracted_requirement": "1.2.13 h5eee18b_1",
199+
"scope": "host",
200+
"is_runtime": false,
201+
"is_optional": true,
202+
"is_pinned": false,
203+
"is_direct": true,
204+
"resolved_package": {},
205+
"extra_data": {},
206+
"dependency_uid": "pkg:conda/zlib?uuid=fixed-uid-done-for-testing-5642512d1758",
207+
"for_package_uid": "pkg:conda/requests@2.32.3?uuid=fixed-uid-done-for-testing-5642512d1758",
208+
"datafile_path": "assembly/opt/conda/pkgs/requests-2.32.3-py312h06a4308_1/info/recipe/meta.yaml",
209+
"datasource_id": "conda_meta_yaml"
210+
},
211+
{
212+
"purl": "pkg:conda/certifi",
213+
"extracted_requirement": ">=2017.4.17",
214+
"scope": "run",
215+
"is_runtime": true,
216+
"is_optional": false,
217+
"is_pinned": false,
218+
"is_direct": true,
219+
"resolved_package": {},
220+
"extra_data": {},
221+
"dependency_uid": "pkg:conda/certifi?uuid=fixed-uid-done-for-testing-5642512d1758",
222+
"for_package_uid": "pkg:conda/requests@2.32.3?uuid=fixed-uid-done-for-testing-5642512d1758",
223+
"datafile_path": "assembly/opt/conda/pkgs/requests-2.32.3-py312h06a4308_1/info/recipe/meta.yaml",
224+
"datasource_id": "conda_meta_yaml"
225+
},
226+
{
227+
"purl": "pkg:conda/chardet",
228+
"extracted_requirement": ">=3.0.2,<6",
229+
"scope": "run_constrained",
230+
"is_runtime": true,
231+
"is_optional": false,
232+
"is_pinned": false,
233+
"is_direct": true,
234+
"resolved_package": {},
235+
"extra_data": {},
236+
"dependency_uid": "pkg:conda/chardet?uuid=fixed-uid-done-for-testing-5642512d1758",
237+
"for_package_uid": "pkg:conda/requests@2.32.3?uuid=fixed-uid-done-for-testing-5642512d1758",
238+
"datafile_path": "assembly/opt/conda/pkgs/requests-2.32.3-py312h06a4308_1/info/recipe/meta.yaml",
239+
"datasource_id": "conda_meta_yaml"
240+
},
196241
{
197242
"purl": "pkg:pypi/charset-normalizer",
198243
"extracted_requirement": "<4,>=2",

tests/packagedcode/data/plugin/plugins_list_linux.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@ Package type: conan
195195
description: conan recipe
196196
path_patterns: '*/conanfile.py'
197197
--------------------------------------------
198+
Package type: conda
199+
datasource_id: conda_meta_json
200+
documentation URL: https://docs.conda.io/
201+
primary language: Python
202+
description: Conda metadata JSON in rootfs
203+
path_patterns: '*conda-meta/*.json'
204+
--------------------------------------------
198205
Package type: conda
199206
datasource_id: conda_meta_yaml
200207
documentation URL: https://docs.conda.io/

0 commit comments

Comments
 (0)