aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2015-10-28 14:33:40 -0700
committerYing Wang <wangying@google.com>2015-10-28 15:20:41 -0700
commita17426104219f3c06244f92d73b6c938949d0fe3 (patch)
tree4ae96fc8323b274c3a79aa84a6536a81ffb86183
parentdda5e96b144c15a75d625ceac7e92b50cf9c363a (diff)
downloadbuild-a17426104219f3c06244f92d73b6c938949d0fe3.tar.gz
Normalize the product makefile path in inherit-product.
Some vendor product makefiles call $(inherit-product) on the same product makefile with different paths, by using "../" in relative paths. However inherit-product requires unique path as ID for a product makefile, for bookkeeping purpose. Normalize the product makefile path in inherit-product, if the path contains "../". Change-Id: I1a864ce120c713d8e79ec179213b9fc9352aba53
-rw-r--r--core/config.mk12
-rw-r--r--core/product.mk7
-rwxr-xr-xtools/normalize_path.py7
3 files changed, 21 insertions, 5 deletions
diff --git a/core/config.mk b/core/config.mk
index 680a16906f..10c66f50cd 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -113,6 +113,16 @@ BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY := $(BUILD_SYSTEM)/host_dalvik_static_java
SHOW_COMMANDS:= $(filter showcommands,$(MAKECMDGOALS))
hide := $(if $(SHOW_COMMANDS),,@)
+################################################################
+# Tools needed in product configuration makefiles.
+################################################################
+NORMALIZE_PATH := build/tools/normalize_path.py
+
+# $(1): the paths to be normalized
+define normalize-paths
+$(if $(1),$(shell $(NORMALIZE_PATH) $(1)))
+endef
+
# ###############################################################
# Set common values
# ###############################################################
@@ -550,8 +560,6 @@ else
MD5SUM:=md5sum
endif
-NORMALIZE_PATH := build/tools/normalize_path.py
-
APICHECK_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
APICHECK_CLASSPATH := $(APICHECK_CLASSPATH):$(HOST_OUT_JAVA_LIBRARIES)/doclava$(COMMON_JAVA_PACKAGE_SUFFIX)
APICHECK_CLASSPATH := $(APICHECK_CLASSPATH):$(HOST_OUT_JAVA_LIBRARIES)/jsilver$(COMMON_JAVA_PACKAGE_SUFFIX)
diff --git a/core/product.mk b/core/product.mk
index f242e829d0..a9af325541 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -133,11 +133,14 @@ endef
# 3. Records that we've visited this node, in ALL_PRODUCTS
#
define inherit-product
+ $(if $(findstring ../,$(1)),\
+ $(eval np := $(call normalize-paths,$(1))),\
+ $(eval np := $(strip $(1))))\
$(foreach v,$(_product_var_list), \
- $(eval $(v) := $($(v)) $(INHERIT_TAG)$(strip $(1)))) \
+ $(eval $(v) := $($(v)) $(INHERIT_TAG)$(np))) \
$(eval inherit_var := \
PRODUCTS.$(strip $(word 1,$(_include_stack))).INHERITS_FROM) \
- $(eval $(inherit_var) := $(sort $($(inherit_var)) $(strip $(1)))) \
+ $(eval $(inherit_var) := $(sort $($(inherit_var)) $(np))) \
$(eval inherit_var:=) \
$(eval ALL_PRODUCTS := $(sort $(ALL_PRODUCTS) $(word 1,$(_include_stack))))
endef
diff --git a/tools/normalize_path.py b/tools/normalize_path.py
index 1b3d42e64c..6c4d5486dc 100755
--- a/tools/normalize_path.py
+++ b/tools/normalize_path.py
@@ -14,11 +14,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
"""
-Normalize and output paths read from stdin.
+Normalize and output paths from arguments, or stdin if no arguments provided.
"""
import os.path
import sys
+if len(sys.argv) > 1:
+ for p in sys.argv[1:]:
+ print os.path.normpath(p)
+ sys.exit(0)
+
for line in sys.stdin:
print os.path.normpath(line.strip())