1cb93a386Sopenharmony_ci#!/bin/bash 2cb93a386Sopenharmony_ci############################################################################### 3cb93a386Sopenharmony_ci# Copyright 2015 Google Inc. 4cb93a386Sopenharmony_ci# 5cb93a386Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be 6cb93a386Sopenharmony_ci# found in the LICENSE file. 7cb93a386Sopenharmony_ci############################################################################### 8cb93a386Sopenharmony_ci# 9cb93a386Sopenharmony_ci# ios_setup.sh: Sets environment variables used by other iOS scripts. 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci# File system location where we mount the ios devices. 12cb93a386Sopenharmony_ciif [[ -z "${IOS_MOUNT_POINT}" ]]; then 13cb93a386Sopenharmony_ci IOS_MOUNT_POINT="/tmp/mnt_iosdevice" 14cb93a386Sopenharmony_cifi 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci# Location on the ios device where all data are stored. This is 17cb93a386Sopenharmony_ci# relative to the mount point. 18cb93a386Sopenharmony_ciIOS_DOCS_DIR="Documents" 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci# Directory with the Skia source. 21cb93a386Sopenharmony_ciSKIA_SRC_DIR=$(cd "${SCRIPT_DIR}/../../.."; pwd) 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ci# Provisioning profile - this needs to be set up on the local machine. 24cb93a386Sopenharmony_ciPROVISIONING_PROFILE="" 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci# Code Signing identity - this needs to be set up on the local machine. 27cb93a386Sopenharmony_ciCODE_SIGN_IDENTITY="iPhone Developer" 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ciIOS_RESULTS_DIR="results" 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci# Location of XCode build products. 32cb93a386Sopenharmony_ciif [[ -z "$XCODEBUILD" ]]; then 33cb93a386Sopenharmony_ci XCODEBUILD="${SKIA_SRC_DIR}/xcodebuild" 34cb93a386Sopenharmony_cifi 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ciios_rm() { 37cb93a386Sopenharmony_ci local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci ios_mount 40cb93a386Sopenharmony_ci rm -rf "$TARGET" 41cb93a386Sopenharmony_ci ios_umount 42cb93a386Sopenharmony_ci} 43cb93a386Sopenharmony_ci 44cb93a386Sopenharmony_ciios_mkdir() { 45cb93a386Sopenharmony_ci local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" 46cb93a386Sopenharmony_ci ios_mount 47cb93a386Sopenharmony_ci mkdir -p "$TARGET" 48cb93a386Sopenharmony_ci ios_umount 49cb93a386Sopenharmony_ci} 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ciios_cat() { 52cb93a386Sopenharmony_ci local TARGET="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" 53cb93a386Sopenharmony_ci >&2 echo "target: '${TARGET}''" 54cb93a386Sopenharmony_ci ios_mount 55cb93a386Sopenharmony_ci RET="$( cat ${TARGET} )" 56cb93a386Sopenharmony_ci ios_umount 57cb93a386Sopenharmony_ci >&2 echo "Result: '${RET}'" 58cb93a386Sopenharmony_ci echo -e "${RET}" 59cb93a386Sopenharmony_ci} 60cb93a386Sopenharmony_ci 61cb93a386Sopenharmony_ci# ios_mount: mounts the iOS device for reading or writing. 62cb93a386Sopenharmony_ciios_mount() { 63cb93a386Sopenharmony_ci # If this is already mounted we unmount it. 64cb93a386Sopenharmony_ci if $(mount | grep --quiet "$IOS_MOUNT_POINT"); then 65cb93a386Sopenharmony_ci >&2 echo "Device already mounted at: $IOS_MOUNT_POINT - Unmounting." 66cb93a386Sopenharmony_ci ios_umount || true 67cb93a386Sopenharmony_ci fi 68cb93a386Sopenharmony_ci 69cb93a386Sopenharmony_ci # Ensure there is a mount directory. 70cb93a386Sopenharmony_ci if [[ ! -d "$IOS_MOUNT_POINT" ]]; then 71cb93a386Sopenharmony_ci mkdir -p $IOS_MOUNT_POINT 72cb93a386Sopenharmony_ci fi 73cb93a386Sopenharmony_ci ifuse --container $IOS_BUNDLE_ID $IOS_MOUNT_POINT 74cb93a386Sopenharmony_ci 75cb93a386Sopenharmony_ci sleep 2 76cb93a386Sopenharmony_ci if [[ ! -d "${IOS_MOUNT_POINT}/${IOS_DOCS_DIR}" ]]; then 77cb93a386Sopenharmony_ci exit 1 78cb93a386Sopenharmony_ci fi 79cb93a386Sopenharmony_ci >&2 echo "Successfully mounted device." 80cb93a386Sopenharmony_ci #find $IOS_MOUNT_POINT 81cb93a386Sopenharmony_ci} 82cb93a386Sopenharmony_ci 83cb93a386Sopenharmony_ci# ios_umount: unmounts the ios device. 84cb93a386Sopenharmony_ciios_umount() { 85cb93a386Sopenharmony_ci sudo umount $IOS_MOUNT_POINT 86cb93a386Sopenharmony_ci sleep 1 87cb93a386Sopenharmony_ci} 88cb93a386Sopenharmony_ci 89cb93a386Sopenharmony_ci# ios_restart: restarts the iOS device. 90cb93a386Sopenharmony_ciios_restart() { 91cb93a386Sopenharmony_ci ios_umount || true 92cb93a386Sopenharmony_ci idevicediagnostics restart 93cb93a386Sopenharmony_ci} 94cb93a386Sopenharmony_ci 95cb93a386Sopenharmony_ci# ios_pull(ios_src, host_dst): Copies the content of ios_src to host_dst. 96cb93a386Sopenharmony_ci# The path is relative to the 'Documents' folder on the device. 97cb93a386Sopenharmony_ciios_pull() { 98cb93a386Sopenharmony_ci # read input params 99cb93a386Sopenharmony_ci local IOS_SRC="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" 100cb93a386Sopenharmony_ci local HOST_DST="$2" 101cb93a386Sopenharmony_ci 102cb93a386Sopenharmony_ci ios_mount 103cb93a386Sopenharmony_ci if [[ -d "${HOST_DST}" ]]; then 104cb93a386Sopenharmony_ci cp -r "$IOS_SRC/." "$HOST_DST" 105cb93a386Sopenharmony_ci else 106cb93a386Sopenharmony_ci cp -r "$IOS_SRC" "$HOST_DST" 107cb93a386Sopenharmony_ci fi 108cb93a386Sopenharmony_ci ios_umount 109cb93a386Sopenharmony_ci} 110cb93a386Sopenharmony_ci 111cb93a386Sopenharmony_ci# ios_push(host_src, ios_dst) 112cb93a386Sopenharmony_ciios_push() { 113cb93a386Sopenharmony_ci # read input params 114cb93a386Sopenharmony_ci local HOST_SRC="$1" 115cb93a386Sopenharmony_ci local IOS_DST="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$2" 116cb93a386Sopenharmony_ci 117cb93a386Sopenharmony_ci ios_mount 118cb93a386Sopenharmony_ci rm -rf $IOS_DST 119cb93a386Sopenharmony_ci mkdir -p "$(dirname $IOS_DST)" 120cb93a386Sopenharmony_ci cp -r -L "$HOST_SRC" "$IOS_DST" 121cb93a386Sopenharmony_ci ios_umount 122cb93a386Sopenharmony_ci} 123cb93a386Sopenharmony_ci 124cb93a386Sopenharmony_ciios_path_exists() { 125cb93a386Sopenharmony_ci local TARGET_PATH="$IOS_MOUNT_POINT/$IOS_DOCS_DIR/$1" 126cb93a386Sopenharmony_ci local RET=1 127cb93a386Sopenharmony_ci ios_mount 128cb93a386Sopenharmony_ci if [[ -e $TARGET_PATH ]]; then 129cb93a386Sopenharmony_ci RET=0 130cb93a386Sopenharmony_ci fi 131cb93a386Sopenharmony_ci ios_umount 132cb93a386Sopenharmony_ci return $RET 133cb93a386Sopenharmony_ci} 134cb93a386Sopenharmony_ci 135cb93a386Sopenharmony_ci# ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` 136cb93a386Sopenharmony_ci# HOST_LS=`ls -ld $HOST_SRC` 137cb93a386Sopenharmony_ci# if [ "${ANDROID_LS:0:1}" == "d" -a "${HOST_LS:0:1}" == "-" ]; 138cb93a386Sopenharmony_ci# then 139cb93a386Sopenharmony_ci# ANDROID_DST="${ANDROID_DST}/$(basename ${HOST_SRC})" 140cb93a386Sopenharmony_ci# fi 141cb93a386Sopenharmony_ci 142cb93a386Sopenharmony_ci 143cb93a386Sopenharmony_ci# ANDROID_LS=`$ADB $DEVICE_SERIAL shell ls -ld $ANDROID_DST` 144cb93a386Sopenharmony_ci# if [ "${ANDROID_LS:0:1}" == "-" ]; then 145cb93a386Sopenharmony_ci# #get the MD5 for dst and src 146cb93a386Sopenharmony_ci# ANDROID_MD5=`$ADB $DEVICE_SERIAL shell md5 $ANDROID_DST` 147cb93a386Sopenharmony_ci# if [ $(uname) == "Darwin" ]; then 148cb93a386Sopenharmony_ci# HOST_MD5=`md5 -q $HOST_SRC` 149cb93a386Sopenharmony_ci# else 150cb93a386Sopenharmony_ci# HOST_MD5=`md5sum $HOST_SRC` 151cb93a386Sopenharmony_ci# fi 152cb93a386Sopenharmony_ci 153cb93a386Sopenharmony_ci# if [ "${ANDROID_MD5:0:32}" != "${HOST_MD5:0:32}" ]; then 154cb93a386Sopenharmony_ci# echo -n "$ANDROID_DST " 155cb93a386Sopenharmony_ci# $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST 156cb93a386Sopenharmony_ci# fi 157cb93a386Sopenharmony_ci# elif [ "${ANDROID_LS:0:1}" == "d" ]; then 158cb93a386Sopenharmony_ci# for FILE_ITEM in `ls $HOST_SRC`; do 159cb93a386Sopenharmony_ci# adb_push_if_needed "${HOST_SRC}/${FILE_ITEM}" "${ANDROID_DST}/${FILE_ITEM}" 160cb93a386Sopenharmony_ci# done 161cb93a386Sopenharmony_ci# else 162cb93a386Sopenharmony_ci# HOST_LS=`ls -ld $HOST_SRC` 163cb93a386Sopenharmony_ci# if [ "${HOST_LS:0:1}" == "d" ]; then 164cb93a386Sopenharmony_ci# $ADB $DEVICE_SERIAL shell mkdir -p $ANDROID_DST 165cb93a386Sopenharmony_ci# adb_push_if_needed $HOST_SRC $ANDROID_DST 166cb93a386Sopenharmony_ci# else 167cb93a386Sopenharmony_ci# echo -n "$ANDROID_DST " 168cb93a386Sopenharmony_ci# $ADB $DEVICE_SERIAL shell mkdir -p "$(dirname "$ANDROID_DST")" 169cb93a386Sopenharmony_ci# $ADB $DEVICE_SERIAL push $HOST_SRC $ANDROID_DST 170cb93a386Sopenharmony_ci# fi 171cb93a386Sopenharmony_ci# fi 172cb93a386Sopenharmony_ci# } 173cb93a386Sopenharmony_ci 174cb93a386Sopenharmony_ci# setup_device "${DEVICE_ID}" 175