Do not infinit loop when ordering steps
This commit is contained in:
parent
7e8ed1a623
commit
a87ba06bf3
|
@ -21,7 +21,7 @@ class Builder:
|
||||||
self.add_targets(self.targetDef, self._targets)
|
self.add_targets(self.targetDef, self._targets)
|
||||||
|
|
||||||
def finalize_target_steps(self):
|
def finalize_target_steps(self):
|
||||||
dependencies = self.order_dependencies(self.targetDef)
|
dependencies = self.order_steps(self.targetDef)
|
||||||
dependencies = list(remove_duplicates(dependencies))
|
dependencies = list(remove_duplicates(dependencies))
|
||||||
|
|
||||||
if option('build_nodeps'):
|
if option('build_nodeps'):
|
||||||
|
@ -48,27 +48,35 @@ class Builder:
|
||||||
depPlatform, depName = targetPlatformName, dep
|
depPlatform, depName = targetPlatformName, dep
|
||||||
self.add_targets((depPlatform, depName), targets)
|
self.add_targets((depPlatform, depName), targets)
|
||||||
|
|
||||||
def order_dependencies(self, targetDef):
|
def order_steps(self, targetDef):
|
||||||
for pltName in PlatformInfo.all_running_platforms:
|
for pltName in PlatformInfo.all_running_platforms:
|
||||||
plt = PlatformInfo.all_platforms[pltName]
|
plt = PlatformInfo.all_platforms[pltName]
|
||||||
for tlcName in plt.toolchain_names:
|
for tlcName in plt.toolchain_names:
|
||||||
tlc = Dependency.all_deps[tlcName]
|
tlc = Dependency.all_deps[tlcName]
|
||||||
yield('source', tlcName)
|
yield('source', tlcName)
|
||||||
yield('neutral' if tlc.neutral else pltName, tlcName)
|
yield('neutral' if tlc.neutral else pltName, tlcName)
|
||||||
|
_targets =dict(self._targets)
|
||||||
|
yield from self.order_dependencies(targetDef, _targets)
|
||||||
|
|
||||||
|
def order_dependencies(self, targetDef, targets):
|
||||||
targetPlatformName, targetName = targetDef
|
targetPlatformName, targetName = targetDef
|
||||||
if targetPlatformName == 'source':
|
if targetPlatformName == 'source':
|
||||||
# Do not try to order sources, they will be added as dep by the
|
# Do not try to order sources, they will be added as dep by the
|
||||||
# build step two lines later.
|
# build step two lines later.
|
||||||
return
|
return
|
||||||
target = self._targets[targetDef]
|
try:
|
||||||
|
target = targets.pop(targetDef)
|
||||||
|
except KeyError:
|
||||||
|
return
|
||||||
|
|
||||||
targetPlatform = PlatformInfo.get_platform(targetPlatformName)
|
targetPlatform = PlatformInfo.get_platform(targetPlatformName)
|
||||||
for dep in target.get_dependencies(targetPlatform):
|
for dep in target.get_dependencies(targetPlatform):
|
||||||
try:
|
try:
|
||||||
depPlatform, depName = dep
|
depPlatform, depName = dep
|
||||||
except ValueError:
|
except ValueError:
|
||||||
depPlatform, depName = targetPlatformName, dep
|
depPlatform, depName = targetPlatformName, dep
|
||||||
if (depPlatform, depName) in self._targets:
|
if (depPlatform, depName) in targets:
|
||||||
yield from self.order_dependencies((depPlatform, depName))
|
yield from self.order_dependencies((depPlatform, depName), targets)
|
||||||
yield ('source', targetName)
|
yield ('source', targetName)
|
||||||
yield targetDef
|
yield targetDef
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue