Skip to content

Commit 717620e

Browse files
committed
Ensure backward compatibility for plugins
This commit ensures backward compatibility for plugins Signed-off-by: Rohan Devasthale <rdevasth@redhat.com>
1 parent 7d8965c commit 717620e

1 file changed

Lines changed: 39 additions & 9 deletions

File tree

src/fromager/sources.py

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,22 +135,52 @@ def resolve_source_all(
135135
"""Return list of (URL, version) for all matching source versions.
136136
137137
Returns list sorted by version (highest first).
138+
139+
Supports both old and new plugin interfaces:
140+
- New plugins implement resolve_source_all() returning list
141+
- Old plugins implement resolve_source() returning single tuple (backward compat)
138142
"""
139143
constraint = ctx.constraints.get_constraint(req.name)
140144
logger.debug(
141145
f"resolving requirement {req} using {sdist_server_url} with constraint {constraint}"
142146
)
143147

144148
try:
145-
resolver_results = overrides.find_and_invoke(
146-
req.name,
147-
"resolve_source",
148-
default_resolve_source_all,
149-
ctx=ctx,
150-
req=req,
151-
sdist_server_url=sdist_server_url,
152-
req_type=req_type,
153-
)
149+
# Check for new plugin hook first (returns list)
150+
new_plugin = overrides.find_override_method(req.name, "resolve_source_all")
151+
if new_plugin:
152+
resolver_results = overrides.find_and_invoke(
153+
req.name,
154+
"resolve_source_all",
155+
default_resolve_source_all,
156+
ctx=ctx,
157+
req=req,
158+
sdist_server_url=sdist_server_url,
159+
req_type=req_type,
160+
)
161+
else:
162+
# Fall back to old plugin hook (returns single tuple for backward compat)
163+
old_plugin = overrides.find_override_method(req.name, "resolve_source")
164+
if old_plugin:
165+
single_result = overrides.find_and_invoke(
166+
req.name,
167+
"resolve_source",
168+
default_resolve_source,
169+
ctx=ctx,
170+
req=req,
171+
sdist_server_url=sdist_server_url,
172+
req_type=req_type,
173+
)
174+
# Wrap old plugin result in list
175+
resolver_results = [single_result]
176+
else:
177+
# No plugin, use default
178+
resolver_results = default_resolve_source_all(
179+
ctx=ctx,
180+
req=req,
181+
sdist_server_url=sdist_server_url,
182+
req_type=req_type,
183+
)
154184
except (
155185
resolvelib.InconsistentCandidate,
156186
resolvelib.RequirementsConflicted,

0 commit comments

Comments
 (0)