From 59e1c0165f57b2bac697a7a1db945c06a98cb961 Mon Sep 17 00:00:00 2001 From: Tal Regev Date: Sat, 9 Apr 2022 17:11:45 +0300 Subject: [PATCH] Add windows libs cmake --- .github/workflows/windows.yml | 62 ++++++++++++++++++------------- linux/ci_configure_libs_cmake.sh | 1 - windows/bootstrap_vcpkg_cmake.bat | 20 ++++++++++ windows/ci_build_libs_cmake.bat | 31 ++++++++++++++++ 4 files changed, 87 insertions(+), 27 deletions(-) create mode 100644 windows/bootstrap_vcpkg_cmake.bat create mode 100644 windows/ci_build_libs_cmake.bat diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 6d4683af11..b0fc49c802 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -8,16 +8,17 @@ on: - cron: '15 12 * * 0' env: - AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_KEY }} + AWS_ACCESS_KEY_ID: ${{secrets.S3_ACCESS_KEY}} + AWS_SECRET_ACCESS_KEY: ${{secrets.S3_SECRET_KEY}} AWS_DEFAULT_REGION: us-west-2 jobs: build: - name: ${{ matrix.configuration }}-${{ matrix.platform }}-build + name: ${{matrix.configuration}}-${{matrix.platform}}-${{matrix.type}} runs-on: windows-2019 strategy: matrix: + type: [libs-cmake, msbuild] platform: [x64, ARM64] configuration: [Release] fail-fast: false @@ -33,25 +34,25 @@ jobs: id: DownloadOpenCppCoverage with: url: "https://opencppcoverage.gallerycdn.vsassets.io/extensions/opencppcoverage/opencppcoverageplugin/0.9.7.1/1581265346391/OpenCppCoverage-0.9.7.1.vsix" - target: ${{ github.workspace }}\temp\ + target: ${{github.workspace}}\temp\ - name: Unzip OpenCppCoverage if: success() && matrix.platform == 'x64' uses: DuckSoft/extract-7z-action@v1.0 with: - pathSource: ${{ github.workspace }}\temp\OpenCppCoverage-0.9.7.1.vsix - pathTarget: ${{ github.workspace }}\temp\OpenCppCoverage + pathSource: ${{github.workspace}}\temp\OpenCppCoverage-0.9.7.1.vsix + pathTarget: ${{github.workspace}}\temp\OpenCppCoverage - name: Setup msbuild uses: microsoft/setup-msbuild@v1 - name: Check if build is running from origin repo - if: ${{ success() && env.AWS_ACCESS_KEY_ID != 0 && env.AWS_SECRET_ACCESS_KEY != 0 }} + if: ${{success() && env.AWS_ACCESS_KEY_ID != 0 && env.AWS_SECRET_ACCESS_KEY != 0}} run: | echo "VCPKG_BINARY_SOURCES=clear;x-aws,s3://vcpkg.cache.boinc/,readwrite" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - name: Check if build is running from fork - if: ${{ success() && (env.AWS_ACCESS_KEY_ID == 0 || env.AWS_SECRET_ACCESS_KEY == 0) }} + if: ${{success() && (env.AWS_ACCESS_KEY_ID == 0 || env.AWS_SECRET_ACCESS_KEY == 0)}} run: | echo "VCPKG_BINARY_SOURCES=clear;x-aws-config,no-sign-request;x-aws,s3://vcpkg.cache.boinc/,read" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append @@ -62,31 +63,36 @@ jobs: uses: actions/cache@v2 with: path: | - ${{ github.workspace }}\3rdParty\Windows\cuda\ - key: windows-${{ matrix.platform }}-${{ matrix.configuration }}-${{ hashFiles('win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj', '.github/workflows/windows.yml') }} + ${{github.workspace}}\3rdParty\Windows\cuda\ + key: windows-${{matrix.platform}}-${{matrix.configuration}}-${{hashFiles('win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj', '.github/workflows/windows.yml')}} - name: Build - run: msbuild win_build\boinc_vs2019.sln -p:Configuration=${{ matrix.configuration }} -p:Platform=${{ matrix.platform }} -p:VcpkgTripletConfig=ci -p:BuildConfig=ci -m + if: success() && matrix.type == 'msbuild' + run: msbuild win_build\boinc_vs2019.sln -p:Configuration=${{matrix.configuration}} -p:Platform=${{matrix.platform}} -p:VcpkgTripletConfig=ci -p:BuildConfig=ci -m + + - name: Build CMake + if: success() && matrix.type == 'libs-cmake' + run: windows\ci_build_libs_cmake.bat ${{matrix.platform}} ${{matrix.configuration}} - name: Run tests - if: success() && matrix.platform == 'x64' - working-directory: win_build\Build\${{ matrix.platform }}\${{ matrix.configuration }} - run: ${{ github.workspace }}\temp\OpenCppCoverage\OpenCppCoverage-x64\OpenCppCoverage.exe --cover_children --optimized_build --sources ${{ github.workspace }} --export_type=cobertura:cobertura.xml -- unittests.exe --gtest_output=xml:gtest.xml + if: success() && matrix.platform == 'x64' && matrix.type == 'msbuild' + working-directory: win_build\Build\${{matrix.platform}}\${{matrix.configuration}} + run: ${{github.workspace}}\temp\OpenCppCoverage\OpenCppCoverage-x64\OpenCppCoverage.exe --cover_children --optimized_build --sources ${{github.workspace}} --export_type=cobertura:cobertura.xml -- unittests.exe --gtest_output=xml:gtest.xml - name: Prepare logs on failure - if: ${{ failure() }} + if: ${{failure()}} run: | 7z.exe a -t7z -mx=9 deploy/logs.7z -r0 3rdParty/Windows/vcpkg/buildtrees/*.log - name: Upload logs on failure - if: ${{ failure() }} + if: ${{failure()}} uses: actions/upload-artifact@v2 with: - name: windows_logs_${{ matrix.type }}_${{ github.event.pull_request.head.sha }} + name: windows_logs_${{matrix.type}}_${{github.event.pull_request.head.sha}} path: deploy/logs.7z - name: Prepare artifacts for deploy - if: ${{ success() }} + if: success() && matrix.type == 'msbuild' shell: cmd run: | python deploy\prepare_deployment.py win_apps @@ -94,38 +100,42 @@ jobs: python deploy\prepare_deployment.py win_manager - name: Upload apps + if: success() && matrix.type == 'msbuild' uses: actions/upload-artifact@v2 with: - name: win_apps_${{ matrix.platform }}_${{ github.event.pull_request.head.sha }} + name: win_apps_${{matrix.platform}}_${{github.event.pull_request.head.sha}} path: deploy/win_apps.7z - name: Upload client + if: success() && matrix.type == 'msbuild' uses: actions/upload-artifact@v2 with: - name: win_client_${{ matrix.platform }}_${{ github.event.pull_request.head.sha }} + name: win_client_${{matrix.platform}}_${{github.event.pull_request.head.sha}} path: deploy/win_client.7z - name: Upload manager + if: success() && matrix.type == 'msbuild' uses: actions/upload-artifact@v2 with: - name: win_manager_${{ matrix.platform }}_${{ github.event.pull_request.head.sha }} + name: win_manager_${{matrix.platform}}_${{github.event.pull_request.head.sha}} path: deploy/win_manager.7z - name: Upload symbol files + if: success() && matrix.type == 'msbuild' uses: actions/upload-artifact@v2 with: - name: win_pdb_${{ matrix.platform }}_${{ github.event.pull_request.head.sha }} - path: win_build/Build/${{ matrix.platform }}/${{ matrix.configuration }}/*.pdb + name: win_pdb_${{matrix.platform}}_${{github.event.pull_request.head.sha}} + path: win_build/Build/${{matrix.platform}}/${{matrix.configuration}}/*.pdb - name: Upload Google Tests Results - if: always() && matrix.platform == 'x64' + if: always() && matrix.platform == 'x64' && matrix.type == 'msbuild' uses: actions/upload-artifact@v2 with: name: Windows_tests_results - path: "win_build/Build/${{ matrix.platform }}/${{ matrix.configuration }}/**/gtest.xml" + path: "win_build/Build/${{matrix.platform}}/${{matrix.configuration}}/**/gtest.xml" - name: Upload coverage report - if: success() && matrix.platform == 'x64' + if: success() && matrix.platform == 'x64' && matrix.type == 'msbuild' uses: codecov/codecov-action@v3 with: fail_ci_if_error: true diff --git a/linux/ci_configure_libs_cmake.sh b/linux/ci_configure_libs_cmake.sh index bc3a8ff167..2074d0df6e 100755 --- a/linux/ci_configure_libs_cmake.sh +++ b/linux/ci_configure_libs_cmake.sh @@ -14,5 +14,4 @@ export VCPKG_DIR="$VCPKG_ROOT/installed/x64-linux" linux/bootstrap_vcpkg_cmake.sh -rm -rf build cmake lib -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DVCPKG_OVERLAY_PORTS=$VCPKG_PORTS/ports -DVCPKG_OVERLAY_TRIPLETS=$VCPKG_PORTS/triplets/ci -DVCPKG_TARGET_TRIPLET=x64-linux -DVCPKG_INSTALL_OPTIONS=--clean-after-build diff --git a/windows/bootstrap_vcpkg_cmake.bat b/windows/bootstrap_vcpkg_cmake.bat new file mode 100644 index 0000000000..c515a41f94 --- /dev/null +++ b/windows/bootstrap_vcpkg_cmake.bat @@ -0,0 +1,20 @@ +@echo off + +if not exist "windows" ( + echo start this script in the source root directory + exit 1 +) + +set "BUILD_DIR=%CD%\3rdParty\Windows" +set "VCPKG_PORTS=%CD%\3rdParty\vcpkg_ports" +set "VCPKG_ROOT=%BUILD_DIR%\vcpkg" + + +if not exist "%VCPKG_ROOT%" ( + mkdir -p "%VCPKG_ROOT%" + git -C %BUILD_DIR% clone https://github.com/microsoft/vcpkg +) + + +git -C %VCPKG_ROOT% pull +%VCPKG_ROOT%\bootstrap-vcpkg.bat diff --git a/windows/ci_build_libs_cmake.bat b/windows/ci_build_libs_cmake.bat new file mode 100644 index 0000000000..4477430133 --- /dev/null +++ b/windows/ci_build_libs_cmake.bat @@ -0,0 +1,31 @@ +@echo off + +if not exist "windows" ( + echo start this script in the source root directory + exit 1 +) + +if [%1] == [] ( + set "PLATFORM=x64" +) else ( + set "PLATFORM=%1" +) + +if [%2] == [] ( + set "CONFIGURATION=Release" +) else ( + set "CONFIGURATION=%2" +) + +echo PLATFORM: %PLATFORM% +echo CONFIGURATION: %CONFIGURATION% + +set "BUILD_DIR=%CD%\3rdParty\Windows" +set "VCPKG_PORTS=%CD%\3rdParty\vcpkg_ports" +set "VCPKG_ROOT=%BUILD_DIR%\vcpkg" + + +call windows\bootstrap_vcpkg_cmake.bat + +cmake lib -B build -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake -DVCPKG_OVERLAY_PORTS=%VCPKG_PORTS%\ports -DVCPKG_OVERLAY_TRIPLETS=%VCPKG_PORTS%\triplets\ci -DVCPKG_TARGET_TRIPLET=%PLATFORM%-windows-static -DVCPKG_INSTALL_OPTIONS=--clean-after-build +cmake --build build --config %CONFIGURATION%