Skip to content

Commit d82c3f3

Browse files
committed
In compile command try to release the package manager lock ASAP
1 parent 7ee4cf7 commit d82c3f3

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

commands/service_compile.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)