summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2018-11-28 12:22:14 +0000
committerPaul Duffin <paulduffin@google.com>2018-11-29 09:41:56 +0000
commit00537c15e876d88a967d9f656ea8fadb1a4015ef (patch)
tree6a3f41d6b9b7b55dfa68029d7c8697a4c8b098c3
parent900ab8accef15f3a7622f0edccd53e99c44c03b7 (diff)
Prevent hiddenapi entries being added for libcore related projects
The libcore related projects (see below) have been (mostly) switched over to use UnsupportedAppUsage annotations, This change will prevent entries for those projects being added to a config/hiddenapi-* file. * libcore * external/bouncycastle * external/conscrypt * external/icu * external/okhttp * external/libphonenumber - still has a couple of entries in config/hiddenapi-light-greylist.txt due to limitations in UnsupportedAppUsage/class2greylist. Tested by attempting to upload the file with entries for libcore projects and without those entries and checking that the behavior is expected. Test: see above Bug: 117818301 Change-Id: I67a30b307e12e842b28cfb2160fab0029868fa06
-rw-r--r--PREUPLOAD.cfg4
-rwxr-xr-xtools/hiddenapi/exclude.sh57
2 files changed, 60 insertions, 1 deletions
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 01df817ead56..e061b1548e58 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -13,7 +13,9 @@ api_lint_hook = ${REPO_ROOT}/frameworks/base/tools/apilint/apilint_sha.sh ${PREU
strings_lint_hook = ${REPO_ROOT}/frameworks/base/tools/stringslint/stringslint_sha.sh ${PREUPLOAD_COMMIT}
-hidden_api_txt_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/checksorted_sha.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
+hidden_api_txt_checksorted_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/checksorted_sha.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
+
+hidden_api_txt_exclude_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/exclude.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT}
owners_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "OWNERS$"
diff --git a/tools/hiddenapi/exclude.sh b/tools/hiddenapi/exclude.sh
new file mode 100755
index 000000000000..2291e5a92730
--- /dev/null
+++ b/tools/hiddenapi/exclude.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -e
+# Make sure that entries are not added for packages that are already fully handled using
+# annotations.
+LOCAL_DIR="$( dirname ${BASH_SOURCE} )"
+# Each team should add a <team>_PACKAGES and <team>_EMAIL with the list of packages and
+# the team email to use in the event of this detecting an entry in a <team> package. Also
+# add <team> to the TEAMS list.
+LIBCORE_PACKAGES="\
+ android.icu \
+ android.system \
+ com.android.bouncycastle \
+ com.android.conscrypt \
+ com.android.okhttp \
+ com.sun \
+ dalvik \
+ java \
+ javax \
+ libcore \
+ org.apache.harmony \
+ org.json \
+ org.w3c.dom \
+ org.xml.sax \
+ sun \
+ "
+LIBCORE_EMAIL=libcore-team@android.com
+
+# List of teams.
+TEAMS=LIBCORE
+
+# Generate the list of packages and convert to a regular expression.
+PACKAGES=$(for t in $TEAMS; do echo $(eval echo \${${t}_PACKAGES}); done)
+RE=$(echo ${PACKAGES} | sed "s/ /|/g")
+git show --name-only --pretty=format: $1 | grep "config/hiddenapi-.*txt" | while read file; do
+ ENTRIES=$(grep -E "^L(${RE})/" <(git show $1:$file))
+ if [[ -n "${ENTRIES}" ]]; then
+ echo -e "\e[1m\e[31m$file $1 contains the following entries\e[0m"
+ echo -e "\e[1m\e[31mfor packages that are handled using UnsupportedAppUsage. Please remove\e[0m"
+ echo -e "\e[1m\e[31mthese entries and add annotations instead.\e[0m"
+ # Partition the entries by team and provide contact details to aid in fixing the issue.
+ for t in ${TEAMS}
+ do
+ PACKAGES=$(eval echo \${${t}_PACKAGES})
+ RE=$(echo ${PACKAGES} | sed "s/ /|/g")
+ TEAM_ENTRIES=$(grep -E "^L(${RE})/" <(echo "${ENTRIES}"))
+ if [[ -n "${TEAM_ENTRIES}" ]]; then
+ EMAIL=$(eval echo \${${t}_EMAIL})
+ echo -e "\e[33mContact ${EMAIL} or compat- for help with the following:\e[0m"
+ for i in ${ENTRIES}
+ do
+ echo -e "\e[33m ${i}\e[0m"
+ done
+ fi
+ done
+ exit 1
+ fi
+done