@@ -28,6 +28,7 @@ import (
2828 "github.com/arduino/arduino-cli/commands/internal/instances"
2929 "github.com/arduino/arduino-cli/internal/arduino/builder"
3030 "github.com/arduino/arduino-cli/internal/arduino/cores"
31+ "github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
3132 "github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager"
3233 "github.com/arduino/arduino-cli/internal/arduino/sketch"
3334 "github.com/arduino/arduino-cli/internal/arduino/utils"
@@ -77,9 +78,17 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
7778 exportBinaries = * e
7879 }
7980
80- pme , release , err := instances .GetPackageManagerExplorer (req .GetInstance ())
81- if err != nil {
81+ var pme * packagemanager.Explorer
82+ var release func ()
83+ if _pme , _release , err := instances .GetPackageManagerExplorer (req .GetInstance ()); err != nil {
8284 return err
85+ } else {
86+ pme = _pme
87+ release = func () {
88+ _release ()
89+ // Release once if called multiple times
90+ _release = func () {}
91+ }
8392 }
8493 defer release ()
8594
@@ -358,6 +367,10 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
358367 targetBoard .String (), "'build.board'" , sketchBuilder .GetBuildProperties ().Get ("build.board" )) + "\n " ))
359368 }
360369
370+ // Release package manager
371+ release ()
372+
373+ // Perform the actual build
361374 if err := sketchBuilder .Build (); err != nil {
362375 return & cmderrors.CompileFailedError {Message : err .Error ()}
363376 }
0 commit comments