From 19cd184146ce363867eac5a0bded1bdb4ae3d68f Mon Sep 17 00:00:00 2001 From: Kyle Bloom Date: Fri, 1 Oct 2021 08:55:44 +0100 Subject: [PATCH] Add M1 workflow (#7098) * Add m1 workflow * Set shell envirnonment to arm64 * ChangeLog * Change dmg name * Change back to parameter passing * Send to binaries server * Remove pull and push triggers * Add m1 to mac tests * Set correct shell for m1 mac * Remove 10.13 build for core * Core build for macos * Always generate version file * Remove qt from core builds * Exclude tests from core build * move synergyd and coverage option * Aws core builds to only build core * Windows upload release folder * Use static openssl for core builds * Fix destination for pi core builds * Only upload core builds with release * Rename variable step * Remove matrix * Test windows build changes * Remove unnecessary cmake option * Remove test --- .github/workflows/aws-upload-linux-centos.yml | 37 +++--- .github/workflows/aws-upload-linux-debian.yml | 37 +++--- .github/workflows/aws-upload-linux-fedora.yml | 9 +- .github/workflows/aws-upload-linux-ubuntu.yml | 17 ++- .github/workflows/aws-upload-mac-10.13.yml | 45 ------- .github/workflows/aws-upload-mac-10.15.yml | 39 ------ .github/workflows/aws-upload-mac.yml | 58 +++++++++ .github/workflows/aws-upload-raspberry.yml | 39 +++--- .github/workflows/aws-upload-windows.yml | 123 ++++++------------ .github/workflows/job-build-mac-m1.yaml | 121 +++++++++++++++++ .github/workflows/job-test-mac.yml | 57 +++++--- CMakeLists.txt | 18 +-- ChangeLog | 1 + src/cmd/CMakeLists.txt | 6 +- 14 files changed, 346 insertions(+), 261 deletions(-) delete mode 100644 .github/workflows/aws-upload-mac-10.13.yml delete mode 100644 .github/workflows/aws-upload-mac-10.15.yml create mode 100644 .github/workflows/aws-upload-mac.yml create mode 100644 .github/workflows/job-build-mac-m1.yaml diff --git a/.github/workflows/aws-upload-linux-centos.yml b/.github/workflows/aws-upload-linux-centos.yml index 29b448df2..3cf9201a1 100644 --- a/.github/workflows/aws-upload-linux-centos.yml +++ b/.github/workflows/aws-upload-linux-centos.yml @@ -1,15 +1,18 @@ -name: CentOS-Upload +name: CentOS - Core on: release: types: [created] jobs: - build-arch64: + build-core-centos: runs-on: ubuntu-latest container: symless/synergy-core:${{ matrix.distro }} env: GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" strategy: matrix: include: @@ -19,20 +22,20 @@ jobs: name: ${{ matrix.distro }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Build - run: | - mkdir build - cd build - cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr .. - . ./version - make -j + - name: Build + run: | + mkdir build + cd build + cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr .. + . ./version + make -j - - uses: shallwefootball/s3-upload-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/${{matrix.distro}}/" \ No newline at end of file + - uses: shallwefootball/s3-upload-action@master + with: + aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: ./build/bin + destination_dir: "./synergy3/latest/${{matrix.distro}}/" diff --git a/.github/workflows/aws-upload-linux-debian.yml b/.github/workflows/aws-upload-linux-debian.yml index 5143f3d03..e4cbc7abc 100644 --- a/.github/workflows/aws-upload-linux-debian.yml +++ b/.github/workflows/aws-upload-linux-debian.yml @@ -1,15 +1,18 @@ -name: Debian-Upload +name: Debian- Core on: release: types: [created] jobs: - build-arch64: + build-core-debian: runs-on: ubuntu-latest container: symless/synergy-core:${{ matrix.distro }} env: GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" strategy: matrix: include: @@ -19,20 +22,20 @@ jobs: name: ${{ matrix.distro }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Build - run: | - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - . ./version - make -j + - name: Build + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release .. + . ./version + make -j - - uses: shallwefootball/s3-upload-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/${{matrix.distro}}/" + - uses: shallwefootball/s3-upload-action@master + with: + aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: ./build/bin + destination_dir: "./synergy3/latest/${{matrix.distro}}/" diff --git a/.github/workflows/aws-upload-linux-fedora.yml b/.github/workflows/aws-upload-linux-fedora.yml index 91f6e6a1f..38b1fa0f0 100644 --- a/.github/workflows/aws-upload-linux-fedora.yml +++ b/.github/workflows/aws-upload-linux-fedora.yml @@ -1,15 +1,18 @@ -name: Fedora-Upload +name: Fedora - Core on: release: types: [created] jobs: - upload-to-s3: + build-core-fedora: runs-on: ubuntu-latest container: symless/synergy-core:${{ matrix.distro }} env: GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" strategy: matrix: include: @@ -38,4 +41,4 @@ jobs: aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} aws_bucket: ${{ secrets.AWS_BUCKET }} source_dir: ./build/bin - destination_dir: "./synergy3/latest/${{matrix.distro}}/" \ No newline at end of file + destination_dir: "./synergy3/latest/${{matrix.distro}}/" diff --git a/.github/workflows/aws-upload-linux-ubuntu.yml b/.github/workflows/aws-upload-linux-ubuntu.yml index 0ec3fbb1f..838e3b1de 100644 --- a/.github/workflows/aws-upload-linux-ubuntu.yml +++ b/.github/workflows/aws-upload-linux-ubuntu.yml @@ -1,22 +1,25 @@ -name: Ubuntu-Upload +name: Ubuntu - Core on: release: types: [created] jobs: - upload-to-s3: + build-core-ubuntu: runs-on: ubuntu-latest container: symless/synergy-core:ubuntu${{ matrix.distro }} env: GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" strategy: matrix: - distro: ['20.04', '21.04', '18.04'] - flag: ['-j'] + distro: ["20.04", "21.04", "18.04"] + flag: ["-j"] include: - - distro: '16.04' - flag: '-j1' + - distro: "16.04" + flag: "-j1" name: ubuntu${{ matrix.distro }} @@ -37,4 +40,4 @@ jobs: aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} aws_bucket: ${{ secrets.AWS_BUCKET }} source_dir: ./build/bin - destination_dir: "./synergy3/latest/Ubuntu_${{matrix.distro}}/" \ No newline at end of file + destination_dir: "./synergy3/latest/Ubuntu_${{matrix.distro}}/" diff --git a/.github/workflows/aws-upload-mac-10.13.yml b/.github/workflows/aws-upload-mac-10.13.yml deleted file mode 100644 index 4d90a2162..000000000 --- a/.github/workflows/aws-upload-mac-10.13.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Mac-10.13-Upload - -on: - release: - types: [created] - -jobs: - build-on-mac-10_13: - runs-on: [self-hosted, macOS, X64, 10.13] - env: - GIT_COMMIT: ${{ github.sha }} - Qt5_DIR: /usr/local/opt/qt/5.15.2/clang_64 - OpenSSL_DIR: /usr/local/ssl - - steps: - - uses: actions/checkout@v2 - - - name: Setup Environment - run: | - python3 -m pip install dmgbuild - - - name: Build SYNERGY - env: - CMAKE_PREFIX_PATH: "${{ env.Qt5_DIR }};${{ env.OpenSSL_DIR }}" - run: | - export PATH="$Qt5_DIR/bin:$PATH" - python3 CI/build_version.py - mkdir build - cd build - cmake \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \ - -DCMAKE_OSX_ARCHITECTURES=x86_64 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CONFIGURATION_TYPES=Release .. - . ./version - make -j - make install/strip - - - uses: shallwefootball/s3-upload-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/macOS_10.13/" \ No newline at end of file diff --git a/.github/workflows/aws-upload-mac-10.15.yml b/.github/workflows/aws-upload-mac-10.15.yml deleted file mode 100644 index 398282889..000000000 --- a/.github/workflows/aws-upload-mac-10.15.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Mac-10.15-Upload - -on: - release: - types: [created] - -jobs: - build-arch64: - runs-on: macos-10.15 - - env: - GIT_COMMIT: ${{ github.sha }} - - steps: - - uses: actions/checkout@v2 - - - name: Install brew dependencies - run: | - brew list qt5 &>/dev/null || brew install qt5 - brew list openssl &>/dev/null || brew install openssl - - - name: Build - run: | - mkdir build - cd build - cmake \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH="$(brew --prefix qt5);$(brew --prefix openssl)" .. - . ./version - make -j - - - uses: shallwefootball/s3-upload-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/macOS_10.15/" \ No newline at end of file diff --git a/.github/workflows/aws-upload-mac.yml b/.github/workflows/aws-upload-mac.yml new file mode 100644 index 000000000..2e2533a6b --- /dev/null +++ b/.github/workflows/aws-upload-mac.yml @@ -0,0 +1,58 @@ +name: macOS - Core + +on: + release: + types: [created] + +jobs: + build-core-macos: + runs-on: ${{ matrix.os }} + + defaults: + run: + shell: ${{ matrix.shell }} + + strategy: + matrix: + include: + - os: "macos-10.15" + target: "10.14" + shell: "bash" + destination: macOS_x64 + - os: [self-hosted, macOS, arm64] + target: "" + shell: "/usr/bin/arch -arch arm64e /bin/bash --noprofile --norc -eo pipefail {0}" + destination: macOS_arm64 + + env: + GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" + + steps: + - uses: actions/checkout@v2 + + - name: Install brew dependencies + run: | + brew list openssl &>/dev/null || brew install openssl + + - name: Build + env: + CMAKE_OSX_DEPLOYMENT_TARGET: ${{ matrix.target }} + run: | + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="$(brew --prefix openssl)" .. + . ./version + make -j + + - uses: shallwefootball/s3-upload-action@master + with: + aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: ./build/bin + destination_dir: "./synergy3/latest/${{ matrix.destination }}/" diff --git a/.github/workflows/aws-upload-raspberry.yml b/.github/workflows/aws-upload-raspberry.yml index 314db3092..10e492dc0 100644 --- a/.github/workflows/aws-upload-raspberry.yml +++ b/.github/workflows/aws-upload-raspberry.yml @@ -1,30 +1,37 @@ -name: Raspberry Pi - Upload +name: Raspberry Pi - Core on: release: types: [created] jobs: - test-on-pi: + build-core-pi: runs-on: ${{ matrix.os }} strategy: matrix: - os: [[self-hosted, linux, ARM, pi-3], [self-hosted, linux, ARM64, pi-4]] + include: + - os: [self-hosted, linux, ARM, pi-3] + destination: "raspberry-pi-3_arm" + - os: [self-hosted, linux, ARM64, pi-4] + destination: "raspberry-pi-4_arm64" env: GIT_COMMIT: ${{ github.sha }} + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Build - run: | - mkdir -p build; cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make + - name: Build + run: | + mkdir -p build; cd build + cmake -DCMAKE_BUILD_TYPE=Release .. + make - - uses: shallwefootball/s3-upload-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/Raspberry/${{ matrix.os[3] }}_${{ matrix.os[2]}}/" \ No newline at end of file + - uses: shallwefootball/s3-upload-action@master + with: + aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: ./build/bin + destination_dir: "./synergy3/latest/${{ matrix.destination }}" diff --git a/.github/workflows/aws-upload-windows.yml b/.github/workflows/aws-upload-windows.yml index 236226cbc..e9895ec2c 100644 --- a/.github/workflows/aws-upload-windows.yml +++ b/.github/workflows/aws-upload-windows.yml @@ -1,101 +1,60 @@ -name: Windows-Upload +name: Windows - Core on: release: types: [created] jobs: - build: + build-core-windows: runs-on: windows-2019 env: GIT_COMMIT: ${{ github.sha }} BONJOUR_BASE_DIR: ${{ github.workspace }}\deps\bonjour - QT_BASE_DIR: ${{ github.workspace }}\deps\Qt - QT_VERSION: 5.12.6 - QT_BASE_URL: http://qt.mirror.constant.com/ - QT_LIB_DIR: ${{ github.workspace }}\deps\Qt\5.12.6 - - strategy: - matrix: - arch: ['x64'] + SYNERGY_NO_LEGACY: "1" + SYNERGY_NO_TESTS: "1" + SYNERGY_STATIC_OPENSSL: "1" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Set up QT variables - run: | - if ('${{ matrix.arch }}' -eq 'x64') - { - Write-Output "::set-output name=QT_ARCH::win64_msvc2017_64" - Write-Output "::set-output name=QT_DIR::msvc2017_64" - Write-Output "::set-output name=OPEN_SSL_DIR::C:\\Program Files\\OpenSSL-Win64" - } - else - { - Write-Output "::set-output name=QT_ARCH::win32_msvc2017" - Write-Output "::set-output name=QT_DIR::msvc2017" - Write-Output "::set-output name=OPEN_SSL_DIR::C:\\Program Files (x86)\\OpenSSL-Win32" - } - id: qt-setup + - name: Cache Bonjour + id: cache-bonjour + uses: actions/cache@v1 + with: + path: ${{ env.BONJOUR_BASE_DIR }} + key: ${{ runner.os }}-Bonjour - - name: Cache Qt - id: cache-qt - uses: actions/cache@v1 - with: - path: ${{ env.QT_BASE_DIR }} - key: ${{ runner.os }}-Qt_${{ env.QT_VERSION }}-${{ steps.qt-setup.outputs.QT_ARCH }} + - name: Install Bonjour SDK + if: steps.cache-bonjour.outputs.cache-hit != 'true' + run: | + New-Item -Force -ItemType Directory -Path "$env:BONJOUR_BASE_DIR" + $client = new-object System.Net.WebClient + $client.DownloadFile("https://binaries.symless.com/bonjour/BonjourSDK.zip",".\bonjoursdk.zip") + [System.IO.Compression.ZipFile]::ExtractToDirectory(".\bonjoursdk.zip", "$env:BONJOUR_BASE_DIR") - - name: LOG Qt - run: | - Write-Output "matrix arch ${{ matrix.arch }}" - Write-Output "python -m aqt install --outputdir $env:QT_BASE_DIR --base $env:QT_BASE_URL $env:QT_VERSION windows desktop ${{ steps.qt-setup.outputs.QT_ARCH }}" - + - name: Install OpenSSL + run: | + choco uninstall openssl -y --ignore-autouninstaller-failure --no-progress + choco install openssl -y --no-progress - - name: Install Qt - if: steps.cache-qt.outputs.cache-hit != 'true' - run: | - pip install aqtinstall - python -m aqt install --outputdir $env:QT_BASE_DIR --base $env:QT_BASE_URL $env:QT_VERSION windows desktop ${{ steps.qt-setup.outputs.QT_ARCH }} + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1.0.2 + - name: Build + env: + CMAKE_PREFIX_PATH: "C:\\Program Files\\OpenSSL-Win64" + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release .. + . ./version + msbuild synergy-core.sln /p:Configuration=Release - - name: Cache Bonjour - id: cache-bonjour - uses: actions/cache@v1 - with: - path: ${{ env.BONJOUR_BASE_DIR }} - key: ${{ runner.os }}-Bonjour - - - name: Install Bonjour SDK - if: steps.cache-bonjour.outputs.cache-hit != 'true' - run: | - New-Item -Force -ItemType Directory -Path "$env:BONJOUR_BASE_DIR" - $client = new-object System.Net.WebClient - $client.DownloadFile("https://binaries.symless.com/bonjour/BonjourSDK.zip",".\bonjoursdk.zip") - [System.IO.Compression.ZipFile]::ExtractToDirectory(".\bonjoursdk.zip", "$env:BONJOUR_BASE_DIR") - - - name: Install OpenSSL - run: | - choco uninstall openssl -y --ignore-autouninstaller-failure --no-progress - choco install openssl -y --force${{ matrix.arch }} --no-progress - - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.0.2 - - - name: Build - env: - CMAKE_PREFIX_PATH: "${{ env.QT_LIB_DIR }}\\${{ steps.qt-setup.outputs.QT_DIR }}\\;${{ steps.qt-setup.outputs.OPEN_SSL_DIR }}" - run: | - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - . ./version - msbuild synergy-core.sln /p:Configuration=Release - - - uses: anshulrgoyal/upload-s3-action@master - with: - aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} - aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} - aws_bucket: ${{ secrets.AWS_BUCKET }} - source_dir: ./build/bin - destination_dir: "./synergy3/latest/Windows_${{ matrix.arch }}/" + - uses: anshulrgoyal/upload-s3-action@master + with: + aws_key_id: ${{ secrets.AWS_S3_UPLOAD_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_S3_UPLOAD_SECRET }} + aws_bucket: ${{ secrets.AWS_BUCKET }} + source_dir: ./build/bin/Release + destination_dir: "./synergy3/latest/Windows_x64/" diff --git a/.github/workflows/job-build-mac-m1.yaml b/.github/workflows/job-build-mac-m1.yaml new file mode 100644 index 000000000..f11e0cebd --- /dev/null +++ b/.github/workflows/job-build-mac-m1.yaml @@ -0,0 +1,121 @@ +name: Mac + +on: + release: + types: [created] + +defaults: + run: + shell: "/usr/bin/arch -arch arm64e /bin/bash --noprofile --norc -eo pipefail {0}" + +jobs: + build-on-mac-m1: + runs-on: [self-hosted, macOS, arm64] + + strategy: + matrix: + enterprise: ["1", ""] + env: + GIT_COMMIT: ${{ github.sha }} + SYNERGY_ENTERPRISE: ${{ matrix.enterprise }} + CODESIGN_ID: "Developer ID Application: Symless Ltd (4HX897Y6GJ)" + + steps: + - uses: actions/checkout@v2 + + - name: Setup Environment + run: | + python3 -m pip install dmgbuild + brew list qt5 &>/dev/null || brew install qt5 + brew list openssl &>/dev/null || brew install openssl + + - name: Build SYNERGY + env: + CMAKE_BUILD_TYPE: Release + run: | + export + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="$(brew --prefix qt5);$(brew --prefix openssl)" .. + . ./version + make -j + make install/strip + + - name: Version Info + id: version + run: | + . ./build/version + SYNERGY_VERSION="${SYNERGY_VERSION_MAJOR}.${SYNERGY_VERSION_MINOR}.${SYNERGY_VERSION_PATCH}" + SYNERGY_REVISION=$(git rev-parse --short=8 HEAD) + SYNERGY_DMG_VERSION="${SYNERGY_VERSION}-${SYNERGY_VERSION_STAGE}.${SYNERGY_REVISION}" + echo "::set-output name=SYNERGY_VERSION_MAJOR::$SYNERGY_VERSION_MAJOR" + echo "::set-output name=SYNERGY_VERSION_MINOR::$SYNERGY_VERSION_MINOR" + echo "::set-output name=SYNERGY_VERSION_PATCH::$SYNERGY_VERSION_PATCH" + echo "::set-output name=SYNERGY_VERSION_STAGE::$SYNERGY_VERSION_STAGE" + echo "::set-output name=SYNERGY_VERSION_BUILD::$SYNERGY_VERSION_BUILD" + echo "::set-output name=SYNERGY_VERSION::$SYNERGY_VERSION" + echo "::set-output name=SYNERGY_REVISION::$SYNERGY_REVISION" + echo "::set-output name=SYNERGY_DMG_VERSION::$SYNERGY_DMG_VERSION" + if [ "$SYNERGY_ENTERPRISE" == '1' ] + then + SYNERGY_PACKAGE_NAME='synergy-enterprise' + SYNERGY_REMOTE_FOLDER="synergy-core/v1-core-enterprise/${SYNERGY_VERSION}/${SYNERGY_VERSION_STAGE}/b${SYNERGY_VERSION_BUILD}-${SYNERGY_REVISION}" + else + SYNERGY_PACKAGE_NAME='synergy' + SYNERGY_REMOTE_FOLDER="synergy-core/v1-core-standard/${SYNERGY_VERSION}/${SYNERGY_VERSION_STAGE}/b${SYNERGY_VERSION_BUILD}-${SYNERGY_REVISION}" + fi + SYNERGY_DMG_FILENAME="${SYNERGY_PACKAGE_NAME}_${SYNERGY_DMG_VERSION}_macos-arm64.dmg" + echo "SYNERGY_REMOTE_FOLDER: $SYNERGY_REMOTE_FOLDER" + echo "::set-output name=SYNERGY_REMOTE_FOLDER::$SYNERGY_REMOTE_FOLDER" + echo "::set-output name=SYNERGY_PACKAGE_NAME::$SYNERGY_PACKAGE_NAME" + echo "::set-output name=SYNERGY_DMG_FILENAME::$SYNERGY_DMG_FILENAME" + + - name: Sign applicaiton + run: | + export PATH="$(brew --prefix qt5)/bin:$PATH" + macdeployqt ${{ github.workspace }}/build/bundle/Synergy.app -codesign="$CODESIGN_ID" + codesign -f --options runtime --deep -s "$CODESIGN_ID" ${{ github.workspace }}/build/bundle/Synergy.app + ln -s /Applications ${{ github.workspace }}/build/bundle/Applications + + - name: Create Installer + env: + SYNERGY_DMG_FILENAME: ${{ steps.version.outputs.SYNERGY_DMG_FILENAME }} + run: | + dmgbuild \ + -s CI/MacOS/installator_settings.py \ + -D app=${{ github.workspace }}/build/bundle/Synergy.app \ + -D background=${{ github.workspace }}/build/bundle/Synergy.app/Contents/Resources/.installer_background.tiff \ + "Synergy" \ + $SYNERGY_DMG_FILENAME + mkdir pkg + mv $SYNERGY_DMG_FILENAME pkg/ + cd pkg + md5 -r $SYNERGY_DMG_FILENAME >> $SYNERGY_DMG_FILENAME.checksum.txt + shasum $SYNERGY_DMG_FILENAME >> $SYNERGY_DMG_FILENAME.checksum.txt + shasum -a 256 $SYNERGY_DMG_FILENAME >> $SYNERGY_DMG_FILENAME.checksum.txt + + - name: Submit for Notarization + env: + ASC_USERNAME: ${{ secrets.ASC_USERNAME }} + NOTORY_APP_PASSWORD: ${{ secrets.NOTORY_APP_PASSWORD }} + SYNERGY_VERSION: ${{ steps.version.outputs.SYNERGY_VERSION }} + SYNERGY_REVISION: ${{ steps.version.outputs.SYNERGY_REVISION }} + SYNERGY_DMG_FILENAME: ${{ steps.version.outputs.SYNERGY_DMG_FILENAME }} + run: | + cd pkg + ../CI/MacOS/notorize.sh + + - name: Send package to Sandor + env: + HOST: ${{ secrets.SANDOR_HOST }} + USER: ${{ secrets.SANDOR_USERNAME }} + KEY: ${{ secrets.SANDOR_KEY }} + LOCAL: "${{ github.workspace }}/pkg/*" + REMOTE: "${{ steps.version.outputs.SYNERGY_REMOTE_FOLDER }}" + run: | + echo -e "${KEY}" >__TEMP_INPUT_KEY_FILE + chmod 600 __TEMP_INPUT_KEY_FILE + ssh -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE -p 22 "${USER}"@"${HOST}" "mkdir -p ${REMOTE}" + scp -o StrictHostKeyChecking=no -v -i __TEMP_INPUT_KEY_FILE -P 22 -r ${LOCAL} "${USER}"@"${HOST}":"${REMOTE}" diff --git a/.github/workflows/job-test-mac.yml b/.github/workflows/job-test-mac.yml index ce7b6eb10..1dd59e1f7 100644 --- a/.github/workflows/job-test-mac.yml +++ b/.github/workflows/job-test-mac.yml @@ -2,35 +2,50 @@ name: Mac on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] jobs: - build-arch64: - runs-on: macos-10.15 + test-macos: + runs-on: ${{ matrix.os }} + + defaults: + run: + shell: ${{ matrix.shell }} + + strategy: + matrix: + include: + - os: "macos-10.15" + target: "10.14" + shell: "bash" + - os: [self-hosted, macOS, arm64] + target: "" + shell: "/usr/bin/arch -arch arm64e /bin/bash --noprofile --norc -eo pipefail {0}" env: GIT_COMMIT: ${{ github.sha }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Install brew dependencies - run: | - brew list qt5 &>/dev/null || brew install qt5 - brew list openssl &>/dev/null || brew install openssl + - name: Install brew dependencies + run: | + brew list qt5 &>/dev/null || brew install qt5 + brew list openssl &>/dev/null || brew install openssl - - name: Build - run: | - mkdir build - cd build - cmake \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_PREFIX_PATH="$(brew --prefix qt5);$(brew --prefix openssl)" .. - . ./version - make -j + - name: Build + env: + CMAKE_OSX_DEPLOYMENT_TARGET: ${{ matrix.target }} + run: | + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="$(brew --prefix qt5);$(brew --prefix openssl)" .. + . ./version + make -j - - name: Run unit test - run: ./build/bin/unittests + - name: Run unit test + run: ./build/bin/unittests diff --git a/CMakeLists.txt b/CMakeLists.txt index 50e712fad..7586c056e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,15 +19,18 @@ project (synergy-core C CXX) if (DEFINED ENV{SYNERGY_NO_LEGACY}) option (SYNERGY_BUILD_LEGACY_GUI "Build the legacy GUI" OFF) - option (SYNERGY_BUILD_LEGACY_SERVICE "Build the legacy service (synergyd)" OFF) option (SYNERGY_BUILD_LEGACY_INSTALLER "Build the legacy installer" OFF) else() option (SYNERGY_BUILD_LEGACY_GUI "Build the legacy GUI" ON) - option (SYNERGY_BUILD_LEGACY_SERVICE "Build the legacy service (synergyd)" ON) option (SYNERGY_BUILD_LEGACY_INSTALLER "Build the legacy installer" ON) endif() -option (BUILD_TESTS "Override building of tests" ON) -option (ENABLE_COVERAGE "Build with coverage") + +if (DEFINED ENV{SYNERGY_NO_TESTS}) + option (BUILD_TESTS "Override building of tests" OFF) +else() + option (BUILD_TESTS "Override building of tests" ON) + option (ENABLE_COVERAGE "Build with coverage") +endif() if ($ENV{SYNERGY_ENTERPRISE}) option (SYNERGY_ENTERPRISE "Build Enterprise" ON) @@ -326,7 +329,7 @@ endif() # Apple has to use static libraries because # "Use of the Apple-provided OpenSSL libraries by apps is strongly discouraged." # https://developer.apple.com/library/archive/documentation/Security/Conceptual/cryptoservices/SecureNetworkCommunicationAPIs/SecureNetworkCommunicationAPIs.html -if(APPLE) +if(APPLE OR DEFINED ENV{SYNERGY_STATIC_OPENSSL}) set(OPENSSL_USE_STATIC_LIBS TRUE) endif() find_package(OpenSSL REQUIRED) @@ -405,6 +408,7 @@ macro(generate_versionfile) endif() endmacro(generate_versionfile) +generate_versionfile() if (${SYNERGY_BUILD_LEGACY_INSTALLER}) # @@ -416,8 +420,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set (SYNERGY_BUNDLE_DIR ${CMAKE_BINARY_DIR}/bundle) set (SYNERGY_BUNDLE_APP_DIR ${SYNERGY_BUNDLE_DIR}/Synergy.app) set (SYNERGY_BUNDLE_BINARY_DIR ${SYNERGY_BUNDLE_APP_DIR}/Contents/MacOS) - - generate_versionfile() configure_files (${SYNERGY_BUNDLE_SOURCE_DIR} ${SYNERGY_BUNDLE_DIR}) endif() @@ -426,7 +428,6 @@ endif() # if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") message (STATUS "Configuring the v1 installer") - generate_versionfile() set(QT_PATH $ENV{CMAKE_PREFIX_PATH}) configure_files (${CMAKE_CURRENT_SOURCE_DIR}/dist/wix ${CMAKE_BINARY_DIR}/installer) endif() @@ -442,7 +443,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux|.*BSD|DragonFly") else() install(FILES res/synergy.desktop DESTINATION share/applications) endif() - generate_versionfile() endif() else() diff --git a/ChangeLog b/ChangeLog index 4b303145c..4244fcc66 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,7 @@ Enhancements: Github Actions: - #1043 Adding upload to s3 feature on all OSes +- #7098 Add Apple M1 runner =========== v1.14.1-stable diff --git a/src/cmd/CMakeLists.txt b/src/cmd/CMakeLists.txt index 450c8417e..7156ac9d6 100644 --- a/src/cmd/CMakeLists.txt +++ b/src/cmd/CMakeLists.txt @@ -14,11 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +add_subdirectory(synergyd) add_subdirectory(synergyc) add_subdirectory(synergys) add_subdirectory(syntool) - -if (SYNERGY_BUILD_LEGACY_SERVICE) - add_subdirectory(synergyd) -endif (SYNERGY_BUILD_LEGACY_SERVICE) -