Loading core/product-graph.mk +4 −66 Original line number Diff line number Diff line Loading @@ -14,13 +14,10 @@ # limitations under the License. # # the foreach and the if remove the single space entries that creep in because of the evals # the sort also acts as a strip to remove the single space entries that creep in because of the evals define gather-all-products $(sort $(foreach p, \ $(eval _all_products_visited := ) $(call all-products-inner, $(PARENT_PRODUCT_FILES)) \ , $(if $(strip $(p)),$(strip $(p)),)) \ ) $(eval _all_products_visited := )\ $(sort $(call all-products-inner, $(PARENT_PRODUCT_FILES))) endef define all-products-inner Loading Loading @@ -72,7 +69,7 @@ define emit-product-node-props $(hide) echo \"$(1)\" [ \ label=\"$(dir $(1))\\n$(notdir $(1))\\n\\n$(subst $(close_parenthesis),,$(subst $(open_parethesis),,$(call get-product-var,$(1),PRODUCT_MODEL)))\\n$(call get-product-var,$(1),PRODUCT_DEVICE)\" \ style=\"filled\" fillcolor=\"$(strip $(call node-color,$(1)))\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" href=\"products/$(1).html\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" \ ] >> $(2) endef Loading @@ -95,66 +92,7 @@ else false endif # Evaluates to the name of the product file # $(1) product file define product-debug-filename $(OUT_DIR)/products/$(strip $(1)).html endef # Makes a rule for the product debug info # $(1) product file define transform-product-debug $(OUT_DIR)/products/$(strip $(1)).txt: $(this_makefile) @echo Product debug info file: $$@ $(hide) rm -f $$@ $(hide) mkdir -p $$(dir $$@) $(hide) echo 'FILE=$(strip $(1))' >> $$@ $(hide) echo 'PRODUCT_NAME=$(call get-product-var,$(1),PRODUCT_NAME)' >> $$@ $(hide) echo 'PRODUCT_MODEL=$(call get-product-var,$(1),PRODUCT_MODEL)' >> $$@ $(hide) echo 'PRODUCT_LOCALES=$(call get-product-var,$(1),PRODUCT_LOCALES)' >> $$@ $(hide) echo 'PRODUCT_AAPT_CONFIG=$(call get-product-var,$(1),PRODUCT_AAPT_CONFIG)' >> $$@ $(hide) echo 'PRODUCT_AAPT_PREF_CONFIG=$(call get-product-var,$(1),PRODUCT_AAPT_PREF_CONFIG)' >> $$@ $(hide) echo 'PRODUCT_PACKAGES=$(call get-product-var,$(1),PRODUCT_PACKAGES)' >> $$@ $(hide) echo 'PRODUCT_DEVICE=$(call get-product-var,$(1),PRODUCT_DEVICE)' >> $$@ $(hide) echo 'PRODUCT_MANUFACTURER=$(call get-product-var,$(1),PRODUCT_MANUFACTURER)' >> $$@ $(hide) echo 'PRODUCT_PROPERTY_OVERRIDES=$(call get-product-var,$(1),PRODUCT_PROPERTY_OVERRIDES)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_PROPERTY_OVERRIDES=$(call get-product-var,$(1),PRODUCT_DEFAULT_PROPERTY_OVERRIDES)' >> $$@ $(hide) echo 'PRODUCT_SYSTEM_DEFAULT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_SYSTEM_DEFAULT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_PRODUCT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_PRODUCT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_SYSTEM_EXT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_SYSTEM_EXT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_ODM_PROPERTIES=$(call get-product-var,$(1),PRODUCT_ODM_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_CHARACTERISTICS=$(call get-product-var,$(1),PRODUCT_CHARACTERISTICS)' >> $$@ $(hide) echo 'PRODUCT_COPY_FILES=$(call get-product-var,$(1),PRODUCT_COPY_FILES)' >> $$@ $(hide) echo 'PRODUCT_OTA_PUBLIC_KEYS=$(call get-product-var,$(1),PRODUCT_OTA_PUBLIC_KEYS)' >> $$@ $(hide) echo 'PRODUCT_EXTRA_OTA_KEYS=$(call get-product-var,$(1),PRODUCT_EXTRA_OTA_KEYS)' >> $$@ $(hide) echo 'PRODUCT_EXTRA_RECOVERY_KEYS=$(call get-product-var,$(1),PRODUCT_EXTRA_RECOVERY_KEYS)' >> $$@ $(hide) echo 'PRODUCT_PACKAGE_OVERLAYS=$(call get-product-var,$(1),PRODUCT_PACKAGE_OVERLAYS)' >> $$@ $(hide) echo 'DEVICE_PACKAGE_OVERLAYS=$(call get-product-var,$(1),DEVICE_PACKAGE_OVERLAYS)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_NAME=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_NAME)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_COPY_FILES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_COPY_FILES)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_COPY_MODULES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_COPY_MODULES)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_DOC_MODULES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_DOC_MODULES)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_WIFI_CHANNELS=$(call get-product-var,$(1),PRODUCT_DEFAULT_WIFI_CHANNELS)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_DEV_CERTIFICATE=$(call get-product-var,$(1),PRODUCT_DEFAULT_DEV_CERTIFICATE)' >> $$@ $(hide) echo 'PRODUCT_MAINLINE_SEPOLICY_DEV_CERTIFICATES=$(call get-product-var,$(1),PRODUCT_MAINLINE_SEPOLICY_DEV_CERTIFICATES)' >> $$@ $(hide) echo 'PRODUCT_RESTRICT_VENDOR_FILES=$(call get-product-var,$(1),PRODUCT_RESTRICT_VENDOR_FILES)' >> $$@ $(hide) echo 'PRODUCT_VENDOR_KERNEL_HEADERS=$(call get-product-var,$(1),PRODUCT_VENDOR_KERNEL_HEADERS)' >> $$@ $(call product-debug-filename, $(p)): \ $(OUT_DIR)/products/$(strip $(1)).txt \ build/make/tools/product_debug.py \ $(this_makefile) @echo Product debug html file: $$@ $(hide) mkdir -p $$(dir $$@) $(hide) cat $$< | build/make/tools/product_debug.py > $$@ endef ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH)$(RBC_BOARD_CONFIG)) product_debug_files:= $(foreach p,$(all_products), \ $(eval $(call transform-product-debug, $(p))) \ $(eval product_debug_files += $(call product-debug-filename, $(p))) \ ) .PHONY: product-graph product-graph: $(products_graph) Loading tools/product_debug.pydeleted 100755 → 0 +0 −159 Original line number Diff line number Diff line #!/usr/bin/env python # # Copyright (C) 2012 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import re import sys def break_lines(key, val): # these don't get split if key in ("PRODUCT_MODEL"): return (key,val) return (key, "\n".join(val.split())) def split_line(line): words = line.split("=", 1) if len(words) == 1: return (words[0], "") else: return (words[0], words[1]) def sort_lines(text): lines = text.split() lines.sort() return "\n".join(lines) def parse_variables(lines): return [split_line(line) for line in lines if line.strip()] def render_variables(variables): variables = dict(variables) del variables["FILE"] variables = list(variables.iteritems()) variables.sort(lambda a, b: cmp(a[0], b[0])) return ("<table id='variables'>" + "\n".join([ "<tr><th>%(key)s</th><td>%(val)s</td></tr>" % { "key": key, "val": val } for key,val in variables]) +"</table>") def linkify_inherit(variables, text, func_name): groups = re.split("(\\$\\(call " + func_name + ",.*\\))", text) result = "" for i in range(0,len(groups)/2): i = i * 2 result = result + groups[i] s = groups[i+1] href = s.split(",", 1)[1].strip()[:-1] href = href.replace("$(SRC_TARGET_DIR)", "build/target") href = ("../" * variables["FILE"].count("/")) + href + ".html" result = result + "<a href=\"%s\">%s</a>" % (href,s) result = result + groups[-1] return result def render_original(variables, text): text = linkify_inherit(variables, text, "inherit-product") text = linkify_inherit(variables, text, "inherit-product-if-exists") return text def read_file(fn): f = file(fn) text = f.read() f.close() return text def main(argv): # read the variables lines = sys.stdin.readlines() variables = parse_variables(lines) # format the variables variables = [break_lines(key,val) for key,val in variables] # now it's a dict variables = dict(variables) sorted_vars = ( "PRODUCT_COPY_FILES", "PRODUCT_PACKAGES", "PRODUCT_LOCALES", "PRODUCT_PROPERTY_OVERRIDES", ) for key in sorted_vars: variables[key] = sort_lines(variables[key]) # the original file original = read_file(variables["FILE"]) # formatting values = dict(variables) values.update({ "variables": render_variables(variables), "original": render_original(variables, original), }) print """<html> <head> <title>%(FILE)s</title> <style type="text/css"> body { font-family: Helvetica, Arial, sans-serif; padding-bottom: 20px; } #variables { border-collapse: collapse; } #variables th, #variables td { vertical-align: top; text-align: left; border-top: 1px solid #c5cdde; border-bottom: 1px solid #c5cdde; padding: 2px 10px 2px 10px; } #variables th { font-size: 10pt; background-color: #e2ecff } #variables td { background-color: #ebf2ff; white-space: pre; font-size: 10pt; } #original { background-color: #ebf2ff; border-top: 1px solid #c5cdde; border-bottom: 1px solid #c5cdde; padding: 2px 10px 2px 10px; white-space: pre; font-size: 10pt; } </style> </head> <body> <h1>%(FILE)s</h1> <a href="#Original">Original</a> <a href="#Variables">Variables</a> <h2><a name="Original"></a>Original</h2> <div id="original">%(original)s</div> <h2><a name="Variables"></a>Variables</h2> %(variables)s </body> </html> """ % values if __name__ == "__main__": main(sys.argv) Loading
core/product-graph.mk +4 −66 Original line number Diff line number Diff line Loading @@ -14,13 +14,10 @@ # limitations under the License. # # the foreach and the if remove the single space entries that creep in because of the evals # the sort also acts as a strip to remove the single space entries that creep in because of the evals define gather-all-products $(sort $(foreach p, \ $(eval _all_products_visited := ) $(call all-products-inner, $(PARENT_PRODUCT_FILES)) \ , $(if $(strip $(p)),$(strip $(p)),)) \ ) $(eval _all_products_visited := )\ $(sort $(call all-products-inner, $(PARENT_PRODUCT_FILES))) endef define all-products-inner Loading Loading @@ -72,7 +69,7 @@ define emit-product-node-props $(hide) echo \"$(1)\" [ \ label=\"$(dir $(1))\\n$(notdir $(1))\\n\\n$(subst $(close_parenthesis),,$(subst $(open_parethesis),,$(call get-product-var,$(1),PRODUCT_MODEL)))\\n$(call get-product-var,$(1),PRODUCT_DEVICE)\" \ style=\"filled\" fillcolor=\"$(strip $(call node-color,$(1)))\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" href=\"products/$(1).html\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" \ ] >> $(2) endef Loading @@ -95,66 +92,7 @@ else false endif # Evaluates to the name of the product file # $(1) product file define product-debug-filename $(OUT_DIR)/products/$(strip $(1)).html endef # Makes a rule for the product debug info # $(1) product file define transform-product-debug $(OUT_DIR)/products/$(strip $(1)).txt: $(this_makefile) @echo Product debug info file: $$@ $(hide) rm -f $$@ $(hide) mkdir -p $$(dir $$@) $(hide) echo 'FILE=$(strip $(1))' >> $$@ $(hide) echo 'PRODUCT_NAME=$(call get-product-var,$(1),PRODUCT_NAME)' >> $$@ $(hide) echo 'PRODUCT_MODEL=$(call get-product-var,$(1),PRODUCT_MODEL)' >> $$@ $(hide) echo 'PRODUCT_LOCALES=$(call get-product-var,$(1),PRODUCT_LOCALES)' >> $$@ $(hide) echo 'PRODUCT_AAPT_CONFIG=$(call get-product-var,$(1),PRODUCT_AAPT_CONFIG)' >> $$@ $(hide) echo 'PRODUCT_AAPT_PREF_CONFIG=$(call get-product-var,$(1),PRODUCT_AAPT_PREF_CONFIG)' >> $$@ $(hide) echo 'PRODUCT_PACKAGES=$(call get-product-var,$(1),PRODUCT_PACKAGES)' >> $$@ $(hide) echo 'PRODUCT_DEVICE=$(call get-product-var,$(1),PRODUCT_DEVICE)' >> $$@ $(hide) echo 'PRODUCT_MANUFACTURER=$(call get-product-var,$(1),PRODUCT_MANUFACTURER)' >> $$@ $(hide) echo 'PRODUCT_PROPERTY_OVERRIDES=$(call get-product-var,$(1),PRODUCT_PROPERTY_OVERRIDES)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_PROPERTY_OVERRIDES=$(call get-product-var,$(1),PRODUCT_DEFAULT_PROPERTY_OVERRIDES)' >> $$@ $(hide) echo 'PRODUCT_SYSTEM_DEFAULT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_SYSTEM_DEFAULT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_PRODUCT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_PRODUCT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_SYSTEM_EXT_PROPERTIES=$(call get-product-var,$(1),PRODUCT_SYSTEM_EXT_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_ODM_PROPERTIES=$(call get-product-var,$(1),PRODUCT_ODM_PROPERTIES)' >> $$@ $(hide) echo 'PRODUCT_CHARACTERISTICS=$(call get-product-var,$(1),PRODUCT_CHARACTERISTICS)' >> $$@ $(hide) echo 'PRODUCT_COPY_FILES=$(call get-product-var,$(1),PRODUCT_COPY_FILES)' >> $$@ $(hide) echo 'PRODUCT_OTA_PUBLIC_KEYS=$(call get-product-var,$(1),PRODUCT_OTA_PUBLIC_KEYS)' >> $$@ $(hide) echo 'PRODUCT_EXTRA_OTA_KEYS=$(call get-product-var,$(1),PRODUCT_EXTRA_OTA_KEYS)' >> $$@ $(hide) echo 'PRODUCT_EXTRA_RECOVERY_KEYS=$(call get-product-var,$(1),PRODUCT_EXTRA_RECOVERY_KEYS)' >> $$@ $(hide) echo 'PRODUCT_PACKAGE_OVERLAYS=$(call get-product-var,$(1),PRODUCT_PACKAGE_OVERLAYS)' >> $$@ $(hide) echo 'DEVICE_PACKAGE_OVERLAYS=$(call get-product-var,$(1),DEVICE_PACKAGE_OVERLAYS)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_NAME=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_NAME)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_COPY_FILES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_COPY_FILES)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_COPY_MODULES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_COPY_MODULES)' >> $$@ $(hide) echo 'PRODUCT_SDK_ADDON_DOC_MODULES=$(call get-product-var,$(1),PRODUCT_SDK_ADDON_DOC_MODULES)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_WIFI_CHANNELS=$(call get-product-var,$(1),PRODUCT_DEFAULT_WIFI_CHANNELS)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_DEV_CERTIFICATE=$(call get-product-var,$(1),PRODUCT_DEFAULT_DEV_CERTIFICATE)' >> $$@ $(hide) echo 'PRODUCT_MAINLINE_SEPOLICY_DEV_CERTIFICATES=$(call get-product-var,$(1),PRODUCT_MAINLINE_SEPOLICY_DEV_CERTIFICATES)' >> $$@ $(hide) echo 'PRODUCT_RESTRICT_VENDOR_FILES=$(call get-product-var,$(1),PRODUCT_RESTRICT_VENDOR_FILES)' >> $$@ $(hide) echo 'PRODUCT_VENDOR_KERNEL_HEADERS=$(call get-product-var,$(1),PRODUCT_VENDOR_KERNEL_HEADERS)' >> $$@ $(call product-debug-filename, $(p)): \ $(OUT_DIR)/products/$(strip $(1)).txt \ build/make/tools/product_debug.py \ $(this_makefile) @echo Product debug html file: $$@ $(hide) mkdir -p $$(dir $$@) $(hide) cat $$< | build/make/tools/product_debug.py > $$@ endef ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH)$(RBC_BOARD_CONFIG)) product_debug_files:= $(foreach p,$(all_products), \ $(eval $(call transform-product-debug, $(p))) \ $(eval product_debug_files += $(call product-debug-filename, $(p))) \ ) .PHONY: product-graph product-graph: $(products_graph) Loading
tools/product_debug.pydeleted 100755 → 0 +0 −159 Original line number Diff line number Diff line #!/usr/bin/env python # # Copyright (C) 2012 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import re import sys def break_lines(key, val): # these don't get split if key in ("PRODUCT_MODEL"): return (key,val) return (key, "\n".join(val.split())) def split_line(line): words = line.split("=", 1) if len(words) == 1: return (words[0], "") else: return (words[0], words[1]) def sort_lines(text): lines = text.split() lines.sort() return "\n".join(lines) def parse_variables(lines): return [split_line(line) for line in lines if line.strip()] def render_variables(variables): variables = dict(variables) del variables["FILE"] variables = list(variables.iteritems()) variables.sort(lambda a, b: cmp(a[0], b[0])) return ("<table id='variables'>" + "\n".join([ "<tr><th>%(key)s</th><td>%(val)s</td></tr>" % { "key": key, "val": val } for key,val in variables]) +"</table>") def linkify_inherit(variables, text, func_name): groups = re.split("(\\$\\(call " + func_name + ",.*\\))", text) result = "" for i in range(0,len(groups)/2): i = i * 2 result = result + groups[i] s = groups[i+1] href = s.split(",", 1)[1].strip()[:-1] href = href.replace("$(SRC_TARGET_DIR)", "build/target") href = ("../" * variables["FILE"].count("/")) + href + ".html" result = result + "<a href=\"%s\">%s</a>" % (href,s) result = result + groups[-1] return result def render_original(variables, text): text = linkify_inherit(variables, text, "inherit-product") text = linkify_inherit(variables, text, "inherit-product-if-exists") return text def read_file(fn): f = file(fn) text = f.read() f.close() return text def main(argv): # read the variables lines = sys.stdin.readlines() variables = parse_variables(lines) # format the variables variables = [break_lines(key,val) for key,val in variables] # now it's a dict variables = dict(variables) sorted_vars = ( "PRODUCT_COPY_FILES", "PRODUCT_PACKAGES", "PRODUCT_LOCALES", "PRODUCT_PROPERTY_OVERRIDES", ) for key in sorted_vars: variables[key] = sort_lines(variables[key]) # the original file original = read_file(variables["FILE"]) # formatting values = dict(variables) values.update({ "variables": render_variables(variables), "original": render_original(variables, original), }) print """<html> <head> <title>%(FILE)s</title> <style type="text/css"> body { font-family: Helvetica, Arial, sans-serif; padding-bottom: 20px; } #variables { border-collapse: collapse; } #variables th, #variables td { vertical-align: top; text-align: left; border-top: 1px solid #c5cdde; border-bottom: 1px solid #c5cdde; padding: 2px 10px 2px 10px; } #variables th { font-size: 10pt; background-color: #e2ecff } #variables td { background-color: #ebf2ff; white-space: pre; font-size: 10pt; } #original { background-color: #ebf2ff; border-top: 1px solid #c5cdde; border-bottom: 1px solid #c5cdde; padding: 2px 10px 2px 10px; white-space: pre; font-size: 10pt; } </style> </head> <body> <h1>%(FILE)s</h1> <a href="#Original">Original</a> <a href="#Variables">Variables</a> <h2><a name="Original"></a>Original</h2> <div id="original">%(original)s</div> <h2><a name="Variables"></a>Variables</h2> %(variables)s </body> </html> """ % values if __name__ == "__main__": main(sys.argv)