Loading core/product_config.rbc +40 −11 Original line number Diff line number Diff line Loading @@ -83,7 +83,10 @@ def _printvars(state): if _options.format == "make": print("SOONG_CONFIG_" + nsname, ":=", " ".join(nsvars.keys())) for var, val in sorted(nsvars.items()): if val: __print_attr("SOONG_CONFIG_%s_%s" % (nsname, var), val) else: print("SOONG_CONFIG_%s_%s :=" % (nsname, var)) elif attr not in globals_base or globals_base[attr] != val: __print_attr(attr, val) Loading Loading @@ -279,19 +282,30 @@ def _indirect(pcm_name): """Returns configuration item for the inherited module.""" return (pcm_name,) def _add_soong_config_namespace(g, nsname): """Adds given namespace.""" def _soong_config_namespace(g, nsname): """Adds given namespace if it does not exist.""" if g[_soong_config_namespaces_key].get(nsname): return # A value cannot be updated, so we need to create a new dictionary old = g[_soong_config_namespaces_key] g[_soong_config_namespaces_key] = dict([(k,v) for k,v in old.items()] + [(nsname, {})]) def _add_soong_config_var_value(g, nsname, var, value): """Defines a variable and adds it to the given namespace.""" ns = g[_soong_config_namespaces_key].get(nsname) if ns == None: fail("no such namespace: " + nsname) def _soong_config_set(g, nsname, var, value): """Assigns the value to the variable in the namespace.""" _soong_config_namespace(g, nsname) g[_soong_config_namespaces_key][nsname][var]=value def _soong_config_append(g, nsname, var, value): """Appends to the value of the variable in the namespace.""" _soong_config_namespace(g, nsname) ns = g[_soong_config_namespaces_key][nsname] oldv = ns.get(var) if oldv == None: ns[var] = value else: ns[var] += " " + value def _abspath(path): """Provided for compatibility, to be removed later.""" Loading Loading @@ -382,6 +396,18 @@ def __base(path): """Returns basename.""" return path.rsplit("/",1)[-1] def _board_platform_in(g, string_or_list): """Returns true if board is in the list.""" board = g.get("TARGET_BOARD_PLATFORM","") if not board: return False return board in __words(string_or_list) def _board_platform_is(g, s): """True if board is the same as argument.""" return g.get("TARGET_BOARD_PLATFORM","") == s def _copy_files(l, outdir): """Generate <item>:<outdir>/item for each item.""" Loading Loading @@ -601,11 +627,14 @@ def __get_options(): # Settings used during debugging. _options = __get_options() rblf = struct( add_soong_config_namespace = _add_soong_config_namespace, add_soong_config_var_value = _add_soong_config_var_value, soong_config_namespace = _soong_config_namespace, soong_config_append = _soong_config_append, soong_config_set = _soong_config_set, abspath = _abspath, addprefix = _addprefix, addsuffix = _addsuffix, board_platform_in = _board_platform_in, board_platform_is = _board_platform_is, copy_files = _copy_files, copy_if_exists = _copy_if_exists, cfg = __h_cfg, Loading tests/device.rbc +20 −11 Original line number Diff line number Diff line Loading @@ -23,12 +23,11 @@ ### PRODUCT_PACKAGES += dev_after ### PRODUCT_COPY_FILES += $(call find-copy-subdir-files,audio_platform_info*.xml,device/google/redfin/audio,$(TARGET_COPY_OUT_VENDOR)/etc) xyz:/etc/xyz ### PRODUCT_COPY_FILES += $(call copy-files,x.xml y.xml,/etc) ### $(call add_soong_namespace,NS1) ### $(call add_soong_config_var_value,NS1,v1,abc) ### $(call add_soong_config_var_value,NS1,v2,def) ### $(call add_soong_namespace,NS2) ### $(call add_soong_config_namespace,NS1) ### $(call soong_config_append,NS1,v1,abc) ### $(call soong_config_append,NS1,v2,def) ### $(call add_soong_config_var_value,NS2,v3,abc) ### $(call add_soong_config_var_value,NS2,v3,xyz) ### $(call soong_config_set,NS2,v3,xyz) load("//build/make/core:product_config.rbc", "rblf") load(":part1.rbc", _part1_init = "init") Loading @@ -50,10 +49,20 @@ def init(g, handle): cfg["PRODUCT_COPY_FILES"] += rblf.copy_files("x.xml y.xml", "/etc") cfg["PRODUCT_COPY_FILES"] += rblf.copy_files(["from/sub/x", "from/sub/y"], "to") rblf.add_soong_config_namespace(g, "NS1") rblf.add_soong_config_var_value(g, "NS1", "v1", "abc") rblf.add_soong_config_var_value(g, "NS1", "v2", "def") rblf.add_soong_config_namespace(g, "NS2") rblf.add_soong_config_var_value(g, "NS2", "v3", "abc") rblf.add_soong_config_var_value(g, "NS2", "v3", "xyz") rblf.soong_config_namespace(g, "NS1") rblf.soong_config_append(g, "NS1", "v1", "abc") rblf.soong_config_append(g, "NS1", "v2", "def") rblf.soong_config_set(g, "NS2", "v3", "abc") rblf.soong_config_set(g, "NS2", "v3", "xyz") if rblf.board_platform_in(g, "board1 board2"): cfg["PRODUCT_PACKAGES"] += ["bad_package"] g["TARGET_BOARD_PLATFORM"] = "board1" if rblf.board_platform_in(g, "board1 board2"): cfg["PRODUCT_PACKAGES"] += ["board1_in"] if rblf.board_platform_in(g, ["board3","board2"]): cfg["PRODUCT_PACKAGES"] += ["bad_board_in"] if rblf.board_platform_is(g, "board1"): cfg["PRODUCT_PACKAGES"] += ["board1_is"] if rblf.board_platform_is(g, "board2"): cfg["PRODUCT_PACKAGES"] += ["bad_board1_is"] tests/part1.rbc +2 −0 Original line number Diff line number Diff line Loading @@ -26,3 +26,5 @@ def init(g, handle): cfg["PRODUCT_COPY_FILES"] += ["part_from:part_to"] rblf.setdefault(handle, "PRODUCT_PRODUCT_PROPERTIES") cfg["PRODUCT_PRODUCT_PROPERTIES"] += ["part_properties"] rblf.soong_config_namespace(g, "NS1") rblf.soong_config_append(g, "NS1", "v1", "abc_part1") tests/run.rbc +4 −2 Original line number Diff line number Diff line Loading @@ -69,7 +69,9 @@ assert_eq( "PRODUCT_PACKAGES": [ "dev", "inc", "dev_after" "dev_after", "board1_in", "board1_is", ], "PRODUCT_PRODUCT_PROPERTIES": ["part_properties"] }, Loading @@ -80,7 +82,7 @@ ns = globals["$SOONG_CONFIG_NAMESPACES"] assert_eq( { "NS1": { "v1": "abc", "v1": "abc abc_part1", "v2": "def" }, "NS2": { Loading Loading
core/product_config.rbc +40 −11 Original line number Diff line number Diff line Loading @@ -83,7 +83,10 @@ def _printvars(state): if _options.format == "make": print("SOONG_CONFIG_" + nsname, ":=", " ".join(nsvars.keys())) for var, val in sorted(nsvars.items()): if val: __print_attr("SOONG_CONFIG_%s_%s" % (nsname, var), val) else: print("SOONG_CONFIG_%s_%s :=" % (nsname, var)) elif attr not in globals_base or globals_base[attr] != val: __print_attr(attr, val) Loading Loading @@ -279,19 +282,30 @@ def _indirect(pcm_name): """Returns configuration item for the inherited module.""" return (pcm_name,) def _add_soong_config_namespace(g, nsname): """Adds given namespace.""" def _soong_config_namespace(g, nsname): """Adds given namespace if it does not exist.""" if g[_soong_config_namespaces_key].get(nsname): return # A value cannot be updated, so we need to create a new dictionary old = g[_soong_config_namespaces_key] g[_soong_config_namespaces_key] = dict([(k,v) for k,v in old.items()] + [(nsname, {})]) def _add_soong_config_var_value(g, nsname, var, value): """Defines a variable and adds it to the given namespace.""" ns = g[_soong_config_namespaces_key].get(nsname) if ns == None: fail("no such namespace: " + nsname) def _soong_config_set(g, nsname, var, value): """Assigns the value to the variable in the namespace.""" _soong_config_namespace(g, nsname) g[_soong_config_namespaces_key][nsname][var]=value def _soong_config_append(g, nsname, var, value): """Appends to the value of the variable in the namespace.""" _soong_config_namespace(g, nsname) ns = g[_soong_config_namespaces_key][nsname] oldv = ns.get(var) if oldv == None: ns[var] = value else: ns[var] += " " + value def _abspath(path): """Provided for compatibility, to be removed later.""" Loading Loading @@ -382,6 +396,18 @@ def __base(path): """Returns basename.""" return path.rsplit("/",1)[-1] def _board_platform_in(g, string_or_list): """Returns true if board is in the list.""" board = g.get("TARGET_BOARD_PLATFORM","") if not board: return False return board in __words(string_or_list) def _board_platform_is(g, s): """True if board is the same as argument.""" return g.get("TARGET_BOARD_PLATFORM","") == s def _copy_files(l, outdir): """Generate <item>:<outdir>/item for each item.""" Loading Loading @@ -601,11 +627,14 @@ def __get_options(): # Settings used during debugging. _options = __get_options() rblf = struct( add_soong_config_namespace = _add_soong_config_namespace, add_soong_config_var_value = _add_soong_config_var_value, soong_config_namespace = _soong_config_namespace, soong_config_append = _soong_config_append, soong_config_set = _soong_config_set, abspath = _abspath, addprefix = _addprefix, addsuffix = _addsuffix, board_platform_in = _board_platform_in, board_platform_is = _board_platform_is, copy_files = _copy_files, copy_if_exists = _copy_if_exists, cfg = __h_cfg, Loading
tests/device.rbc +20 −11 Original line number Diff line number Diff line Loading @@ -23,12 +23,11 @@ ### PRODUCT_PACKAGES += dev_after ### PRODUCT_COPY_FILES += $(call find-copy-subdir-files,audio_platform_info*.xml,device/google/redfin/audio,$(TARGET_COPY_OUT_VENDOR)/etc) xyz:/etc/xyz ### PRODUCT_COPY_FILES += $(call copy-files,x.xml y.xml,/etc) ### $(call add_soong_namespace,NS1) ### $(call add_soong_config_var_value,NS1,v1,abc) ### $(call add_soong_config_var_value,NS1,v2,def) ### $(call add_soong_namespace,NS2) ### $(call add_soong_config_namespace,NS1) ### $(call soong_config_append,NS1,v1,abc) ### $(call soong_config_append,NS1,v2,def) ### $(call add_soong_config_var_value,NS2,v3,abc) ### $(call add_soong_config_var_value,NS2,v3,xyz) ### $(call soong_config_set,NS2,v3,xyz) load("//build/make/core:product_config.rbc", "rblf") load(":part1.rbc", _part1_init = "init") Loading @@ -50,10 +49,20 @@ def init(g, handle): cfg["PRODUCT_COPY_FILES"] += rblf.copy_files("x.xml y.xml", "/etc") cfg["PRODUCT_COPY_FILES"] += rblf.copy_files(["from/sub/x", "from/sub/y"], "to") rblf.add_soong_config_namespace(g, "NS1") rblf.add_soong_config_var_value(g, "NS1", "v1", "abc") rblf.add_soong_config_var_value(g, "NS1", "v2", "def") rblf.add_soong_config_namespace(g, "NS2") rblf.add_soong_config_var_value(g, "NS2", "v3", "abc") rblf.add_soong_config_var_value(g, "NS2", "v3", "xyz") rblf.soong_config_namespace(g, "NS1") rblf.soong_config_append(g, "NS1", "v1", "abc") rblf.soong_config_append(g, "NS1", "v2", "def") rblf.soong_config_set(g, "NS2", "v3", "abc") rblf.soong_config_set(g, "NS2", "v3", "xyz") if rblf.board_platform_in(g, "board1 board2"): cfg["PRODUCT_PACKAGES"] += ["bad_package"] g["TARGET_BOARD_PLATFORM"] = "board1" if rblf.board_platform_in(g, "board1 board2"): cfg["PRODUCT_PACKAGES"] += ["board1_in"] if rblf.board_platform_in(g, ["board3","board2"]): cfg["PRODUCT_PACKAGES"] += ["bad_board_in"] if rblf.board_platform_is(g, "board1"): cfg["PRODUCT_PACKAGES"] += ["board1_is"] if rblf.board_platform_is(g, "board2"): cfg["PRODUCT_PACKAGES"] += ["bad_board1_is"]
tests/part1.rbc +2 −0 Original line number Diff line number Diff line Loading @@ -26,3 +26,5 @@ def init(g, handle): cfg["PRODUCT_COPY_FILES"] += ["part_from:part_to"] rblf.setdefault(handle, "PRODUCT_PRODUCT_PROPERTIES") cfg["PRODUCT_PRODUCT_PROPERTIES"] += ["part_properties"] rblf.soong_config_namespace(g, "NS1") rblf.soong_config_append(g, "NS1", "v1", "abc_part1")
tests/run.rbc +4 −2 Original line number Diff line number Diff line Loading @@ -69,7 +69,9 @@ assert_eq( "PRODUCT_PACKAGES": [ "dev", "inc", "dev_after" "dev_after", "board1_in", "board1_is", ], "PRODUCT_PRODUCT_PROPERTIES": ["part_properties"] }, Loading @@ -80,7 +82,7 @@ ns = globals["$SOONG_CONFIG_NAMESPACES"] assert_eq( { "NS1": { "v1": "abc", "v1": "abc abc_part1", "v2": "def" }, "NS2": { Loading