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

Commit 9d7a52db authored by Cole Faust's avatar Cole Faust Committed by Automerger Merge Worker
Browse files

Merge "Fix include paths that match one file being included unconditionally" am: 56083466

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2004901

Change-Id: Ica5e38108d70452ade7df029f316f7e98495c219
parents 912a9b74 56083466
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -807,10 +807,7 @@ func (ctx *parseContext) handleSubConfig(
	if len(matchingPaths) > maxMatchingFiles {
		return []starlarkNode{ctx.newBadNode(v, "there are >%d files matching the pattern, please rewrite it", maxMatchingFiles)}
	}
	if len(matchingPaths) == 1 {
		res := inheritedStaticModule{ctx.newDependentModule(matchingPaths[0], loadAlways && ctx.ifNestLevel == 0), loadAlways}
		return []starlarkNode{processModule(res)}
	} else {

	needsWarning := pathPattern[0] == "" && len(ctx.includeTops) == 0
	res := inheritedDynamicModule{*varPath, []*moduleInfo{}, loadAlways, ctx.errorLocation(v), needsWarning}
	for _, p := range matchingPaths {
@@ -821,7 +818,6 @@ func (ctx *parseContext) handleSubConfig(
	}
	return []starlarkNode{processModule(res)}
}
}

func (ctx *parseContext) findMatchingPaths(pattern []string) []string {
	files := ctx.script.makefileFinder.Find(".")
+35 −5
Original line number Diff line number Diff line
@@ -1081,7 +1081,13 @@ load("//vendor/foo1:cfg.star|init", _cfg_init = "init")
def init(g, handle):
  cfg = rblf.cfg(handle)
  g["MY_PATH"] = "foo"
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
  _entry = {
    "vendor/foo1/cfg.mk": ("vendor/foo1/cfg", _cfg_init),
  }.get("%s/cfg.mk" % g["MY_PATH"])
  (_varmod, _varmod_init) = _entry if _entry else (None, None)
  if not _varmod_init:
    rblf.mkerror("product.mk", "Cannot find %s" % ("%s/cfg.mk" % g["MY_PATH"]))
  rblf.inherit(handle, _varmod, _varmod_init)
`,
	},
	{
@@ -1101,8 +1107,20 @@ load("//vendor/foo1:cfg.star|init", _cfg_init = "init")
def init(g, handle):
  cfg = rblf.cfg(handle)
  g["MY_PATH"] = "foo"
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
  rblf.inherit(handle, "vendor/foo1/cfg", _cfg_init)
  _entry = {
    "vendor/foo1/cfg.mk": ("vendor/foo1/cfg", _cfg_init),
  }.get("%s/cfg.mk" % g["MY_PATH"])
  (_varmod, _varmod_init) = _entry if _entry else (None, None)
  if not _varmod_init:
    rblf.mkerror("product.mk", "Cannot find %s" % ("%s/cfg.mk" % g["MY_PATH"]))
  rblf.inherit(handle, _varmod, _varmod_init)
  _entry = {
    "vendor/foo1/cfg.mk": ("vendor/foo1/cfg", _cfg_init),
  }.get("%s/cfg.mk" % g["MY_PATH"])
  (_varmod, _varmod_init) = _entry if _entry else (None, None)
  if not _varmod_init:
    rblf.mkerror("product.mk", "Cannot find %s" % ("%s/cfg.mk" % g["MY_PATH"]))
  rblf.inherit(handle, _varmod, _varmod_init)
`,
	},
	{
@@ -1126,9 +1144,21 @@ load("//bar:font.star|init", _font1_init = "init")

def init(g, handle):
  cfg = rblf.cfg(handle)
  rblf.inherit(handle, "foo/font", _font_init)
  _entry = {
    "foo/font.mk": ("foo/font", _font_init),
  }.get("%s/font.mk" % g.get("MY_VAR", ""))
  (_varmod, _varmod_init) = _entry if _entry else (None, None)
  if not _varmod_init:
    rblf.mkerror("product.mk", "Cannot find %s" % ("%s/font.mk" % g.get("MY_VAR", "")))
  rblf.inherit(handle, _varmod, _varmod_init)
  # There's some space and even this comment between the include_top and the inherit-product
  rblf.inherit(handle, "foo/font", _font_init)
  _entry = {
    "foo/font.mk": ("foo/font", _font_init),
  }.get("%s/font.mk" % g.get("MY_VAR", ""))
  (_varmod, _varmod_init) = _entry if _entry else (None, None)
  if not _varmod_init:
    rblf.mkerror("product.mk", "Cannot find %s" % ("%s/font.mk" % g.get("MY_VAR", "")))
  rblf.inherit(handle, _varmod, _varmod_init)
  rblf.mkwarning("product.mk:11", "Please avoid starting an include path with a variable. See https://source.android.com/setup/build/bazel/product_config/issues/includes for details.")
  _entry = {
    "foo/font.mk": ("foo/font", _font_init),