diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..6835b7ce --- /dev/null +++ b/.travis.yml @@ -0,0 +1,30 @@ +language: cpp + +branches: + only: + - master + - dev + +jobs: + include: + - name: MacOS + os: osx + + addons: + homebrew: + packages: + - qt5 + + script: + - bash deploy/build_macos.sh + +before_cache: + - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then brew cleanup; fi + # Cache only .git files under "/usr/local/Homebrew" so "brew update" does not take 5min every build + - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then find /usr/local/Homebrew \! -regex ".+\.git.+" -delete; fi + +cache: + apt: true + directories: + - $HOME/Library/Caches/Homebrew + - /usr/local/Cellar/qt \ No newline at end of file diff --git a/client/client.pro b/client/client.pro index 726958cd..8e9c0ba3 100644 --- a/client/client.pro +++ b/client/client.pro @@ -59,12 +59,12 @@ RESOURCES += \ TRANSLATIONS = \ translations/amneziavpn_ru.ts -CONFIG(release, debug|release) { - DESTDIR = $$PWD/../../AmneziaVPN-build/client/release - MOC_DIR = $$DESTDIR - OBJECTS_DIR = $$DESTDIR - RCC_DIR = $$DESTDIR -} +#CONFIG(release, debug|release) { +# DESTDIR = $$PWD/../../AmneziaVPN-build/client/release +# MOC_DIR = $$DESTDIR +# OBJECTS_DIR = $$DESTDIR +# RCC_DIR = $$DESTDIR +#} win32 { OTHER_FILES += platform_win/vpnclient.rc diff --git a/deploy/build_macos.sh b/deploy/build_macos.sh new file mode 100644 index 00000000..47c1cee2 --- /dev/null +++ b/deploy/build_macos.sh @@ -0,0 +1,85 @@ +#!/bin/bash +echo "Build script started ..." + +set -o errexit -o nounset + +# Hold on to current directory +PROJECT_DIR=$(pwd) +SCRIPT_DIR=$PROJECT_DIR/deploy + +mkdir -p $SCRIPT_DIR/build +WORK_DIR=$SCRIPT_DIR/build + +echo "Project dir: ${PROJECT_DIR}" +echo "Build dir: ${WORK_DIR}" + +APP_NAME=AmneziaVPN +APP_FILENAME=$APP_NAME.app +APP_DOMAIN=org.amneziavpn.package +PLIST_NAME=$APP_NAME.plist + +RELEASE_DIR=$WORK_DIR +OUT_APP_DIR=$RELEASE_DIR/client +BUNDLE_DIR=$OUT_APP_DIR/$APP_FILENAME +DEPLOY_DATA_DIR=$PROJECT_DIR/deploy/data/macos +INSTALLER_DATA_DIR=$RELEASE_DIR/installer/packages/$APP_DOMAIN/data + +PRO_FILE_PATH=$PROJECT_DIR/$APP_NAME.pro +QMAKE_STASH_FILE=$PROJECT_DIR/.qmake_stash +TARGET_FILENAME=$PROJECT_DIR/$APP_NAME.dmg + +# Seacrh Qt +if [ -f $(brew --prefix qt)/clang_64/bin ]; then QT_BIN_DIR=$(brew --prefix qt)/clang_64/bin; +else QT_BIN_DIR=$HOME/Qt/5.14.2/clang_64/bin; fi + +#QIF_BIN_DIR=$HOME/Qt/Tools/QtInstallerFramework/4.0/bin +ls -al $QT_BIN_DIR/../../.. +QIF_BIN_DIR=$QT_BIN_DIR/../../../Tools/QtInstallerFramework/4.0/bin + + +# Checking env +$QT_BIN_DIR/qmake -v +make -v +clang -v + +# Build App +echo "Building App..." +cd $WORK_DIR + +$QT_BIN_DIR/qmake $PROJECT_DIR/AmneziaVPN.pro 'CONFIG+=release CONFIG+=x86_64' +make -j `sysctl -n hw.ncpu` + +# Build and run tests here + +echo "____________________________________" +echo "............Deploy.................." +echo "____________________________________" + +# Package +echo "Packaging ..." + +#cd $SCRIPT_DIR + +$QT_BIN_DIR/macdeployqt $OUT_APP_DIR/$APP_FILENAME -always-overwrite +cp -av $RELEASE_DIR/service/server/$APP_NAME-service.app/Contents/macOS/$APP_NAME-service $BUNDLE_DIR/Contents/macOS +cp -Rv $PROJECT_DIR/deploy/data/macos/* $BUNDLE_DIR/Contents/macOS + + +mkdir -p $INSTALLER_DATA_DIR +cp -av $PROJECT_DIR/deploy/installer $RELEASE_DIR +cp -av $DEPLOY_DATA_DIR/post_install.sh $INSTALLER_DATA_DIR/post_install.sh +cp -av $DEPLOY_DATA_DIR/post_uninstall.sh $INSTALLER_DATA_DIR/post_uninstall.sh +cp -av $DEPLOY_DATA_DIR/$PLIST_NAME $INSTALLER_DATA_DIR/$PLIST_NAME + +rm -f $BUNDLE_DIR/Contents/macOS/post_install.sh $BUNDLE_DIR/Contents/macOS/post_uninstall.sh +chmod a+x $INSTALLER_DATA_DIR/post_install.sh $INSTALLER_DATA_DIR/post_uninstall.sh + +cd $BUNDLE_DIR +tar czf $INSTALLER_DATA_DIR/$APP_NAME.tar.gz ./ + +cd $RELEASE_DIR/installer +$QIF_BIN_DIR/binarycreator --offline-only -v -c config/macos.xml -p packages -f $APP_NAME +hdiutil create -volname $APP_NAME -srcfolder $APP_NAME.app -ov -format UDZO $TARGET_FILENAME + + +echo "Finished, artifact is $PROJECT_DIR/$APP_NAME.dmg" diff --git a/platform/post-uninstall/post-uninstall.pro b/platform/post-uninstall/post-uninstall.pro index a59aa9f8..93ffc8e4 100644 --- a/platform/post-uninstall/post-uninstall.pro +++ b/platform/post-uninstall/post-uninstall.pro @@ -6,11 +6,11 @@ QT = core SOURCES = \ main.cpp -CONFIG(release, debug|release) { - DESTDIR = $$PWD/../../../AmneziaVPN-build/post-uninstall/release - MOC_DIR = $$DESTDIR - OBJECTS_DIR = $$DESTDIR - RCC_DIR = $$DESTDIR -} +#CONFIG(release, debug|release) { +# DESTDIR = $$PWD/../../../AmneziaVPN-build/post-uninstall/release +# MOC_DIR = $$DESTDIR +# OBJECTS_DIR = $$DESTDIR +# RCC_DIR = $$DESTDIR +#} INCLUDEPATH += "$$PWD/../../client" diff --git a/service/server/server.pro b/service/server/server.pro index 9b35d7af..9ed88d9d 100644 --- a/service/server/server.pro +++ b/service/server/server.pro @@ -20,11 +20,11 @@ SOURCES = \ include(../src/qtservice.pri) -CONFIG(release, debug|release) { - DESTDIR = $$PWD/../../../AmneziaVPN-build/server/release - MOC_DIR = $$DESTDIR - OBJECTS_DIR = $$DESTDIR - RCC_DIR = $$DESTDIR -} +#CONFIG(release, debug|release) { +# DESTDIR = $$PWD/../../../AmneziaVPN-build/server/release +# MOC_DIR = $$DESTDIR +# OBJECTS_DIR = $$DESTDIR +# RCC_DIR = $$DESTDIR +#} INCLUDEPATH += "$$PWD/../../client"