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

Commit 56083466 authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

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

parents 5e0278ea 93f8d398
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),