@@ -28,6 +28,7 @@ import (
28
28
"github.com/arduino/arduino-cli/commands/internal/instances"
29
29
"github.com/arduino/arduino-cli/internal/arduino/builder"
30
30
"github.com/arduino/arduino-cli/internal/arduino/cores"
31
+ "github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
31
32
"github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager"
32
33
"github.com/arduino/arduino-cli/internal/arduino/sketch"
33
34
"github.com/arduino/arduino-cli/internal/arduino/utils"
@@ -77,9 +78,17 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
77
78
exportBinaries = * e
78
79
}
79
80
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 {
82
84
return err
85
+ } else {
86
+ pme = _pme
87
+ release = func () {
88
+ _release ()
89
+ // Release once if called multiple times
90
+ _release = func () {}
91
+ }
83
92
}
84
93
defer release ()
85
94
@@ -358,6 +367,10 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
358
367
targetBoard .String (), "'build.board'" , sketchBuilder .GetBuildProperties ().Get ("build.board" )) + "\n " ))
359
368
}
360
369
370
+ // Release package manager
371
+ release ()
372
+
373
+ // Perform the actual build
361
374
if err := sketchBuilder .Build (); err != nil {
362
375
return & cmderrors.CompileFailedError {Message : err .Error ()}
363
376
}
0 commit comments