From bd2b0c78a1cead7a77bd7a4ec577344ce7e1bb1a Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Mon, 10 Sep 2018 16:39:56 +0000 Subject: [PATCH] Revert "Check if current ld.config.txt files is backward compatible" This reverts commit 15bac6bdaffb631038cad0589149f4971c918550. Reason for revert: This caused build errors in mac_sdk build. Seems that our mac builders do not have python3. env: python3: No such file or directory Bug: 112738739 Bug: 111417344 Test: presubmit Change-Id: I9796f2e9a54a66fc7a4e1c780c8c272b98ed437f --- rootdir/Android.mk | 2 - .../ld_config_backward_compatibility_check.py | 177 ------------------ rootdir/update_and_install_ld_config.mk | 13 -- 3 files changed, 192 deletions(-) delete mode 100755 rootdir/ld_config_backward_compatibility_check.py diff --git a/rootdir/Android.mk b/rootdir/Android.mk index b68dc341a..07f079722 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -206,7 +206,6 @@ ifeq ($(_enforce_vndk_at_runtime),true) LOCAL_MODULE_STEM := $(call append_vndk_version,$(LOCAL_MODULE)) include $(BUILD_SYSTEM)/base_rules.mk ld_config_template := $(LOCAL_PATH)/etc/ld.config.txt -check_backward_compatibility := true vndk_version := $(PLATFORM_VNDK_VERSION) include $(LOCAL_PATH)/update_and_install_ld_config.mk @@ -244,7 +243,6 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) LOCAL_MODULE_STEM := $$(LOCAL_MODULE) include $(BUILD_SYSTEM)/base_rules.mk ld_config_template := $(LOCAL_PATH)/etc/ld.config.txt -check_backward_compatibility := true vndk_version := $(1) lib_list_from_prebuilts := true include $(LOCAL_PATH)/update_and_install_ld_config.mk diff --git a/rootdir/ld_config_backward_compatibility_check.py b/rootdir/ld_config_backward_compatibility_check.py deleted file mode 100755 index 804ef884d..000000000 --- a/rootdir/ld_config_backward_compatibility_check.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2018 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 glob -import os.path -import re -import sys - -PREBUILTS_VNDK_DIR = "prebuilts/vndk" -VENDOR_DIRECTORIES = ('/vendor', '/odm') - -def find_latest_vndk_snapshot_version(): - """Returns latest vndk snapshot version in current source tree. - It will skip the test if the snapshot directories are not found. - - Returns: - latest_version: string - """ - vndk_dir_list = glob.glob(PREBUILTS_VNDK_DIR + "/v*") - if not vndk_dir_list: - """Exit without error because we may have source trees that do not include - VNDK snapshot directories in it. - """ - sys.exit(0) - vndk_ver_list = [re.match(r".*/v(\d+)", vndk_dir).group(1) - for vndk_dir in vndk_dir_list] - latest_version = max(vndk_ver_list) - if latest_version == '27': - """Exit without error because VNDK v27 is not using ld.config.txt template - """ - sys.exit(0) - return latest_version - -def get_vendor_configuration(ld_config_file): - """Reads the ld.config.txt file to parse the namespace configurations. - It finds the configurations that include vendor directories. - - Args: - ld_config_file: string, path (relative to build top) of the ld.config.txt - file. - Returns: - configs: dict{string:[string]}, dictionary of namespace configurations. - it has 'section + property' names as keys and the directory list - as values. - """ - try: - conf_file = open(ld_config_file) - except IOError: - print("error: could not read %s" % ld_config_file) - sys.exit(1) - - configs = dict() - current_section = None - - with conf_file: - for line in conf_file: - # ignore comments - found = line.find('#') - if found != -1: - line = line[:found] - line = line.strip() - if not line: - continue - - if line[0] == '[' and line[-1] == ']': - # new section started - current_section = line[1:-1] - continue - - if current_section == None: - continue - - found = line.find('+=') - opr_len = 2 - if found == -1: - found = line.find('=') - opr_len = 1 - if found == -1: - continue - - namespace = line[:found].strip() - if not namespace.endswith(".paths"): - # check ".paths" only - continue - namespace = '[' + current_section + ']' + namespace - values = line[found + opr_len:].strip() - directories = values.split(':') - - for directory in directories: - if any(vendor_dir in directory for vendor_dir in VENDOR_DIRECTORIES): - if namespace in configs: - configs[namespace].append(directory) - else: - configs[namespace] = [directory] - - return configs - -def get_snapshot_config(version): - """Finds the ld.config.{version}.txt file from the VNDK snapshot directory. - In the vndk prebuilt directory (prebuilts/vndk/v{version}), it searches - {arch}/configs/ld.config.{version}.txt file, where {arch} is one of ('arm64', - 'arm', 'x86_64', 'x86'). - - Args: - version: string, the VNDK snapshot version to search. - Returns: - ld_config_file: string, relative path to ld.config.{version}.txt - """ - arch_list = ('arm64', 'arm', 'x86_64', 'x86') - for arch in arch_list: - ld_config_file = (PREBUILTS_VNDK_DIR - + "/v{0}/{1}/configs/ld.config.{0}.txt".format(version, arch)) - if os.path.isfile(ld_config_file): - return ld_config_file - print("error: cannot find ld.config.{0}.txt file in snapshot v{0}" - .format(version)) - sys.exit(1) - -def check_backward_compatibility(ld_config, vndk_snapshot_version): - """Checks backward compatibility for current ld.config.txt file with the - old ld.config.txt file. If any of the vendor directories in the old namespace - configurations are missing, the test will fail. It is allowed to have new - vendor directories in current ld.config.txt file. - - Args: - ld_config: string, relative path to current ld.config.txt file. - vndk_snapshot_version: string, the VNDK snapshot version that has an old - ld.config.txt file to compare. - Returns: - result: bool, True if the current configuration is backward compatible. - """ - current_config = get_vendor_configuration(ld_config) - old_config = get_vendor_configuration( - get_snapshot_config(vndk_snapshot_version)) - for namespace in old_config: - if namespace not in current_config: - print("error: cannot find %s which was provided in ld.config.%s.txt" - % (namespace, vndk_snapshot_version)) - return False - for path in old_config[namespace]: - if not path in current_config[namespace]: - print("error: %s for %s in ld.config.%s.txt are missing in %s" - % (path, namespace, vndk_snapshot_version, ld_config)) - return False - return True - -def main(): - if len(sys.argv) != 2: - print ("Usage: %s target_ld_config_txt_file_name" % sys.argv[0]) - sys.exit(1) - - latest_vndk_snapshot_version = find_latest_vndk_snapshot_version() - if not check_backward_compatibility(sys.argv[1], - latest_vndk_snapshot_version): - print("error: %s has backward incompatible changes to old " - "vendor partition." % sys.argv[1]) - sys.exit(1) - - # Current ld.config.txt file is backward compatible - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/rootdir/update_and_install_ld_config.mk b/rootdir/update_and_install_ld_config.mk index 56a30b271..4d6df77ae 100644 --- a/rootdir/update_and_install_ld_config.mk +++ b/rootdir/update_and_install_ld_config.mk @@ -18,13 +18,10 @@ # Read inputs ld_config_template := $(strip $(ld_config_template)) -check_backward_compatibility := $(strip $(check_backward_compatibility)) vndk_version := $(strip $(vndk_version)) lib_list_from_prebuilts := $(strip $(lib_list_from_prebuilts)) libz_is_llndk := $(strip $(libz_is_llndk)) -compatibility_check_script := \ - $(LOCAL_PATH)/ld_config_backward_compatibility_check.py intermediates_dir := $(call intermediates-dir-for,ETC,$(LOCAL_MODULE)) library_lists_dir := $(intermediates_dir) ifeq ($(lib_list_from_prebuilts),true) @@ -85,19 +82,11 @@ $(LOCAL_BUILT_MODULE): PRIVATE_VNDK_PRIVATE_LIBRARIES_FILE := $(vndkprivate_libr $(LOCAL_BUILT_MODULE): PRIVATE_SANITIZER_RUNTIME_LIBRARIES := $(sanitizer_runtime_libraries) $(LOCAL_BUILT_MODULE): PRIVATE_VNDK_VERSION_SUFFIX := $(vndk_version_suffix) $(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES_DIR := $(intermediates_dir) -$(LOCAL_BUILT_MODULE): PRIVATE_COMP_CHECK_SCRIPT := $(compatibility_check_script) deps := $(llndk_libraries_file) $(vndksp_libraries_file) $(vndkcore_libraries_file) \ $(vndkprivate_libraries_file) -ifeq ($(check_backward_compatibility),true) -deps += $(compatibility_check_script) -endif $(LOCAL_BUILT_MODULE): $(ld_config_template) $(deps) @echo "Generate: $< -> $@" -ifeq ($(check_backward_compatibility),true) - @echo "Checking backward compatibility..." - $(hide) $(PRIVATE_COMP_CHECK_SCRIPT) $< -endif @mkdir -p $(dir $@) $(call private-filter-out-private-libs,$(PRIVATE_LLNDK_LIBRARIES_FILE),$(PRIVATE_INTERMEDIATES_DIR)/llndk_filtered) $(hide) sed -e "s?%LLNDK_LIBRARIES%?$$(cat $(PRIVATE_INTERMEDIATES_DIR)/llndk_filtered)?g" $< >$@ @@ -119,11 +108,9 @@ endif $(hide) rm -f $@.bak ld_config_template := -check_backward_compatibility := vndk_version := lib_list_from_prebuilts := libz_is_llndk := -compatibility_check_script := intermediates_dir := library_lists_dir := llndk_libraries_file :=