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

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

Merge changes from topic "colefaust_mksort" am: 4cbfa0d7

parents 212a825a 4cbfa0d7
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import (
	"os"
	"path/filepath"
	"regexp"
	"sort"
	"strconv"
	"strings"
	"text/scanner"
@@ -110,6 +111,7 @@ var knownFunctions = map[string]interface {
	"require-artifacts-in-path-relaxed":    &simpleCallParser{name: baseName + ".require_artifacts_in_path_relaxed", returnType: starlarkTypeVoid},
	// TODO(asmundak): remove it once all calls are removed from configuration makefiles. see b/183161002
	"shell":    &shellCallParser{},
	"sort":     &simpleCallParser{name: baseName + ".mksort", returnType: starlarkTypeList},
	"strip":    &simpleCallParser{name: baseName + ".mkstrip", returnType: starlarkTypeString},
	"subst":    &substCallParser{fname: "subst"},
	"warning":  &makeControlFuncParser{name: baseName + ".mkwarning"},
@@ -758,6 +760,16 @@ func (ctx *parseContext) newDependentModule(path string, optional bool) *moduleI
func (ctx *parseContext) handleSubConfig(
	v mkparser.Node, pathExpr starlarkExpr, loadAlways bool, processModule func(inheritedModule) starlarkNode) []starlarkNode {

	// Allow seeing $(sort $(wildcard realPathExpr)) or $(wildcard realPathExpr)
	// because those are functionally the same as not having the sort/wildcard calls.
	if ce, ok := pathExpr.(*callExpr); ok && ce.name == "rblf.mksort" && len(ce.args) == 1 {
		if ce2, ok2 := ce.args[0].(*callExpr); ok2 && ce2.name == "rblf.expand_wildcard" && len(ce2.args) == 1 {
			pathExpr = ce2.args[0]
		}
	} else if ce2, ok2 := pathExpr.(*callExpr); ok2 && ce2.name == "rblf.expand_wildcard" && len(ce2.args) == 1 {
		pathExpr = ce2.args[0]
	}

	// In a simple case, the name of a module to inherit/include is known statically.
	if path, ok := maybeString(pathExpr); ok {
		// Note that even if this directive loads a module unconditionally, a module may be
@@ -765,6 +777,7 @@ func (ctx *parseContext) handleSubConfig(
		moduleShouldExist := loadAlways && ctx.ifNestLevel == 0
		if strings.Contains(path, "*") {
			if paths, err := fs.Glob(ctx.script.sourceFS, path); err == nil {
				sort.Strings(paths)
				result := make([]starlarkNode, 0)
				for _, p := range paths {
					mi := ctx.newDependentModule(p, !moduleShouldExist)
+23 −5
Original line number Diff line number Diff line
@@ -197,15 +197,31 @@ def init(g, handle):
		mkname: "path/product.mk",
		in: `
$(call inherit-product, */font.mk)
$(call inherit-product, $(sort $(wildcard */font.mk)))
$(call inherit-product, $(wildcard */font.mk))

include */font.mk
include $(sort $(wildcard */font.mk))
include $(wildcard */font.mk)
`,
		expected: `load("//build/make/core:product_config.rbc", "rblf")
load("//foo:font.star", _font_init = "init")
load("//bar:font.star", _font1_init = "init")
load("//bar:font.star", _font_init = "init")
load("//foo:font.star", _font1_init = "init")

def init(g, handle):
  cfg = rblf.cfg(handle)
  rblf.inherit(handle, "foo/font", _font_init)
  rblf.inherit(handle, "bar/font", _font1_init)
  rblf.inherit(handle, "bar/font", _font_init)
  rblf.inherit(handle, "foo/font", _font1_init)
  rblf.inherit(handle, "bar/font", _font_init)
  rblf.inherit(handle, "foo/font", _font1_init)
  rblf.inherit(handle, "bar/font", _font_init)
  rblf.inherit(handle, "foo/font", _font1_init)
  _font_init(g, handle)
  _font1_init(g, handle)
  _font_init(g, handle)
  _font1_init(g, handle)
  _font_init(g, handle)
  _font1_init(g, handle)
`,
	},
	{
@@ -1022,12 +1038,13 @@ def init(g, handle):
`,
	},
	{
		desc:   "strip function",
		desc:   "strip/sort functions",
		mkname: "product.mk",
		in: `
ifeq ($(filter hwaddress,$(PRODUCT_PACKAGES)),)
   PRODUCT_PACKAGES := $(strip $(PRODUCT_PACKAGES) hwaddress)
endif
MY_VAR := $(sort b a c)
`,
		expected: `load("//build/make/core:product_config.rbc", "rblf")

@@ -1036,6 +1053,7 @@ def init(g, handle):
  if "hwaddress" not in cfg.get("PRODUCT_PACKAGES", []):
    rblf.setdefault(handle, "PRODUCT_PACKAGES")
    cfg["PRODUCT_PACKAGES"] = (rblf.mkstrip("%s hwaddress" % " ".join(cfg.get("PRODUCT_PACKAGES", [])))).split()
  g["MY_VAR"] = rblf.mksort("b a c")
`,
	},
	{