blob: 4fe94fe201c06e2a67a4fc13f38ea4d8f5e914d4 [file] [log] [blame]
Pierre-Hugues Husson9212e182018-10-30 23:40:10 +01001#!/bin/bash
2
3base="$(dirname "$(readlink -f -- $0)")/.."
4cd $base
5
6#Keep knownKeys
7rm -f tests/priorities
8touch tests/priorities tests/knownKeys
9result=0
10find -name AndroidManifest.xml |while read manifest;do
11 folder="$(dirname "$manifest")"
12 #Ensure this overlay doesn't override blacklist-ed properties
13 for b in $(cat tests/blacklist);do
14 if grep -qRF "$b" $folder;then
15 echo "Overlay $folder is defining $b which is forbidden"
16 result=1
17 fi
18 done
19
20 #Everything after that is specifically for static overlays, targetting framework-res
21 isStatic="$(xmlstarlet sel -t -m '//overlay' -v @android:isStatic -n $manifest)"
22 [ "$isStatic" != "true" ] && continue
23
24 #Ensure priorities unique-ness
25 priority="$(xmlstarlet sel -t -m '//overlay' -v @android:priority -n $manifest)"
26 if grep -qE '^'$priority'$' tests/priorities;then
27 echo $manifest priority $priority conflicts with another manifest
28 result=1
29 fi
30 echo $priority >> tests/priorities
31
32 systemPropertyName="$(xmlstarlet sel -t -m '//overlay' -v @android:requiredSystemPropertyName -n $manifest)"
33 if [ "$systemPropertyName" == "ro.vendor.product.name" ];then
34 echo "$manifest: ro.vendor.product.name is deprecated. Please use ro.vendor.build.fingerprint"
35 fi
36
37 #Ensure the overloaded properties exist in AOSP
38 find "$folder" -name \*.xml |while read xml;do
39 keys="$(xmlstarlet sel -t -m '//resources/*' -v @name -n $xml)"
40
41 for key in $keys;do
Pierre-Hugues Husson03811922018-10-31 00:08:08 +010042 grep -qE '^'$key'$' tests/knownKeys && continue
Pierre-Hugues Husson3de1d742018-10-30 23:52:01 +010043 #Run the ag only on phh's machine. Assume that knownKeys is full enough.
44 #If it's enough, ask phh to update it
45 if [ -d /build/AOSP-9.0 ] && ag '"'$key'"' /build/AOSP-9.0/frameworks/base/core/res/res > /dev/null;then
Pierre-Hugues Husson9212e182018-10-30 23:40:10 +010046 echo $key >> tests/knownKeys
47 else
48 echo $xml defines a non-existing attribute $key
49 fi
50 done
51 done
52done
53rm -f tests/priorities
54
55exit $result