Skip to content

Commit 423bd89

Browse files
committed
builder: Fix false positive flash map errors
To allow conditional overrides of flash map it's necessary to resolve target, because otherwise the syscfgs that determine the choice of a different flash map will not be available. The problem was that every resolving was trying to detect errors in configuration (also in flash map). As the resolving had to be done before bsp package reloading, while detecting errors the default flash map is loaded. If this default flash map did not define some flash areas used in the target configuration, an error was reported even if the flash map that should override the default one was correct. Now we don't try to detect error while doing this particular resolving. Instead we do this after reloading bsp package so the properly chosen flash map is used in error detection.
1 parent cbaa907 commit 423bd89

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

newt/builder/targetbuild.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,16 @@ func NewTargetTester(target *target.Target,
9595
injectedSettings: cfgv.NewSettings(nil),
9696
}
9797

98-
if err := t.ensureResolved(); err != nil {
98+
if err := t.ensureResolved(false); err != nil {
9999
return nil, err
100100
}
101101

102102
if err := t.bspPkg.Reload(t.res.Cfg.SettingValues()); err != nil {
103103
return nil, err
104104
}
105105

106+
t.res.Cfg.DetectErrors(bspPkg.FlashMap)
107+
106108
return t, nil
107109
}
108110

@@ -174,7 +176,7 @@ func (t *TargetBuilder) resolveTransientPkgs(lps []*pkg.LocalPackage) {
174176
}
175177
}
176178

177-
func (t *TargetBuilder) ensureResolved() error {
179+
func (t *TargetBuilder) ensureResolved(detectErr bool) error {
178180
if t.res != nil {
179181
return nil
180182
}
@@ -238,7 +240,7 @@ func (t *TargetBuilder) ensureResolved() error {
238240

239241
var err error
240242
t.res, err = resolve.ResolveFull(
241-
loaderSeeds, appSeeds, t.injectedSettings, t.bspPkg.FlashMap)
243+
loaderSeeds, appSeeds, t.injectedSettings, t.bspPkg.FlashMap, detectErr)
242244
if err != nil {
243245
return err
244246
}
@@ -267,15 +269,15 @@ func (t *TargetBuilder) ensureResolved() error {
267269
}
268270

269271
func (t *TargetBuilder) Resolve() (*resolve.Resolution, error) {
270-
if err := t.ensureResolved(); err != nil {
272+
if err := t.ensureResolved(true); err != nil {
271273
return nil, err
272274
}
273275

274276
return t.res, nil
275277
}
276278

277279
func (t *TargetBuilder) validateAndWriteCfg() error {
278-
if err := t.ensureResolved(); err != nil {
280+
if err := t.ensureResolved(true); err != nil {
279281
return err
280282
}
281283

@@ -384,7 +386,7 @@ func (t *TargetBuilder) extraADirs() []string {
384386
}
385387

386388
func (t *TargetBuilder) PrepBuild() error {
387-
if err := t.ensureResolved(); err != nil {
389+
if err := t.ensureResolved(true); err != nil {
388390
return err
389391
}
390392

@@ -836,15 +838,15 @@ func (t *TargetBuilder) MaxImgSizes() []int {
836838
}
837839

838840
func (t *TargetBuilder) CreateDepGraph() (DepGraph, error) {
839-
if err := t.ensureResolved(); err != nil {
841+
if err := t.ensureResolved(true); err != nil {
840842
return nil, err
841843
}
842844

843845
return depGraph(t.res.MasterSet)
844846
}
845847

846848
func (t *TargetBuilder) CreateRevdepGraph() (DepGraph, error) {
847-
if err := t.ensureResolved(); err != nil {
849+
if err := t.ensureResolved(true); err != nil {
848850
return nil, err
849851
}
850852

newt/resolve/resolve.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,7 +1168,8 @@ func ResolveFull(
11681168
loaderSeeds []*pkg.LocalPackage,
11691169
appSeeds []*pkg.LocalPackage,
11701170
injectedSettings *cfgv.Settings,
1171-
flashMap flashmap.FlashMap) (*Resolution, error) {
1171+
flashMap flashmap.FlashMap,
1172+
detectErr bool) (*Resolution, error) {
11721173

11731174
// First, calculate syscfg and determine which package provides each
11741175
// required API. Syscfg and APIs are project-wide; that is, they are
@@ -1239,7 +1240,9 @@ func ResolveFull(
12391240
if loaderSeeds == nil {
12401241
res.AppSet.Rpkgs = r.rpkgSlice()
12411242
res.LoaderSet = nil
1242-
res.Cfg.DetectErrors(flashMap)
1243+
if detectErr == true {
1244+
res.Cfg.DetectErrors(flashMap)
1245+
}
12431246
return res, nil
12441247
}
12451248

@@ -1290,7 +1293,9 @@ func ResolveFull(
12901293
return nil, err
12911294
}
12921295

1293-
res.Cfg.DetectErrors(flashMap)
1296+
if detectErr == true {
1297+
res.Cfg.DetectErrors(flashMap)
1298+
}
12941299

12951300
return res, nil
12961301
}

0 commit comments

Comments
 (0)