Skip to content

Commit d2c7050

Browse files
committed
add dependencies resolution data
Signed-off-by: NucleonGodX <[email protected]>
1 parent 6a38f0e commit d2c7050

File tree

5 files changed

+146
-20
lines changed

5 files changed

+146
-20
lines changed

src/packagedcode/buildpack.py

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,47 @@ def handle_paketo_buildpack(data, buildpack, package_data):
106106
dep_name = dep.get("name")
107107
dep_version = dep.get("version")
108108
dep_cpes = dep.get("cpes", [])
109-
extra_data = {"cpes": dep_cpes} if dep_cpes else {}
110-
109+
110+
resolved_package = {}
111+
112+
for field in ["id", "name", "sha256", "stacks", "uri", "licenses", "homepage"]:
113+
if field in dep:
114+
resolved_package[field] = dep[field]
115+
116+
if dep_cpes:
117+
resolved_package["cpes"] = dep_cpes
118+
119+
if "arch" in dep:
120+
resolved_package["arch"] = dep["arch"]
121+
122+
if "license" in dep:
123+
resolved_package["license"] = dep["license"]
124+
125+
if "uri" in dep:
126+
resolved_package["download_url"] = dep["uri"]
127+
128+
for checksum_type in ["sha256", "sha512", "md5"]:
129+
if checksum_type in dep:
130+
resolved_package[checksum_type] = dep[checksum_type]
131+
132+
extra_data = {}
133+
for key, value in dep.items():
134+
if key not in ["purl", "name", "version", "cpes", "id", "sha256",
135+
"stacks", "uri", "licenses", "license", "homepage",
136+
"arch", "sha512", "md5"]:
137+
extra_data[key] = value
138+
111139
if not dep_purl and dep_name and dep_version:
112-
dep_purl = PackageURL(type="generic", name=dep_name, version=dep_version).to_string()
140+
qualifiers = {}
141+
if "arch" in dep:
142+
qualifiers["arch"] = dep["arch"]
143+
144+
dep_purl = PackageURL(
145+
type="generic",
146+
name=dep_name,
147+
version=dep_version,
148+
qualifiers=qualifiers if qualifiers else None
149+
).to_string()
113150

114151
if dep_purl:
115152
dependencies.append(
@@ -118,7 +155,10 @@ def handle_paketo_buildpack(data, buildpack, package_data):
118155
scope="runtime",
119156
is_runtime=True,
120157
is_optional=False,
121-
extra_data=extra_data,
158+
is_pinned=True if "sha256" in dep else False,
159+
is_direct=True,
160+
resolved_package=resolved_package,
161+
extra_data=extra_data if extra_data else None,
122162
)
123163
)
124164

@@ -128,12 +168,24 @@ def handle_paketo_buildpack(data, buildpack, package_data):
128168
group_id = group.get("id")
129169
group_version = group.get("version")
130170
if group_id and group_version:
171+
resolved_package = {
172+
"id": group_id,
173+
"version": group_version
174+
}
175+
176+
for key, value in group.items():
177+
if key not in ["id", "version", "optional"]:
178+
resolved_package[key] = value
179+
131180
dependencies.append(
132181
models.DependentPackage(
133182
purl=PackageURL(type="buildpack", name=group_id, version=group_version).to_string(),
134183
scope="runtime",
135184
is_runtime=True,
136185
is_optional=group.get("optional", False),
186+
is_pinned=False,
187+
is_direct=True,
188+
resolved_package=resolved_package,
137189
)
138190
)
139191

tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,32 @@
9595
"scope": "runtime",
9696
"is_runtime": true,
9797
"is_optional": false,
98-
"is_pinned": false,
98+
"is_pinned": true,
9999
"is_direct": true,
100-
"resolved_package": {},
101-
"extra_data": {
100+
"resolved_package": {
101+
"id": "java-memory-assistant",
102+
"name": "Java Memory Assistant Agent",
103+
"sha256": "9c5ffb4bdeec5ed6b4f1d734469500754a857d1452c3d253d89e2315addb04c5",
104+
"stacks": [
105+
"io.buildpacks.stacks.bionic",
106+
"io.paketo.stacks.tiny",
107+
"*"
108+
],
109+
"uri": "https://github.com/SAP-archive/java-memory-assistant/releases/download/0.5.0/java-memory-assistant-0.5.0.jar",
110+
"licenses": [
111+
{
112+
"type": "Apache-2.0",
113+
"uri": "https://github.com/SAP/java-memory-assistant/blob/master/LICENSE"
114+
}
115+
],
102116
"cpes": [
103117
"cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*"
104-
]
118+
],
119+
"download_url": "https://github.com/SAP-archive/java-memory-assistant/releases/download/0.5.0/java-memory-assistant-0.5.0.jar"
120+
},
121+
"extra_data": {
122+
"source": "https://github.com/sap/java-memory-assistant/archive/refs/tags/0.5.0.tar.gz",
123+
"source-sha256": "dedf82a5c10df5b12e602c1237f00a459a38b6a55c0ff8d671fa0d3909dfe4fc"
105124
}
106125
}
107126
],

tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,30 @@
9898
"scope": "runtime",
9999
"is_runtime": true,
100100
"is_optional": false,
101-
"is_pinned": false,
101+
"is_pinned": true,
102102
"is_direct": true,
103-
"resolved_package": {},
104-
"extra_data": {
103+
"resolved_package": {
104+
"id": "opentelemetry-java",
105+
"name": "OpenTelemetry Java Agent",
106+
"sha256": "d05f6e36fac8db629263a6aaec2841cc934d064d7b19bfe38425b604b8b54926",
107+
"stacks": [
108+
"*"
109+
],
110+
"uri": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.10.0/opentelemetry-javaagent.jar",
111+
"licenses": [
112+
{
113+
"type": "Apache-2.0",
114+
"uri": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/LICENSE"
115+
}
116+
],
105117
"cpes": [
106118
"cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*"
107-
]
119+
],
120+
"download_url": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.10.0/opentelemetry-javaagent.jar"
121+
},
122+
"extra_data": {
123+
"source": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/archive/refs/tags/v2.10.0.tar.gz",
124+
"source-sha256": "3a921baa391e9fa3f3622bedf1770567bcfed2a13de07642a2273b8beeca934a"
108125
}
109126
}
110127
],

tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,32 @@
100100
"scope": "runtime",
101101
"is_runtime": true,
102102
"is_optional": false,
103-
"is_pinned": false,
103+
"is_pinned": true,
104104
"is_direct": true,
105-
"resolved_package": {},
106-
"extra_data": {
105+
"resolved_package": {
106+
"id": "maven",
107+
"name": "Apache Maven",
108+
"sha256": "7a9cdf674fc1703d6382f5f330b3d110ea1b512b51f1652846d9e4e8a588d766",
109+
"stacks": [
110+
"io.buildpacks.stacks.bionic",
111+
"io.paketo.stacks.tiny",
112+
"*"
113+
],
114+
"uri": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz",
115+
"licenses": [
116+
{
117+
"type": "Apache-2.0",
118+
"uri": "https://www.apache.org/licenses/"
119+
}
120+
],
107121
"cpes": [
108122
"cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*"
109-
]
123+
],
124+
"download_url": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz"
125+
},
126+
"extra_data": {
127+
"source": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-src.tar.gz",
128+
"source-sha256": "8a24c448d4ac397e6b0c019a4d7250068c02d1cdb553299e6bb71c3ccca78b2c"
110129
}
111130
}
112131
],

tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,32 @@
9393
"scope": "runtime",
9494
"is_runtime": true,
9595
"is_optional": false,
96-
"is_pinned": false,
96+
"is_pinned": true,
9797
"is_direct": true,
98-
"resolved_package": {},
99-
"extra_data": {
98+
"resolved_package": {
99+
"id": "maven",
100+
"name": "Apache Maven",
101+
"sha256": "7a9cdf674fc1703d6382f5f330b3d110ea1b512b51f1652846d9e4e8a588d766",
102+
"stacks": [
103+
"io.buildpacks.stacks.bionic",
104+
"io.paketo.stacks.tiny",
105+
"*"
106+
],
107+
"uri": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz",
108+
"licenses": [
109+
{
110+
"type": "Apache-2.0",
111+
"uri": "https://www.apache.org/licenses/"
112+
}
113+
],
100114
"cpes": [
101115
"cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*"
102-
]
116+
],
117+
"download_url": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz"
118+
},
119+
"extra_data": {
120+
"source": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-src.tar.gz",
121+
"source-sha256": "8a24c448d4ac397e6b0c019a4d7250068c02d1cdb553299e6bb71c3ccca78b2c"
103122
}
104123
}
105124
],

0 commit comments

Comments
 (0)