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.
|
|
#!/bin/sh
set -e set -u set -o pipefail
function on_error { echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" } trap 'on_error $LINENO' ERR
# This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
variant_for_slice() { case "$1" in "iProov.xcframework/ios-arm64_armv7") echo "" ;; "iProov.xcframework/ios-arm64_i386_x86_64-simulator") echo "simulator" ;; esac }
archs_for_slice() { case "$1" in "iProov.xcframework/ios-arm64_armv7") echo "arm64 armv7" ;; "iProov.xcframework/ios-arm64_i386_x86_64-simulator") echo "arm64 i386 x86_64" ;; esac }
copy_dir() { local source="$1" local destination="$2"
# Use filter instead of exclude so missing patterns don't throw errors. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" \"${source}*\" \"${destination}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}"/* "${destination}" }
SELECT_SLICE_RETVAL=""
select_slice() { local xcframework_name="$1" xcframework_name="${xcframework_name##*/}" local paths=("${@:2}") # Locate the correct slice of the .xcframework for the current architectures local target_path=""
# Split archs on space so we can find a slice that has all the needed archs local target_archs=$(echo $ARCHS | tr " " "\n")
local target_variant="" if [[ "$PLATFORM_NAME" == *"simulator" ]]; then target_variant="simulator" fi if [[ ! -z ${EFFECTIVE_PLATFORM_NAME+x} && "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then target_variant="maccatalyst" fi for i in ${!paths[@]}; do local matched_all_archs="1" local slice_archs="$(archs_for_slice "${xcframework_name}/${paths[$i]}")" local slice_variant="$(variant_for_slice "${xcframework_name}/${paths[$i]}")" for target_arch in $target_archs; do if ! [[ "${slice_variant}" == "$target_variant" ]]; then matched_all_archs="0" break fi
if ! echo "${slice_archs}" | tr " " "\n" | grep -F -q -x "$target_arch"; then matched_all_archs="0" break fi done
if [[ "$matched_all_archs" == "1" ]]; then # Found a matching slice echo "Selected xcframework slice ${paths[$i]}" SELECT_SLICE_RETVAL=${paths[$i]} break fi done }
install_xcframework() { local basepath="$1" local name="$2" local package_type="$3" local paths=("${@:4}")
# Locate the correct slice of the .xcframework for the current architectures select_slice "${basepath}" "${paths[@]}" local target_path="$SELECT_SLICE_RETVAL" if [[ -z "$target_path" ]]; then echo "warning: [CP] $(basename ${basepath}): Unable to find matching slice in '${paths[@]}' for the current build architectures ($ARCHS) and platform (${EFFECTIVE_PLATFORM_NAME-${PLATFORM_NAME}})." return fi local source="$basepath/$target_path"
local destination="${PODS_XCFRAMEWORKS_BUILD_DIR}/${name}"
if [ ! -d "$destination" ]; then mkdir -p "$destination" fi
copy_dir "$source/" "$destination" echo "Copied $source to $destination" }
install_xcframework "${PODS_ROOT}/iProov/iProov.xcframework" "iProov" "framework" "ios-arm64_armv7" "ios-arm64_i386_x86_64-simulator"
|