xref: /aosp_15_r20/external/pytorch/.circleci/scripts/binary_ios_upload.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1#!/bin/bash
2set -ex -o pipefail
3
4echo ""
5echo "DIR: $(pwd)"
6WORKSPACE=/Users/distiller/workspace
7PROJ_ROOT=/Users/distiller/project
8ARTIFACTS_DIR=${WORKSPACE}/ios
9ls ${ARTIFACTS_DIR}
10ZIP_DIR=${WORKSPACE}/zip
11mkdir -p ${ZIP_DIR}/install/lib
12mkdir -p ${ZIP_DIR}/src
13# copy header files
14cp -R ${ARTIFACTS_DIR}/arm64/include ${ZIP_DIR}/install/
15# build a FAT bianry
16cd ${ZIP_DIR}/install/lib
17target_libs=(libc10.a libclog.a libcpuinfo.a libeigen_blas.a libpthreadpool.a libpytorch_qnnpack.a libtorch_cpu.a libtorch.a libXNNPACK.a)
18for lib in ${target_libs[*]}
19do
20    if [ -f "${ARTIFACTS_DIR}/x86_64/lib/${lib}" ] && [ -f "${ARTIFACTS_DIR}/arm64/lib/${lib}" ]; then
21        libs=("${ARTIFACTS_DIR}/x86_64/lib/${lib}" "${ARTIFACTS_DIR}/arm64/lib/${lib}")
22        lipo -create "${libs[@]}" -o ${ZIP_DIR}/install/lib/${lib}
23    fi
24done
25lipo -i ${ZIP_DIR}/install/lib/*.a
26echo "BUILD_LITE_INTERPRETER: ${BUILD_LITE_INTERPRETER}"
27# copy the umbrella header and license
28if [ "${BUILD_LITE_INTERPRETER}" == "1" ]; then
29    cp ${PROJ_ROOT}/ios/LibTorch-Lite.h ${ZIP_DIR}/src/
30else
31    cp ${PROJ_ROOT}/ios/LibTorch.h ${ZIP_DIR}/src/
32fi
33cp ${PROJ_ROOT}/LICENSE ${ZIP_DIR}/
34# zip the library
35export DATE="$(date -u +%Y%m%d)"
36export IOS_NIGHTLY_BUILD_VERSION="2.2.0.${DATE}"
37if [ "${BUILD_LITE_INTERPRETER}" == "1" ]; then
38    # libtorch_lite_ios_nightly_1.11.0.20210810.zip
39    ZIPFILE="libtorch_lite_ios_nightly_${IOS_NIGHTLY_BUILD_VERSION}.zip"
40else
41    ZIPFILE="libtorch_ios_nightly_build.zip"
42fi
43cd ${ZIP_DIR}
44#for testing
45touch version.txt
46echo "${IOS_NIGHTLY_BUILD_VERSION}" > version.txt
47zip -r ${ZIPFILE} install src version.txt LICENSE
48# upload to aws
49# Install conda then 'conda install' awscli
50curl --retry 3 -o ~/conda.sh https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-MacOSX-x86_64.sh
51chmod +x ~/conda.sh
52/bin/bash ~/conda.sh -b -p ~/anaconda
53export PATH="~/anaconda/bin:${PATH}"
54source ~/anaconda/bin/activate
55conda install -c conda-forge awscli --yes
56set +x
57export AWS_ACCESS_KEY_ID=${AWS_S3_ACCESS_KEY_FOR_PYTORCH_BINARY_UPLOAD}
58export AWS_SECRET_ACCESS_KEY=${AWS_S3_ACCESS_SECRET_FOR_PYTORCH_BINARY_UPLOAD}
59set +x
60# echo "AWS KEY: ${AWS_ACCESS_KEY_ID}"
61# echo "AWS SECRET: ${AWS_SECRET_ACCESS_KEY}"
62aws s3 cp ${ZIPFILE} s3://ossci-ios-build/ --acl public-read
63
64if [ "${BUILD_LITE_INTERPRETER}" == "1" ]; then
65    # create a new LibTorch-Lite-Nightly.podspec from the template
66    echo "cp ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec.template ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec"
67    cp ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec.template ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec
68
69    # update pod version
70    sed -i '' -e "s/IOS_NIGHTLY_BUILD_VERSION/${IOS_NIGHTLY_BUILD_VERSION}/g" ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec
71    cat ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec
72
73    # push the new LibTorch-Lite-Nightly.podspec to CocoaPods
74    pod trunk push --verbose --allow-warnings --use-libraries --skip-import-validation ${PROJ_ROOT}/ios/LibTorch-Lite-Nightly.podspec
75fi
76