| # |
| # Copyright (C) 2024 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. |
| # |
| |
| # Create a directory for the results and a nested temporary directory. |
| mkdir -p $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/tmp |
| |
| # Create a copy of `AndroidGlobalLintChecker.jar` to restore it afterwards. |
| cp $ANDROID_BUILD_TOP/prebuilts/cmdline-tools/AndroidGlobalLintChecker.jar \ |
| $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/AndroidGlobalLintChecker.jar |
| |
| # Configure the environment variable required for running the lint check on the entire source tree. |
| export ANDROID_LINT_CHECK=PermissionAnnotationExemptAidlInterfaces |
| |
| # Build the target corresponding to the lint checks present in the `utils` directory. |
| m AndroidUtilsLintChecker |
| |
| # Replace `AndroidGlobalLintChecker.jar` with the newly built `jar` file. |
| cp $ANDROID_BUILD_TOP/out/host/linux-x86/framework/AndroidUtilsLintChecker.jar \ |
| $ANDROID_BUILD_TOP/prebuilts/cmdline-tools/AndroidGlobalLintChecker.jar; |
| |
| # Run the lint check on the entire source tree. |
| m lint-check |
| |
| # Copy the archive containing the results of `lint-check` into the temporary directory. |
| cp $ANDROID_BUILD_TOP/out/soong/lint-report-text.zip \ |
| $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/tmp |
| |
| cd $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/tmp |
| |
| # Unzip the archive containing the results of `lint-check`. |
| unzip lint-report-text.zip |
| |
| # Concatenate the results of `lint-check` into a single string. |
| concatenated_reports=$(find . -type f | xargs cat) |
| |
| # Extract the fully qualified names of the AIDL Interfaces from the concatenated results. Output |
| # this list into `out/soong/exempt_aidl_interfaces_generator_output/exempt_aidl_interfaces`. |
| echo $concatenated_reports | grep -Eo '\"([a-zA-Z0-9_]*\.)+[a-zA-Z0-9_]*\",' | sort | uniq > ../exempt_aidl_interfaces |
| |
| # Remove the temporary directory. |
| rm -rf $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/tmp |
| |
| # Restore the original copy of `AndroidGlobalLintChecker.jar` and delete the copy. |
| cp $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/AndroidGlobalLintChecker.jar \ |
| $ANDROID_BUILD_TOP/prebuilts/cmdline-tools/AndroidGlobalLintChecker.jar |
| rm $ANDROID_BUILD_TOP/out/soong/exempt_aidl_interfaces_generator_output/AndroidGlobalLintChecker.jar |