From d82c3f3b343af55136800c602fb7d938fb314bec Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 30 Oct 2024 12:19:53 +0100 Subject: [PATCH 1/2] In `compile` command try to release the package manager lock ASAP --- commands/service_compile.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/commands/service_compile.go b/commands/service_compile.go index 37f401397de..22aeed836d2 100644 --- a/commands/service_compile.go +++ b/commands/service_compile.go @@ -28,6 +28,7 @@ import ( "github.com/arduino/arduino-cli/commands/internal/instances" "github.com/arduino/arduino-cli/internal/arduino/builder" "github.com/arduino/arduino-cli/internal/arduino/cores" + "github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/internal/arduino/sketch" "github.com/arduino/arduino-cli/internal/arduino/utils" @@ -77,9 +78,17 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu exportBinaries = *e } - pme, release, err := instances.GetPackageManagerExplorer(req.GetInstance()) - if err != nil { + var pme *packagemanager.Explorer + var release func() + if _pme, _release, err := instances.GetPackageManagerExplorer(req.GetInstance()); err != nil { return err + } else { + pme = _pme + release = func() { + _release() + // Release once if called multiple times + _release = func() {} + } } defer release() @@ -358,6 +367,10 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu targetBoard.String(), "'build.board'", sketchBuilder.GetBuildProperties().Get("build.board")) + "\n")) } + // Release package manager + release() + + // Perform the actual build if err := sketchBuilder.Build(); err != nil { return &cmderrors.CompileFailedError{Message: err.Error()} } From 6cff8893da51f70955fba24d80483cb3d90510dc Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 21 Nov 2024 17:13:23 +0100 Subject: [PATCH 2/2] Applied suggestion from code review --- commands/service_compile.go | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/commands/service_compile.go b/commands/service_compile.go index 22aeed836d2..a7ce1ea2bbf 100644 --- a/commands/service_compile.go +++ b/commands/service_compile.go @@ -22,13 +22,13 @@ import ( "io" "sort" "strings" + "sync" "time" "github.com/arduino/arduino-cli/commands/cmderrors" "github.com/arduino/arduino-cli/commands/internal/instances" "github.com/arduino/arduino-cli/internal/arduino/builder" "github.com/arduino/arduino-cli/internal/arduino/cores" - "github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/internal/arduino/sketch" "github.com/arduino/arduino-cli/internal/arduino/utils" @@ -78,18 +78,11 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu exportBinaries = *e } - var pme *packagemanager.Explorer - var release func() - if _pme, _release, err := instances.GetPackageManagerExplorer(req.GetInstance()); err != nil { + pme, release, err := instances.GetPackageManagerExplorer(req.GetInstance()) + if err != nil { return err - } else { - pme = _pme - release = func() { - _release() - // Release once if called multiple times - _release = func() {} - } } + release = sync.OnceFunc(release) defer release() if pme.Dirty() { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy