Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc6e6456 authored by Spandan Das's avatar Spandan Das
Browse files

Prevent concurrent read/writes to a map

This should hopefully fix an intermittent flake in bp2build, which is
now run by default.

Test: go build ./android
Change-Id: Ic257a34448ab323df1680cf1990b087ed415a592
parent 791f6036
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package android
import (
	"path/filepath"
	"strings"
	"sync"

	"android/soong/bazel"

@@ -348,6 +349,7 @@ type PkgPathInterface interface {
var (
	protoIncludeDirGeneratedSuffix = ".include_dir_bp2build_generated_proto"
	protoIncludeDirsBp2buildKey    = NewOnceKey("protoIncludeDirsBp2build")
	protoIncludeDirsBp2buildLock   sync.Mutex
)

func getProtoIncludeDirsBp2build(config Config) *map[protoIncludeDirKey]bool {
@@ -367,6 +369,9 @@ type protoIncludeDirKey struct {
// might create the targets in a subdirectory of `includeDir`
// Returns the labels of the proto_library targets
func createProtoLibraryTargetsForIncludeDirs(ctx Bp2buildMutatorContext, includeDirs []string) bazel.LabelList {
	protoIncludeDirsBp2buildLock.Lock()
	defer protoIncludeDirsBp2buildLock.Unlock()

	var ret bazel.LabelList
	for _, dir := range includeDirs {
		if exists, _, _ := ctx.Config().fs.Exists(filepath.Join(dir, "Android.bp")); !exists {