"os"
"path/filepath"
"strings"
+ "sync"
"git.arvados.org/arvados.git/sdk/go/arvados"
)
+// Don't trust "passenger-config" (or "bundle install") to handle
+// concurrent installs.
+var passengerInstallMutex sync.Mutex
+
type installPassenger struct {
src string
depends []bootTask
if err != nil {
return err
}
+
+ passengerInstallMutex.Lock()
+ defer passengerInstallMutex.Unlock()
+
var buf bytes.Buffer
err = boot.RunProgram(ctx, runner.src, &buf, nil, "gem", "list", "--details", "bundler")
if err != nil {