
Install Qt Installer Framework 4.6 from R2 to keep compatibility for old MacOS. In addition, update Qt version in build scripts.
99 lines
3.2 KiB
Bash
Executable file
99 lines
3.2 KiB
Bash
Executable file
#!/bin/bash
|
|
echo "Build script started ..."
|
|
|
|
set -o errexit -o nounset
|
|
|
|
# Hold on to current directory
|
|
PROJECT_DIR=$(pwd)
|
|
|
|
BUILD_DIR=$PROJECT_DIR/build-ios
|
|
mkdir -p $BUILD_DIR
|
|
|
|
echo "Project dir: ${PROJECT_DIR}"
|
|
echo "Build dir: ${BUILD_DIR}"
|
|
|
|
APP_NAME=AmneziaVPN
|
|
APP_FILENAME=$APP_NAME.app
|
|
APP_DOMAIN=org.amneziavpn.package
|
|
PLIST_NAME=$APP_NAME.plist
|
|
|
|
|
|
# Search Qt
|
|
if [ -z "${QT_VERSION+x}" ]; then
|
|
QT_VERSION=6.6.2;
|
|
QT_BIN_DIR=$HOME/Qt/$QT_VERSION/ios/bin
|
|
fi
|
|
|
|
echo "Using Qt in $QT_BIN_DIR"
|
|
|
|
# Checking env
|
|
$QT_BIN_DIR/qt-cmake --version
|
|
cmake --version
|
|
clang -v
|
|
|
|
# Generate XCodeProj
|
|
$QT_BIN_DIR/qt-cmake . -B $BUILD_DIR -GXcode -DQT_HOST_PATH=$QT_MACOS_ROOT_DIR
|
|
|
|
KEYCHAIN=amnezia.build.ios.keychain
|
|
KEYCHAIN_FILE=$HOME/Library/Keychains/${KEYCHAIN}-db
|
|
|
|
# Setup keychain
|
|
if [ "${IOS_SIGNING_CERT_BASE64+x}" ]; then
|
|
echo "Import certificate"
|
|
|
|
TRUST_CERT_CER=$BUILD_DIR/trust-cert.cer
|
|
SIGNING_CERT_P12=$BUILD_DIR/signing-cert.p12
|
|
|
|
echo $IOS_TRUST_CERT_BASE64 | base64 --decode > $TRUST_CERT_CER
|
|
echo $IOS_SIGNING_CERT_BASE64 | base64 --decode > $SIGNING_CERT_P12
|
|
|
|
shasum -a 256 $TRUST_CERT_CER
|
|
shasum -a 256 $SIGNING_CERT_P12
|
|
|
|
KEYCHAIN_PASS=$IOS_SIGNING_CERT_PASSWORD
|
|
|
|
security create-keychain -p $KEYCHAIN_PASS $KEYCHAIN || true
|
|
security default-keychain -s $KEYCHAIN
|
|
security unlock-keychain -p $KEYCHAIN_PASS $KEYCHAIN
|
|
|
|
security default-keychain
|
|
security list-keychains
|
|
|
|
security import $TRUST_CERT_CER -k $KEYCHAIN -P "" -T /usr/bin/codesign
|
|
security import $SIGNING_CERT_P12 -k $KEYCHAIN -P $IOS_SIGNING_CERT_PASSWORD -T /usr/bin/codesign
|
|
|
|
security set-key-partition-list -S "apple-tool:,apple:,codesign:" -s -k $KEYCHAIN_PASS $KEYCHAIN
|
|
security find-identity -p codesigning
|
|
security set-keychain-settings $KEYCHAIN_FILE
|
|
security set-keychain-settings -t 3600 $KEYCHAIN_FILE
|
|
security unlock-keychain -p $KEYCHAIN_PASS $KEYCHAIN_FILE
|
|
|
|
# Copy provisioning prifiles
|
|
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles/"
|
|
|
|
echo $IOS_APP_PROVISIONING_PROFILE | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision
|
|
echo $IOS_NE_PROVISIONING_PROFILE | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision
|
|
|
|
shasum -a 256 ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision
|
|
shasum -a 256 ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision
|
|
|
|
profile_uuid=`grep UUID -A1 -a ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
|
|
profile_ne_uuid=`grep UUID -A1 -a ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
|
|
|
|
mv ~/Library/MobileDevice/Provisioning\ Profiles/app.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$profile_uuid.mobileprovision
|
|
mv ~/Library/MobileDevice/Provisioning\ Profiles/ne.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$profile_ne_uuid.mobileprovision
|
|
else
|
|
echo "Failed to import certificate, aborting..."
|
|
exit 1
|
|
fi
|
|
|
|
# Build project
|
|
xcodebuild \
|
|
"OTHER_CODE_SIGN_FLAGS=--keychain '$KEYCHAIN_FILE'" \
|
|
-configuration Release \
|
|
-scheme AmneziaVPN \
|
|
-destination "generic/platform=iOS,name=Any iOS'" \
|
|
-project $BUILD_DIR/AmneziaVPN.xcodeproj
|
|
|
|
# restore keychain
|
|
security default-keychain -s login.keychain
|