App.get_libname(): Don't use get_proj_refs() #7

Merged
Jan Lindemann merged 2 commits from jan/feature/20260608-app-get-libname-don-t-use-get-proj-refs into master 2026-06-08 20:49:04 +02:00 AGit
2 changed files with 36 additions and 40 deletions

View file

@ -188,33 +188,34 @@ class App(Base):
buf.append(spec)
return
visited.add(spec)
deps = self.get_value(name, section, key)
vals = self.get_value(name, section, key)
log(
DEBUG,
(
f'name={name}, section={section}, key={key}, deps={deps}, '
f'name={name}, section={section}, key={key}, deps={vals}, '
f'scope={scope.name}, visited={visited}'
),
)
if deps and scope != Scope.Self:
if scope == Scope.One:
subscope = Scope.Self
else:
subscope = Scope.Subtree
for dep in deps.split(','):
dep = dep.strip()
if not (len(dep)):
continue
self.__get_project_refs_cached(
buf,
visited,
dep,
section,
key,
add_self = True,
scope = subscope,
names_only = names_only,
)
vals_list = vals.split(',') if vals else []
match scope:
case Scope.Self:
buf += vals_list
case Scope.One | Scope.Subtree:
subscope = scope.Self if scope == Scope.One else scope
for val in vals_list:
val = val.strip()
if not (len(val)):
continue
self.__get_project_refs_cached(
buf,
visited,
val,
section,
key,
add_self = True,
scope = subscope,
names_only = names_only,
)
if add_self:
buf.append(spec)
@ -638,20 +639,14 @@ class App(Base):
ret.append(m)
return ret
def get_libname(self, projects) -> str:
vals = self.get_project_refs(
projects,
['build'],
'libname',
scope = Scope.One,
add_self = False,
names_only = True,
)
if not vals:
return ' '.join(projects)
if 'none' in vals:
vals.remove('none')
return ' '.join(reversed(vals))
def get_libname(self, spec: str) -> str | None:
project_name = self.strip_module_from_spec(spec)
ret = self.get_value(project_name, 'build', 'libname')
if ret == 'none':
return None
if ret is None:
return project_name
return ret
def is_excluded_from_build(self, project: str) -> str | None:
log(DEBUG, 'checking if project ' + project + ' is excluded from build')

View file

@ -45,8 +45,8 @@ class CmdLdflags(Cmd): # export
for m in deps:
if m in exclude:
continue
libname = self.app.get_libname([m])
if not len(libname):
libname = self.app.get_libname(m)
if libname is None:
continue
path = self.app.find_dir(m, ['/lib'])
if not path:
@ -69,9 +69,10 @@ class CmdLdflags(Cmd): # export
for m in reversed(deps):
if m in args.exclude:
continue
libname = self.app.get_libname([m])
if len(libname):
out.append('-l' + libname)
libname = self.app.get_libname(m)
if libname is None:
continue
out.append('-l' + libname)
if not out:
return
ldpathflags = self.__get_ldpathflags(args.module, args.exclude)