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

Commit cbe61221 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Remove ?= assignements to product variables" into main

parents a1e713fe 8e15f697
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -635,6 +635,13 @@ func (ctx *parseContext) handleAssignment(a *mkparser.Assignment) []starlarkNode
	case "+=":
		asgn.flavor = asgnAppend
	case "?=":
		if _, ok := lhs.(*productConfigVariable); ok {
			// Make sets all product configuration variables to empty strings before running product
			// config makefiles. ?= will have no effect on a variable that has been assigned before,
			// even if assigned to an empty string. So just skip emitting any code for this
			// assignment.
			return nil
		}
		asgn.flavor = asgnMaybeSet
	default:
		panic(fmt.Errorf("unexpected assignment type %s", a.Type))
+8 −12
Original line number Diff line number Diff line
@@ -923,8 +923,6 @@ def init(g, handle):
  cfg["PRODUCT_LIST2"] += ["a"]
  cfg["PRODUCT_LIST1"] += ["b"]
  cfg["PRODUCT_LIST2"] += ["b"]
  if cfg.get("PRODUCT_LIST3") == None:
    cfg["PRODUCT_LIST3"] = ["a"]
  cfg["PRODUCT_LIST1"] = ["c"]
  g.setdefault("PLATFORM_LIST", [])
  g["PLATFORM_LIST"] += ["x"]
@@ -966,9 +964,10 @@ PRODUCT_LIST1 = a $(PRODUCT_LIST1)
PRODUCT_LIST2 ?= a $(PRODUCT_LIST2)
PRODUCT_LIST3 += a

# Now doing them again should not have a setdefault because they've already been set
# Now doing them again should not have a setdefault because they've already been set, except 2
# which did not emit an assignment before
PRODUCT_LIST1 = a $(PRODUCT_LIST1)
PRODUCT_LIST2 ?= a $(PRODUCT_LIST2)
PRODUCT_LIST2 = a $(PRODUCT_LIST2)
PRODUCT_LIST3 += a
`,
		expected: `# All of these should have a setdefault because they're self-referential and not defined before
@@ -979,18 +978,15 @@ def init(g, handle):
  rblf.setdefault(handle, "PRODUCT_LIST1")
  cfg["PRODUCT_LIST1"] = (["a"] +
      cfg.get("PRODUCT_LIST1", []))
  if cfg.get("PRODUCT_LIST2") == None:
    rblf.setdefault(handle, "PRODUCT_LIST2")
    cfg["PRODUCT_LIST2"] = (["a"] +
        cfg.get("PRODUCT_LIST2", []))
  rblf.setdefault(handle, "PRODUCT_LIST3")
  cfg["PRODUCT_LIST3"] += ["a"]
  # Now doing them again should not have a setdefault because they've already been set
  # Now doing them again should not have a setdefault because they've already been set, except 2
  # which did not emit an assignment before
  cfg["PRODUCT_LIST1"] = (["a"] +
      cfg["PRODUCT_LIST1"])
  if cfg.get("PRODUCT_LIST2") == None:
  rblf.setdefault(handle, "PRODUCT_LIST2")
  cfg["PRODUCT_LIST2"] = (["a"] +
        cfg["PRODUCT_LIST2"])
      cfg.get("PRODUCT_LIST2", []))
  cfg["PRODUCT_LIST3"] += ["a"]
`,
	},
+5 −8
Original line number Diff line number Diff line
@@ -109,14 +109,11 @@ func (pcv productConfigVariable) emitSet(gctx *generationContext, asgn *assignme
		}
		emitAppend()
	case asgnMaybeSet:
		gctx.writef("if cfg.get(%q) == None:", pcv.nam)
		gctx.indentLevel++
		gctx.newLine()
		if needsSetDefault {
			emitSetDefault()
		}
		emitAssignment()
		gctx.indentLevel--
		// In mk2rbc.go we never emit a maybeSet assignment for product config variables, because
		// they are set to empty strings before running product config.
		panic("Should never get here")
	default:
		panic("Unknown assignment flavor")
	}

	gctx.setHasBeenAssigned(&pcv)