| #!/bin/bash |
| # |
| # Copyright (C) 2020 Google LLC |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| ############################################################################### |
| # Input files and output directory: can be customized. |
| INPUT_CARRIERCONFIG_XML_FILE="packages/apps/CarrierConfig/res/xml/vendor.xml" |
| INPUT_CARRIERCONFIG_ASSETS_DIR="packages/apps/CarrierConfig/assets" |
| INPUT_APNS_XML_FILE="device/sample/etc/apns-full-conf.xml" |
| OUTPUT_DIR="/tmp/CarrierSettings/etc" |
| ############################################################################### |
| |
| ( # start sub-shell so can use 'set -e' to abort on any failure |
| set -e |
| |
| # 1. Build tools |
| echo 'step 1. Building tools ...' |
| m CarrierConfigConverterV2 update_apn update_carrier_data GenCarrierList GenDeviceSettings |
| echo 'Done.' |
| |
| echo 'step 2. Converting config files ...' |
| # 2a. Create a temp directory as workspace |
| TMP_DIR=$(mktemp -d -t cs-XXXXXXX) |
| DATA_SETTING_DIR=$TMP_DIR/data/setting |
| DATA_DEVICE_DIR=$TMP_DIR/data/device |
| ASSETS_DIR=$TMP_DIR/assets |
| INNER_TMP_DIR=$TMP_DIR/tmp |
| TIER1_CARRIERS_FILE=$TMP_DIR/data/tier1_carriers.textpb |
| DEVICE_FILE=$DATA_DEVICE_DIR/device.textpb |
| mkdir -p "$DATA_SETTING_DIR" > /dev/null |
| mkdir -p "$DATA_DEVICE_DIR" > /dev/null |
| mkdir -p "$ASSETS_DIR" > /dev/null |
| mkdir -p "$INNER_TMP_DIR" > /dev/null |
| touch "$TIER1_CARRIERS_FILE" > /dev/null |
| touch "$DEVICE_FILE" > /dev/null |
| |
| # 2b. Copy input files to workspace |
| cp $INPUT_CARRIERCONFIG_XML_FILE "$TMP_DIR"/vendor.xml > /dev/null |
| cp $INPUT_CARRIERCONFIG_ASSETS_DIR/* "$ASSETS_DIR"/ > /dev/null |
| cp $INPUT_APNS_XML_FILE "$TMP_DIR"/apns-full-conf.xml > /dev/null |
| |
| # 2c. Convert XMLs to TEXTPB |
| |
| EPOCH=$(date -d '2018-06-01T00:00:00Z' +%s) |
| NOW=$(date +%s) |
| TIMESTAMP="$((NOW-EPOCH))" |
| # Use TIMESTAMP as version number |
| # To customize the version number, assign the customized value to VERSION. |
| VERSION="$TIMESTAMP" |
| |
| SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")" |
| UPDATE_APN=$SCRIPT_DIR/bin/update_apn |
| [ -x "$UPDATE_APN" ] || UPDATE_APN=out/host/linux-x86/bin/update_apn |
| UPDATE_CARRIER_DATA=$SCRIPT_DIR/bin/update_carrier_data |
| [ -x "$UPDATE_CARRIER_DATA" ] || UPDATE_CARRIER_DATA=out/host/linux-x86/bin/update_carrier_data |
| |
| # To use multiple vendor.xml files, just provide multiple `--vendor_xml=___.xml` |
| # lines in the command below. The order decides config precedence: a file is |
| # overwritten by files AFTER it. |
| out/host/linux-x86/bin/CarrierConfigConverterV2 \ |
| --output_dir="$TMP_DIR"/data \ |
| --vendor_xml="$TMP_DIR"/vendor.xml \ |
| --assets="$ASSETS_DIR"/ \ |
| --version=$VERSION > /dev/null |
| "$UPDATE_APN" \ |
| --apn_file="$TMP_DIR"/apns-full-conf.xml \ |
| --data_dir="$TMP_DIR"/data \ |
| --out_file="$INNER_TMP_DIR"/apns.textpb |
| "$UPDATE_CARRIER_DATA" \ |
| --data_dir="$TMP_DIR"/data \ |
| --in_file="$INNER_TMP_DIR"/apns.textpb |
| |
| # 2d. Convert TEXTPB to PB |
| mkdir -p "$INNER_TMP_DIR"/pb > /dev/null |
| mkdir -p "$INNER_TMP_DIR"/textpb > /dev/null |
| |
| out/host/linux-x86/bin/GenCarrierList \ |
| --version_offset=0 \ |
| --with_version_number \ |
| --out_pb="$INNER_TMP_DIR"/carrier_list.pb \ |
| --in_textpbs="$TIER1_CARRIERS_FILE","$TMP_DIR"/data/other_carriers.textpb \ |
| > /dev/null |
| mv "$INNER_TMP_DIR"/carrier_list*.pb "$INNER_TMP_DIR"/pb > /dev/null |
| mv "$INNER_TMP_DIR"/carrier_list.textpb "$INNER_TMP_DIR"/textpb > /dev/null |
| |
| for device in "$DATA_DEVICE_DIR"/*.textpb; do |
| [[ -e "$device" ]] || break |
| device=${device%.*} && device=${device##*/} \ |
| && device_dir="${INNER_TMP_DIR}/${device}" && mkdir -p "${INNER_TMP_DIR}" \ |
| && mkdir -p "${INNER_TMP_DIR}/textpb/${device}" > /dev/null \ |
| && out/host/linux-x86/bin/GenDeviceSettings \ |
| --device_overlay="$DATA_DEVICE_DIR/${device}.textpb" \ |
| --base_setting_dir="$DATA_SETTING_DIR" \ |
| --device_setting_dir="${device_dir}" \ |
| --version_offset=0 \ |
| --with_device_name="${device}" \ |
| --with_version_number > /dev/null \ |
| && mv "${device_dir}"/*.pb "${INNER_TMP_DIR}/pb" > /dev/null \ |
| && mv "${device_dir}"/*.textpb "${INNER_TMP_DIR}/textpb/${device}" > /dev/null \ |
| && rmdir "${device_dir}" |
| done |
| |
| echo 'Done.' |
| |
| echo 'step 3. Copy generated files to output directory ...' |
| |
| mkdir -p $OUTPUT_DIR > /dev/null |
| rm -rf "${OUTPUT_DIR:?}"/* > /dev/null |
| cp -r "$INNER_TMP_DIR"/pb $OUTPUT_DIR > /dev/null |
| cp -r "$INNER_TMP_DIR"/textpb $OUTPUT_DIR > /dev/null |
| rm -rf "${TMP_DIR:?}" > /dev/null |
| |
| echo 'Generated files:' |
| find $OUTPUT_DIR -type f |
| |
| echo 'Done.' |
| ) # end sub-shell |