Freeze VNDK lib list on release platforms
The list of VNDK libraries that exist in the source tree is compared against the latest known list. If they are different, build breaks. The latest list can be updated by running update-vndk-list.sh but it is allowed only for development branches (i.e. PLATFORM_VERSION_CODENAME != REL). Bug: 67002788 Test: build 2017 pixel devices Test: m check-vndk-list Test: update-vndk-list.sh Change-Id: I4bae2b647c045b11ac7d587fab48067bf53a7cf4
This commit is contained in:
parent
96929d691e
commit
3b6c916194
target/product/vndk
|
@ -1,7 +1,101 @@
|
|||
ifneq ($(BOARD_VNDK_VERSION),)
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
#####################################################################
|
||||
# Setting the VNDK version. Version is 10000.0 for not-yet-published
|
||||
# platform and xx.y for released platform.
|
||||
vndk_major_ver := 10000
|
||||
vndk_minor_ver := 0
|
||||
|
||||
#TODO(b/68027291): Revive this check when we have stable VNDK in P or later.
|
||||
#ifneq ($(vndk_major_ver), $(PLATFORM_SDK_VERSION))
|
||||
#$(error vndk_major_version does not match PLATFORM_SDK_VERSION, please update.)
|
||||
#endif
|
||||
|
||||
ifneq (REL,$(PLATFORM_VERSION_CODENAME))
|
||||
vndk_major_ver := 10000
|
||||
vndk_minor_ver := 0
|
||||
endif
|
||||
PLATFORM_VNDK_VERSION := $(vndk_major_ver).$(vndk_minor_ver)
|
||||
vndk_major_ver :=
|
||||
vndk_minor_ver :=
|
||||
|
||||
#####################################################################
|
||||
# Create the list of vndk libraries from the source code.
|
||||
INTERNAL_VNDK_LIB_LIST := $(call intermediates-dir-for,PACKAGING,vndk)/libs.txt
|
||||
$(INTERNAL_VNDK_LIB_LIST):
|
||||
@echo "Generate: $@"
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) echo -n > $@
|
||||
$(hide) $(foreach lib, $(LLNDK_LIBRARIES), \
|
||||
echo LLNDK: $(lib).so >> $@;)
|
||||
$(hide) $(foreach lib, $(VNDK_SAMEPROCESS_LIBRARIES), \
|
||||
echo VNDK-SP: $(lib).so >> $@;)
|
||||
$(hide) $(foreach lib, $(VNDK_CORE_LIBRARIES), \
|
||||
echo VNDK-core: $(lib).so >> $@;)
|
||||
$(hide) $(foreach lib, $(VNDK_PRIVATE_LIBRARIES), \
|
||||
echo VNDK-private: $(lib).so >> $@;)
|
||||
|
||||
#####################################################################
|
||||
# This is the up-to-date list of vndk libs.
|
||||
# TODO(b/62012285): the lib list should be stored somewhere under
|
||||
# /prebuilts/vndk
|
||||
LATEST_VNDK_LIB_LIST := $(LOCAL_PATH)/$(PLATFORM_VNDK_VERSION).txt
|
||||
|
||||
#####################################################################
|
||||
# Check the generate list against the latest list stored in the
|
||||
# source tree
|
||||
.PHONY: check-vndk-list
|
||||
|
||||
ifeq (REL,$(PLATFORM_VERSION_CODENAME))
|
||||
# The check is enforced in release branches
|
||||
droidcore: check-vndk-list
|
||||
endif
|
||||
|
||||
check-vndk-list-timestamp := $(call intermediates-dir-for,PACKAGING,vndk)/check-list-timestamp
|
||||
check-vndk-list: $(check-vndk-list-timestamp)
|
||||
|
||||
_vndk_check_failure_message := "VNDK library list has changed."
|
||||
ifeq (REL,$(PLATFORM_VERSION_CODENAME)
|
||||
_vndk_check_failure_message += "This isn't allowed in API locked branches."
|
||||
else
|
||||
_vndk_check_failure_message += "Run update-vndk-list.sh to update the list."
|
||||
endif
|
||||
|
||||
$(check-vndk-list-timestamp): $(INTERNAL_VNDK_LIB_LIST) $(LATEST_VNDK_LIB_LIST) $(HOST_OUT_EXECUTABLES)/update-vndk-list.sh
|
||||
$(hide) ( diff --old-line-format="Removed %L" \
|
||||
--new-line-format="Added %L" \
|
||||
--unchanged-line-format="" \
|
||||
$(LATEST_VNDK_LIB_LIST) $(INTERNAL_VNDK_LIB_LIST) \
|
||||
|| ( echo $(_vndk_check_failure_message); exit 1 ))
|
||||
$(hide) mkdir -p $(dir $@)
|
||||
$(hide) touch $@
|
||||
|
||||
#####################################################################
|
||||
# Script to update the latest VNDK lib list
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := update-vndk-list.sh
|
||||
LOCAL_MODULE_CLASS := EXECUTABLES
|
||||
LOCAL_MODULE_STEM := $(LOCAL_MODULE)
|
||||
LOCAL_IS_HOST_MODULE := true
|
||||
include $(BUILD_SYSTEM)/base_rules.mk
|
||||
$(LOCAL_BUILT_MODULE): PRIVATE_INTERNAL_VNDK_LIB_LIST := $(INTERNAL_VNDK_LIB_LIST)
|
||||
$(LOCAL_BUILT_MODULE): PRIVATE_LATEST_VNDK_LIB_LIST := $(LATEST_VNDK_LIB_LIST)
|
||||
$(LOCAL_BUILT_MODULE):
|
||||
@echo "Generate: $@"
|
||||
@mkdir -p $(dir $@)
|
||||
@rm -f $@
|
||||
$(hide) echo "#!/bin/bash" > $@
|
||||
ifeq (REL,$(PLATFORM_VERSION_CODENAME))
|
||||
$(hide) echo "echo Updating VNDK library list is NOT allowed in API locked branches." >> $@; \
|
||||
echo "exit 1" >> $@
|
||||
else
|
||||
$(hide) echo "cp $(PRIVATE_INTERNAL_VNDK_LIB_LIST) $(PRIVATE_LATEST_VNDK_LIB_LIST)" >> $@; \
|
||||
echo "echo $(PRIVATE_LATEST_VNDK_LIB_LIST) updated." >> $@
|
||||
endif
|
||||
@chmod a+x $@
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := vndk_package
|
||||
LOCAL_REQUIRED_MODULES := \
|
||||
$(addsuffix .vendor,$(VNDK_CORE_LIBRARIES)) \
|
||||
|
@ -9,3 +103,4 @@ LOCAL_REQUIRED_MODULES := \
|
|||
$(LLNDK_LIBRARIES)
|
||||
|
||||
include $(BUILD_PHONY_PACKAGE)
|
||||
endif # BOARD_VNDK_VERSION is set
|
||||
|
|
Loading…
Reference in New Issue