@@ -299,30 +299,39 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
299299
300300 // Determine the platform used for the build (in case the board refers
301301 // to a core contained in another platform)
302- buildPlatformRelease := platformRelease
303- coreParts := strings .Split (buildProperties .Get ("build.core" ), ":" )
304- if len (coreParts ) > 1 {
305- referredPackage := coreParts [0 ]
306- buildPackage := pme .packages [referredPackage ]
307- if buildPackage == nil {
302+ core := buildProperties .Get ("build.core" )
303+ referredCore := ""
304+ if split := strings .Split (core , ":" ); len (split ) > 1 {
305+ core , referredCore = split [1 ], split [0 ]
306+ }
307+
308+ var referredPlatformRelease * cores.PlatformRelease
309+ referredPackageName := referredCore
310+ if referredPackageName != "" {
311+ referredPackage := pme .packages [referredPackageName ]
312+ if referredPackage == nil {
308313 return targetPackage , platformRelease , board , buildProperties , nil ,
309- fmt .Errorf (tr ("missing package %[1]s referenced by board %[2]s" ), referredPackage , fqbn )
314+ fmt .Errorf (tr ("missing package %[1]s referenced by board %[2]s" ), referredPackageName , fqbn )
310315 }
311- buildPlatform := buildPackage .Platforms [fqbn .PlatformArch ]
312- if buildPlatform == nil {
316+ referredPlatform := referredPackage .Platforms [fqbn .PlatformArch ]
317+ if referredPlatform == nil {
313318 return targetPackage , platformRelease , board , buildProperties , nil ,
314- fmt .Errorf (tr ("missing platform %[1]s:%[2]s referenced by board %[3]s" ), referredPackage , fqbn .PlatformArch , fqbn )
319+ fmt .Errorf (tr ("missing platform %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
315320 }
316- buildPlatformRelease = pme .GetInstalledPlatformRelease (buildPlatform )
317- if buildPlatformRelease == nil {
321+ referredPlatformRelease = pme .GetInstalledPlatformRelease (referredPlatform )
322+ if referredPlatformRelease == nil {
318323 return targetPackage , platformRelease , board , buildProperties , nil ,
319- fmt .Errorf (tr ("missing platform release %[1]s:%[2]s referenced by board %[3]s" ), referredPackage , fqbn .PlatformArch , fqbn )
324+ fmt .Errorf (tr ("missing platform release %[1]s:%[2]s referenced by board %[3]s" ), referredPackageName , fqbn .PlatformArch , fqbn )
320325 }
321326 }
322327
323328 // Runtime build properties
329+ buildPlatformRelease := platformRelease
330+ if referredCore != "" {
331+ buildPlatformRelease = referredPlatformRelease
332+ }
324333 buildProperties .Merge (platformRelease .RuntimeProperties ())
325- buildProperties .SetPath ("build.core.path" , buildPlatformRelease .InstallDir .Join ("cores" , coreParts [ 0 ] ))
334+ buildProperties .SetPath ("build.core.path" , buildPlatformRelease .InstallDir .Join ("cores" , core ))
326335 buildProperties .SetPath ("build.system.path" , buildPlatformRelease .InstallDir .Join ("system" ))
327336 for _ , tool := range pme .GetAllInstalledToolsReleases () {
328337 buildProperties .Merge (tool .RuntimeProperties ())
0 commit comments