blob: 05aaea89749b75b7b07abdfd6c9a186e9b0c9449 [file] [log] [blame]
Hai Zhang2c1e6252021-02-05 17:27:06 -08001#!/bin/bash -ex
2
3SOURCE_TREE=$1
4DESTINATION_TREE=$2
5API_LEVEL=$3
6SOURCE_TREE_TYPE=$(test -e ${DESTINATION_TREE}/vendor/unbundled_google/modules && echo GOOGLE || echo PARTNER)
7
8function sdk_lib_bp() {
9 modulename=$1
10 apexname=$2
11 shared_library=$(test \( "$apexname" == com.android.ipsec \) -a \( "$API_LEVEL" -lt 31 \) && echo true || echo false)
12 cat << EOF
13java_sdk_library_import {
14 name: "${modulename}",
15 owner: "google",
16 prefer: true,
17 shared_library: ${shared_library},
18 apex_available: [
19 "${apexname}",
20 "test_${apexname}",
21 ],
22 public: {
23 jars: ["sdk_library/public/${modulename}.jar"],
24 current_api: "sdk_library/public/${modulename}.txt",
25 removed_api: "sdk_library/public/${modulename}-removed.txt",
26 sdk_version: "module_current",
27 },
28 system: {
29 jars: ["sdk_library/system/${modulename}.jar"],
30 current_api: "sdk_library/system/${modulename}.txt",
31 removed_api: "sdk_library/system/${modulename}-removed.txt",
32 sdk_version: "module_current",
33 },
34 module_lib: {
35 jars: ["sdk_library/module_lib/${modulename}.jar"],
36 current_api: "sdk_library/module_lib/${modulename}.txt",
37 removed_api: "sdk_library/module_lib/${modulename}-removed.txt",
38 sdk_version: "module_current",
39 },
40}
41EOF
42}
43
44function make_sdk_library() {
45 libnames=$1
46 destdir=$2
47 apexname=$3
48 bp=${destdir}/Android.bp
49
50 #test -e "$bp"
51 mkdir -p "$(dirname "$bp")"
52
53 # Remove existing java_sdk_library_import and double newlines
54 existing_bp="$(sed -e '/java_sdk_library_import {/,/^}/d' "$bp" | tr -s \\n)"
55 echo "$existing_bp" > "$bp"
56 for libname in $libnames; do
57 echo >> "$bp"
58 echo "$(sdk_lib_bp ${libname} ${apexname})" | grep -v test_com.android.tethering >> "$bp"
59 done
60 #echo >> "$bp"
61
62 rm -rf "${destdir}/sdk_library"
63 mkdir -p "${destdir}/sdk_library/"{public,system,module_lib}
64 for libname in $libnames; do
65 cp public/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/sdk_library/public"
66 cp system/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/sdk_library/system"
67 cp module-lib/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/sdk_library/module_lib"
68 done
69}
70
71function copy_notices() {
72 destdir=$1
73 apks=$(find $destdir -name '*.apks' | head -1)
74 if [[ -z "$apks" ]]; then
75 echo "no apks found in $destdir" >&2
76 exit
77 fi
78 filename=$(zipinfo -1 "$apks" *.apex */base-master.apk | head -1)
79 # com.android.ipsec is not expected to have a LICENSE, so don't fail if it doesn't.
80 unzip -p "$apks" "$filename" | bsdtar -xOf- assets/NOTICE.html.gz > "${destdir}/NOTICE.html.gz" || test "$2" == "com.android.ipsec"
81}
82
83function get_dest_dir() {
84 if [[ "$SOURCE_TREE_TYPE" == "PARTNER" ]]; then
85 echo "${DESTINATION_TREE}/vendor/partner_modules/${1}"
86 elif [[ "$SOURCE_TREE_TYPE" == "GOOGLE" ]]; then
87 echo -n "${DESTINATION_TREE}/vendor/unbundled_google/modules/"
88 case "$1" in
89 "IKEPrebuilt") echo "IpSecGooglePrebuilt";;
90 "MediaFrameworkPrebuilt") echo "MediaFrameworkPrebuilt";;
91 "MediaProviderPrebuilt") echo "MediaProviderGooglePrebuilt";;
92 "PermissionControllerPrebuilt") echo "PermissionControllerPrebuilt";;
93 "SdkExtensionsPrebuilt") echo "SdkExtensionsGooglePrebuilt";;
94 "StatsdPrebuilt") echo "StatsdGooglePrebuilt";;
95 "TetheringPrebuilt") echo "TetheringGooglePrebuilt";;
96 "WiFiPrebuilt") echo "WifiGooglePrebuilt";;
97 *) exit 1;;
98 esac
99 else
100 # Unknown tree type
101 exit 2
102 fi
103 #ConscryptPrebuilt ???
104}
105
106function setup_stub_prebuilts() {
107 destdir=$(get_dest_dir $2)
108
109 make_sdk_library "$1" "$destdir" "$3"
110 #copy_notices "$destdir" "$3"
111}
112
113cd "$SOURCE_TREE/prebuilts/sdk/$API_LEVEL"
114setup_stub_prebuilts android.net.ipsec.ike IKEPrebuilt com.android.ipsec
115setup_stub_prebuilts framework-media MediaFrameworkPrebuilt com.android.media
116setup_stub_prebuilts framework-mediaprovider MediaProviderPrebuilt com.android.mediaprovider
117if [[ "$API_LEVEL" -ge 31 ]]; then
118 setup_stub_prebuilts 'framework-permission framework-permission-s' PermissionControllerPrebuilt com.android.permission
119else
120 setup_stub_prebuilts framework-permission PermissionControllerPrebuilt com.android.permission
121fi
122setup_stub_prebuilts framework-sdkextensions SdkExtensionsPrebuilt com.android.sdkext
123setup_stub_prebuilts framework-statsd StatsdPrebuilt com.android.os.statsd
124setup_stub_prebuilts framework-tethering TetheringPrebuilt com.android.tethering
125setup_stub_prebuilts framework-wifi WiFiPrebuilt com.android.wifi