Skip to content

Commit bc6bb85

Browse files
committedMar 2, 2025
breaker: add soname revdeps support
Signed-off-by: Kaiyang Wu <[email protected]>
1 parent 10c254f commit bc6bb85

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed
 

‎breaker

+29-16
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ def get_package_version(package_path: str, defines_path: str) -> str:
216216

217217
# Get reverse library dependency for specified package
218218
def get_revdeps(
219-
package_name: str, alldeps: bool, include: list[str], exclude: list[str]
219+
package_name: str, alldeps: bool, include: list[str], exclude: list[str],
220+
sorevdeps: list[str]
220221
) -> list[dict[str, str]]:
221222
revdeps_list = []
222223
try:
@@ -225,20 +226,28 @@ def get_revdeps(
225226
)
226227
response.raise_for_status()
227228
package_info = response.json()
228-
revdeps_list = [
229-
package
230-
for group in package_info["sobreaks"]
231-
for package in group
232-
if package not in revdeps_list
233-
]
234-
if package_info["sobreaks_circular"] != None:
235-
revdeps_list += package_info["sobreaks_circular"]
236-
if alldeps:
237-
revdeps_list += [
238-
package["package"]
239-
for group in package_info["revdeps"]
240-
for package in group["deps"]
241-
if package["package"] not in revdeps_list
229+
if sorevdeps is None:
230+
revdeps_list = [
231+
package
232+
for group in package_info["sobreaks"]
233+
for package in group
234+
if package not in revdeps_list
235+
]
236+
if package_info["sobreaks_circular"] != None:
237+
revdeps_list += package_info["sobreaks_circular"]
238+
if alldeps:
239+
revdeps_list += [
240+
package["package"]
241+
for group in package_info["revdeps"]
242+
for package in group["deps"]
243+
if package["package"] not in revdeps_list
244+
]
245+
else:
246+
revdeps_list = [
247+
package
248+
for soname in sorevdeps
249+
for package in package_info["sorevdeps"][soname]
250+
if package not in revdeps_list
242251
]
243252
except:
244253
logger.warning(
@@ -403,6 +412,9 @@ def main():
403412
parser.add_argument(
404413
"-p", "--pkgbreak", action="store_true", help="Generate PKGBREAK"
405414
)
415+
parser.add_argument(
416+
"-s", "--sorevdeps", nargs="+", help="Use specific soname to generate reverse dependencies"
417+
)
406418
parser.add_argument(
407419
"-b",
408420
"--bump",
@@ -438,7 +450,8 @@ def main():
438450
package_path, defines_path = search_package_path(args.package)
439451
version = get_package_version(package_path, defines_path)
440452

441-
revdeps = get_revdeps(args.package, args.alldeps, args.include, args.exclude)
453+
revdeps = get_revdeps(args.package, args.alldeps, args.include,
454+
args.exclude, args.sorevdeps)
442455

443456
if args.rebuilds:
444457
revdeps_path_list_str = gen_rebuilds_list_string(revdeps, args)

0 commit comments

Comments
 (0)