set -e while IFS='' read -r line || [[ -n "$line" ]]; do set $line eval $1="$2" done < Version AppVersionStrFull="$AppVersionStr" DevParam='' if [ "$DevChannel" != "0" ]; then AppVersionStrFull="$AppVersionStr.dev" DevParam='-dev' fi if [ ! -f "Target" ]; then echo "Build target not found!" exit 1 fi while IFS='' read -r line || [[ -n "$line" ]]; do BuildTarget="$line" done < Target echo "" if [ "$BuildTarget" == "linux" ]; then echo "Building version $AppVersionStrFull for Linux 64bit.." UpdateFile="tlinuxupd$AppVersion" SetupFile="tsetup.$AppVersionStrFull.tar.xz" WorkPath="./../Linux" HomePath="./../../Telegram" FixScript="$HomePath/FixMake.sh" ReleasePath="./../Linux/Release" elif [ "$BuildTarget" == "linux32" ]; then echo "Building version $AppVersionStrFull for Linux 32bit.." UpdateFile="tlinux32upd$AppVersion" SetupFile="tsetup32.$AppVersionStrFull.tar.xz" WorkPath="./../Linux" HomePath="./../../Telegram" FixScript="$HomePath/FixMake32.sh" ReleasePath="./../Linux/Release" elif [ "$BuildTarget" == "mac" ]; then echo "Building version $AppVersionStrFull for OS X 10.8+.." UpdateFile="tmacupd$AppVersion" SetupFile="tsetup.$AppVersionStrFull.dmg" ReleasePath="./../Mac/Release" BinaryName="Telegram" elif [ "$BuildTarget" == "mac32" ]; then echo "Building version $AppVersionStrFull for OS X 10.6 and 10.7.." UpdateFile="tmac32upd$AppVersion" SetupFile="tsetup32.$AppVersionStrFull.dmg" ReleasePath="./../Mac/Release" BinaryName="Telegram" elif [ "$BuildTarget" == "macstore" ]; then echo "Building version $AppVersionStrFull for Mac App Store.." ReleasePath="./../Mac/Release" BinaryName="Telegram Desktop" DropboxPath="./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor" DropboxDeployPath="$DropboxPath/$AppVersionStrFull" else echo "Invalid target!" exit 1 fi #if [ "$BuildTarget" == "linux" ] || [ "$BuildTarget" == "linux32" ] || [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ] || [ "$BuildTarget" == "macstore" ]; then if [ -d "$ReleasePath/deploy/$AppVersionStrMajor/$AppVersionStr.dev" ]; then echo "Deploy folder for version $AppVersionStr.dev already exists!" exit 1 fi if [ -d "$ReleasePath/deploy/$AppVersionStrMajor/$AppVersionStr" ]; then echo "Deploy folder for version $AppVersionStr already exists!" exit 1 fi if [ -f "$ReleasePath/$UpdateFile" ]; then echo "Update file for version $AppVersion already exists!" exit 1 fi DeployPath="$ReleasePath/deploy/$AppVersionStrMajor/$AppVersionStrFull" #fi if [ "$BuildTarget" == "linux" ] || [ "$BuildTarget" == "linux32" ]; then mkdir -p "$WorkPath/ReleaseIntermediateUpdater" cd "$WorkPath/ReleaseIntermediateUpdater" /usr/local/Qt-5.5.1/bin/qmake "$HomePath/Updater.pro" make echo "Updater build complete!" cd "$HomePath" mkdir -p "$WorkPath/ReleaseIntermediate" cd "$WorkPath/ReleaseIntermediate" /usr/local/Qt-5.5.1/bin/qmake "$HomePath/Telegram.pro" eval "$FixScript" make echo "Telegram build complete!" cd "$HomePath" if [ ! -f "$ReleasePath/Telegram" ]; then echo "Telegram not found!" exit 1 fi if [ ! -f "$ReleasePath/Updater" ]; then echo "Updater not found!" exit 1 fi echo "Preparing version $AppVersionStrFull, executing Packer.." cd $ReleasePath && ./Packer -path Telegram -path Updater -version $AppVersion $DevParam && cd ./../../Telegram echo "Packer done!" if [ ! -d "$ReleasePath/deploy" ]; then mkdir "$ReleasePath/deploy" fi if [ ! -d "$ReleasePath/deploy/$AppVersionStrMajor" ]; then mkdir "$ReleasePath/deploy/$AppVersionStrMajor" fi echo "Copying Telegram, Updater and $UpdateFile to deploy/$AppVersionStrMajor/$AppVersionStrFull.."; mkdir "$DeployPath" mkdir "$DeployPath/Telegram" mv $ReleasePath/Telegram $DeployPath/Telegram/ mv $ReleasePath/Updater $DeployPath/Telegram/ mv $ReleasePath/$UpdateFile $DeployPath/ cd $DeployPath && tar -cJvf $SetupFile Telegram/ && cd ./../../../../../Telegram fi if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ] || [ "$BuildTarget" == "macstore" ]; then touch ./SourceFiles/telegram.qrc xcodebuild -project Telegram.xcodeproj -alltargets -configuration Release build if [ ! -d "$ReleasePath/$BinaryName.app" ]; then echo "$BinaryName.app not found!" exit 1 fi if [ ! -d "$ReleasePath/$BinaryName.app.dSYM" ]; then echo "$BinaryName.app.dSYM not found!" exit 1 fi AppUUID=`dwarfdump -u "$ReleasePath/$BinaryName.app/Contents/MacOS/$BinaryName" | awk -F " " '{print $2}'` DsymUUID=`dwarfdump -u "$ReleasePath/$BinaryName.app.dSYM" | awk -F " " '{print $2}'` if [ "$AppUUID" != "$DsymUUID" ]; then echo "UUID of binary '$AppUUID' and dSYM '$DsymUUID' differ!" exit 1 fi if [ ! -f "$ReleasePath/$BinaryName.app/Contents/Resources/Icon.icns" ]; then echo "Icon.icns not found in Resources!" exit 1 fi if [ ! -f "$ReleasePath/$BinaryName.app/Contents/MacOS/$BinaryName" ]; then echo "$BinaryName not found in MacOS!" exit 1 fi if [ ! -d "$ReleasePath/$BinaryName.app/Contents/_CodeSignature" ]; then echo "$BinaryName signature not found!" exit 1 fi if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ]; then if [ ! -f "$ReleasePath/$BinaryName.app/Contents/Frameworks/Updater" ]; then echo "Updater not found in Frameworks!" exit 1 fi elif [ "$BuildTarget" == "macstore" ]; then if [ ! -f "$ReleasePath/$BinaryName.pkg" ]; then echo "$BinaryName.pkg not found!" exit 1 fi fi if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ]; then cd $ReleasePath temppath=`hdiutil attach -readwrite tsetup.dmg | awk -F "\t" 'END {print $3}'` cp -R "./$BinaryName.app" "$temppath/" bless --folder "$temppath/" --openfolder "$temppath/" hdiutil detach "$temppath" hdiutil convert tsetup.dmg -format UDZO -imagekey zlib-level=9 -ov -o $SetupFile cd ./../../Telegram cd $ReleasePath && ./Packer.app/Contents/MacOS/Packer -path "$BinaryName.app" -version $AppVersion $DevParam && cd ./../../Telegram fi if [ ! -d "$ReleasePath/deploy" ]; then mkdir "$ReleasePath/deploy" fi if [ ! -d "$ReleasePath/deploy/$AppVersionStrMajor" ]; then mkdir "$ReleasePath/deploy/$AppVersionStrMajor" fi if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ]; then echo "Copying $BinaryName.app and $UpdateFile to deploy/$AppVersionStrMajor/$AppVersionStr.."; mkdir "$DeployPath" mkdir "$DeployPath/Telegram" cp -r "$ReleasePath/$BinaryName.app" $DeployPath/Telegram/ mv "$ReleasePath/$BinaryName.app.dSYM" $DeployPath/ rm "$ReleasePath/$BinaryName.app/Contents/MacOS/$BinaryName" rm "$ReleasePath/$BinaryName.app/Contents/Frameworks/Updater" rm -rf "$ReleasePath/$BinaryName.app/Contents/_CodeSignature" mv $ReleasePath/$UpdateFile $DeployPath/ mv $ReleasePath/$SetupFile $DeployPath/ if [ "$BuildTarget" == "mac32" ]; then ReleaseToPath="./../../../TBuild/tother/tmac32" DeployToPath="$ReleaseToPath/$AppVersionStrMajor/$AppVersionStrFull" if [ ! -d "$ReleaseToPath/$AppVersionStrMajor" ]; then mkdir "$ReleaseToPath/$AppVersionStrMajor" fi if [ ! -d "$DeployToPath" ]; then mkdir "$DeployToPath" fi cp -v $DeployPath/$UpdateFile $DeployToPath/ cp -v $DeployPath/$SetupFile $DeployToPath/ cp -rv $DeployPath/$BinaryName.app.dSYM $DeployToPath/ fi elif [ "$BuildTarget" == "macstore" ]; then echo "Copying $BinaryName.app to deploy/$AppVersionStrMajor/$AppVersionStr.."; mkdir "$DeployPath" cp -r "$ReleasePath/$BinaryName.app" $DeployPath/ mv "$ReleasePath/$BinaryName.pkg" $DeployPath/ mv "$ReleasePath/$BinaryName.app.dSYM" $DeployPath/ rm "$ReleasePath/$BinaryName.app/Contents/MacOS/$BinaryName" rm -rf "$ReleasePath/$BinaryName.app/Contents/_CodeSignature" cp -v "$DeployPath/$BinaryName.app" "$DropboxDeployPath/" cp -rv "$DeployPath/$BinaryName.app.dSYM" "$DropboxDeployPath/" fi fi echo "Version $AppVersionStrFull is ready!";