@@ -135,54 +135,32 @@ def _scan_so(pkg):
135135 broot = None
136136 aarch = None
137137
138- info = cli .call (
139- "info" ,
140- ["--from" , " installed" , "--description " , "so:" + dep ],
138+ info = cli .query (
139+ [ "name" ] ,
140+ ["--installed" , "--match=provides " , f "so:{ dep } " ],
141141 None ,
142142 root = broot ,
143- capture_output = True ,
144143 arch = aarch ,
145144 allow_untrusted = True ,
146145 )
147- if info .returncode != 0 :
148- # when bootstrapping, also check the repository
149- if pkg .stage == 0 :
150- info = cli .call (
151- "info" ,
152- ["--from" , "none" , "--description" , "so:" + dep ],
153- "main" ,
154- capture_output = True ,
155- allow_untrusted = True ,
156- )
146+ if not info and pkg .stage == 0 :
147+ # when bootstrapping, check the repository...
148+ info = cli .query (
149+ ["name" ],
150+ ["--from=none" , "--match=provides" , f"so:{ dep } " ],
151+ "main" ,
152+ allow_untrusted = True ,
153+ )
157154
158- # either of the commands failed
159- if info . returncode != 0 :
155+ # failed to query either way...
156+ if not info :
160157 log .out (f" \f [red]SONAME: { dep } (unknown provider)" )
161158 broken = True
162159 continue
163160
164- # this needs a bit more parsing, first take only the name-ver
165- outl = info .stdout .split ()
166- sdep = None
167- if len (outl ) > 0 :
168- outl = outl [0 ].strip ().decode ()
169- # find -rX
170- dash = outl .rfind ("-" )
171- if dash > 0 :
172- # find the version separator
173- dash = outl .rfind ("-" , 0 , dash )
174- if dash > 0 :
175- # consider just the name
176- sdep = outl [0 :dash ]
177-
178- if not sdep or len (sdep ) == 0 :
179- # this should never happen though
180- log .out (f" \f [red]SONAME: { dep } (unknown provider)" )
181- broken = True
182- continue
183161 # we found a package
184162 log .out_plain (
185- f" \f [cyan]SONAME: \f [orange]{ dep } \f [] (provider: \f [green]{ sdep } \f [])"
163+ f" \f [cyan]SONAME: \f [orange]{ dep } \f [] (provider: \f [green]{ info [ 0 ][ 'name' ] } \f [])"
186164 )
187165 pkg .so_requires .append (dep )
188166
@@ -317,26 +295,14 @@ def subpkg_provides_pc(pn):
317295 for k in pcreq :
318296 pn = pcreq [k ]
319297 # provided by one of ours or by a dependency
320- in_subpkg = subpkg_provides_pc (pn )
321- if in_subpkg or cli .is_installed ("pc:" + k , pkg ):
298+ prov = subpkg_provides_pc (pn )
299+ if not prov :
300+ prov = cli .get_provider (f"pc:{ pn } " , pkg )
301+ if prov :
322302 pkg .pc_requires .append (k )
323- # locate the explicit provider
324- if not in_subpkg :
325- # apk search needs unconstrained name
326- idx = re .search (r"[<>=]" , k )
327- if idx :
328- prov = cli .get_provider ("pc:" + k [: idx .start ()], pkg )
329- else :
330- prov = cli .get_provider ("pc:" + k , pkg )
331- else :
332- prov = in_subpkg
333- # this should never happen in practice since it's already checked
334- if not prov :
335- pkg .error (f" pc: { k } (unknown provider)" )
336- else :
337- log .out_plain (
338- f" \f [cyan]pc: \f [orange]{ k } \f [] (provider: \f [green]{ prov } \f [])"
339- )
303+ log .out_plain (
304+ f" \f [cyan]pc: \f [orange]{ k } \f [] (provider: \f [green]{ prov } \f [])"
305+ )
340306 # warn about redundancy
341307 if prov in pkg .depends :
342308 pkg .log_warn (f"redundant runtime dependency '{ prov } '" )
@@ -411,20 +377,14 @@ def subpkg_provides_svc(pn, pfx):
411377 if pkg_provides_svc (pkg , sv , pfx ):
412378 continue
413379 # provided by one of ours or by a dependency
414- in_subpkg = subpkg_provides_svc (sv , pfx )
415- if in_subpkg or cli .is_installed (f"{ pfx } :" + sv , pkg ):
380+ prov = subpkg_provides_svc (sv , pfx )
381+ if not prov :
382+ prov = cli .get_provider (f"{ pfx } :{ sv } " , pkg )
383+ if prov :
416384 pkg .svc_requires .append (f"{ pfx } :{ sv } " )
417- # locate the explicit provider
418- if not in_subpkg :
419- prov = cli .get_provider (f"{ pfx } :{ sv } " , pkg )
420- else :
421- prov = in_subpkg
422- if not prov :
423- pkg .error (f" { pfx } : { sv } (unknown provider)" )
424- else :
425- log .out_plain (
426- f" \f [cyan]{ pfx } : \f [orange]{ sv } \f [] (provider: \f [green]{ prov } \f [])"
427- )
385+ log .out_plain (
386+ f" \f [cyan]{ pfx } : \f [orange]{ sv } \f [] (provider: \f [green]{ prov } \f [])"
387+ )
428388 # warn about redundancy
429389 if prov in pkg .depends and prov != "dinit-chimera" :
430390 pkg .log_warn (f"redundant runtime dependency '{ prov } '" )
0 commit comments