mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
sb/pkgconfig: Cache pkgconfig based on a file name not name
- Caching on name falsely assumed checks across different config instances in nested build sets as used in vertical stack building was valid. This stopped a valid check for a prefix seeing if a valid BSP config was present. Updates #3893
This commit is contained in:
parent
4295d3d377
commit
96d55ab432
@ -91,6 +91,7 @@ class package(object):
|
|||||||
no_dup_flags = ['-I', '-l', '-L']
|
no_dup_flags = ['-I', '-l', '-L']
|
||||||
dual_opts = ['-D', '-U', '-I', '-l', '-L']
|
dual_opts = ['-D', '-U', '-I', '-l', '-L']
|
||||||
lib_list_splitter = re.compile('[\s,]+')
|
lib_list_splitter = re.compile('[\s,]+')
|
||||||
|
loaded_prefixes = None
|
||||||
loaded = {}
|
loaded = {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -416,15 +417,15 @@ class package(object):
|
|||||||
return ok
|
return ok
|
||||||
|
|
||||||
def load(self, name):
|
def load(self, name):
|
||||||
if name in package.loaded:
|
|
||||||
package._copy(package.loaded[name], self)
|
|
||||||
return
|
|
||||||
self._log('loading: %s' % (name))
|
self._log('loading: %s' % (name))
|
||||||
if self.name_:
|
if self.name_:
|
||||||
self._clean()
|
self._clean()
|
||||||
self.name_ = name
|
self.name_ = name
|
||||||
file = self._find_package(name)
|
file = self._find_package(name)
|
||||||
if file:
|
if file:
|
||||||
|
if file in package.loaded:
|
||||||
|
package._copy(package.loaded[file], self)
|
||||||
|
return
|
||||||
self._log('load: %s (%s)' % (name, file))
|
self._log('load: %s (%s)' % (name, file))
|
||||||
if self.src:
|
if self.src:
|
||||||
self.src('==%s%s' % ('=' * 80, os.linesep))
|
self.src('==%s%s' % ('=' * 80, os.linesep))
|
||||||
@ -474,8 +475,9 @@ class package(object):
|
|||||||
if requires:
|
if requires:
|
||||||
for r in package.splitter(requires):
|
for r in package.splitter(requires):
|
||||||
if r[0] not in self.nodes[nt]:
|
if r[0] not in self.nodes[nt]:
|
||||||
if r[0] in package.loaded:
|
file = self._find_package(r[0])
|
||||||
pkg = package.loaded[r[0]]
|
if file in package.loaded:
|
||||||
|
pkg = package.loaded[file]
|
||||||
else:
|
else:
|
||||||
pkg = package(r[0], self.prefix, self.output)
|
pkg = package(r[0], self.prefix, self.output)
|
||||||
ver = pkg.get('version')
|
ver = pkg.get('version')
|
||||||
@ -486,8 +488,8 @@ class package(object):
|
|||||||
self._log('failed: %s (%s %s %s)' % (r[0], ver, r[1], r[2]))
|
self._log('failed: %s (%s %s %s)' % (r[0], ver, r[1], r[2]))
|
||||||
self.nodes['failed'][r[0]] = pkg
|
self.nodes['failed'][r[0]] = pkg
|
||||||
if self.exists():
|
if self.exists():
|
||||||
self._log('load: exists')
|
self._log('load: exists and loaded; cache as loaded')
|
||||||
package.loaded[name] = self
|
package.loaded[self.file_] = self
|
||||||
|
|
||||||
def get(self, label, private = True):
|
def get(self, label, private = True):
|
||||||
self._log('get: %s (%s)' % (label, ','.join(self.fields)))
|
self._log('get: %s (%s)' % (label, ','.join(self.fields)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user