You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
5.2 KiB
151 lines
5.2 KiB
#!/bin/bash -ex
|
|
|
|
# Usage:
|
|
# generate_ml_bundle.sh [args] source_tree dest_tree api_level
|
|
#
|
|
# Args:
|
|
# -p Sets prefer=true in generated java_sdk_library_import rules
|
|
# -a Also update artifects; default behaviour is just to generate build rules.
|
|
|
|
PREFER=false
|
|
UPDATE_ARTIFACTS=false
|
|
while getopts "pa" opt; do
|
|
case ${opt} in
|
|
p ) PREFER=true;;
|
|
a ) UPDATE_ARTIFACTS=true;;
|
|
\? ) echo "Invalid option."
|
|
exit
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND -1))
|
|
|
|
SOURCE_TREE=$1
|
|
DESTINATION_TREE=$2
|
|
API_LEVEL=$3
|
|
SOURCE_TREE_TYPE=$(test -e ${DESTINATION_TREE}/vendor/unbundled_google/modules && echo GOOGLE || echo PARTNER)
|
|
|
|
function sdk_lib_bp() {
|
|
modulename=$1
|
|
apexname=$2
|
|
shared_library=$(test \( "$apexname" == com.android.ipsec \) -a \( "$API_LEVEL" -lt 31 \) && echo true || echo false)
|
|
cat << EOF
|
|
java_sdk_library_import {
|
|
name: "${modulename}",
|
|
owner: "google",
|
|
prefer: ${PREFER},
|
|
shared_library: ${shared_library},
|
|
apex_available: [
|
|
"${apexname}",
|
|
"test_${apexname}",
|
|
],
|
|
public: {
|
|
jars: ["current/public/${modulename}.jar"],
|
|
stub_srcs: ["current/public/${modulename}.srcjar"],
|
|
current_api: "current/public/${modulename}.txt",
|
|
removed_api: "current/public/${modulename}-removed.txt",
|
|
sdk_version: "module_current",
|
|
},
|
|
system: {
|
|
jars: ["current/system/${modulename}.jar"],
|
|
stub_srcs: ["current/system/${modulename}.srcjar"],
|
|
current_api: "current/system/${modulename}.txt",
|
|
removed_api: "current/system/${modulename}-removed.txt",
|
|
sdk_version: "module_current",
|
|
},
|
|
module_lib: {
|
|
jars: ["current/module_lib/${modulename}.jar"],
|
|
stub_srcs: ["current/module_lib/${modulename}.srcjar"],
|
|
current_api: "current/module_lib/${modulename}.txt",
|
|
removed_api: "current/module_lib/${modulename}-removed.txt",
|
|
sdk_version: "module_current",
|
|
},
|
|
}
|
|
EOF
|
|
}
|
|
|
|
function make_sdk_library() {
|
|
libnames=$1
|
|
destdir=$2
|
|
apexname=$3
|
|
bp=${destdir}/Android.bp
|
|
|
|
#test -e "$bp"
|
|
mkdir -p "$(dirname "$bp")"
|
|
|
|
# Remove existing java_sdk_library_import and double newlines
|
|
existing_bp="$(sed -e '/java_sdk_library_import {/,/^}/d' "$bp" | tr -s \\n)"
|
|
echo "$existing_bp" > "$bp"
|
|
for libname in $libnames; do
|
|
echo >> "$bp"
|
|
echo "$(sdk_lib_bp ${libname} ${apexname})" | grep -v test_com.android.tethering >> "$bp"
|
|
done
|
|
#echo >> "$bp"
|
|
|
|
if [ "${UPDATE_ARTIFACTS}" == "true" ] ; then
|
|
rm -rf "${destdir}/current"
|
|
mkdir -p "${destdir}/current/"{public,system,module_lib}
|
|
for libname in $libnames; do
|
|
cp public/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/current/public"
|
|
cp system/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/current/system"
|
|
cp module-lib/{${libname}.jar,api/${libname}.txt,api/${libname}-removed.txt} "${destdir}/current/module_lib"
|
|
done
|
|
fi
|
|
}
|
|
|
|
function copy_notices() {
|
|
destdir=$1
|
|
apks=$(find $destdir -name '*.apks' | head -1)
|
|
if [[ -z "$apks" ]]; then
|
|
echo "no apks found in $destdir" >&2
|
|
exit
|
|
fi
|
|
filename=$(zipinfo -1 "$apks" *.apex */base-master.apk | head -1)
|
|
# com.android.ipsec is not expected to have a LICENSE, so don't fail if it doesn't.
|
|
unzip -p "$apks" "$filename" | bsdtar -xOf- assets/NOTICE.html.gz > "${destdir}/NOTICE.html.gz" || test "$2" == "com.android.ipsec"
|
|
}
|
|
|
|
function get_dest_dir() {
|
|
if [[ "$SOURCE_TREE_TYPE" == "PARTNER" ]]; then
|
|
echo "${DESTINATION_TREE}/vendor/partner_modules/${1}"
|
|
elif [[ "$SOURCE_TREE_TYPE" == "GOOGLE" ]]; then
|
|
echo -n "${DESTINATION_TREE}/prebuilts/module_sdk/"
|
|
case "$1" in
|
|
"IKEPrebuilt") echo "IPsec";;
|
|
"MediaFrameworkPrebuilt") echo "Media";;
|
|
"MediaProviderPrebuilt") echo "MediaProvider";;
|
|
"PermissionControllerPrebuilt") echo "Permission";;
|
|
"SdkExtensionsPrebuilt") echo "SdkExtensions";;
|
|
"StatsdPrebuilt") echo "StatsD";;
|
|
"TetheringPrebuilt") echo "Connectivity";;
|
|
"WiFiPrebuilt") echo "Wifi";;
|
|
*) exit 1;;
|
|
esac
|
|
else
|
|
# Unknown tree type
|
|
exit 2
|
|
fi
|
|
#ConscryptPrebuilt ???
|
|
}
|
|
|
|
function setup_stub_prebuilts() {
|
|
destdir=$(get_dest_dir $2)
|
|
|
|
make_sdk_library "$1" "$destdir" "$3"
|
|
#copy_notices "$destdir" "$3"
|
|
}
|
|
|
|
cd "$SOURCE_TREE/prebuilts/sdk/$API_LEVEL"
|
|
setup_stub_prebuilts android.net.ipsec.ike IKEPrebuilt com.android.ipsec
|
|
setup_stub_prebuilts framework-media MediaFrameworkPrebuilt com.android.media
|
|
setup_stub_prebuilts framework-mediaprovider MediaProviderPrebuilt com.android.mediaprovider
|
|
if [[ "$API_LEVEL" -ge 31 ]]; then
|
|
setup_stub_prebuilts 'framework-permission framework-permission-s' PermissionControllerPrebuilt com.android.permission
|
|
else
|
|
setup_stub_prebuilts framework-permission PermissionControllerPrebuilt com.android.permission
|
|
fi
|
|
setup_stub_prebuilts framework-sdkextensions SdkExtensionsPrebuilt com.android.sdkext
|
|
setup_stub_prebuilts framework-statsd StatsdPrebuilt com.android.os.statsd
|
|
setup_stub_prebuilts framework-tethering TetheringPrebuilt com.android.tethering
|
|
setup_stub_prebuilts framework-wifi WiFiPrebuilt com.android.wifi
|