151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/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
 |