From 1e01afab990b9fb9255d0c0d253ca141d5731a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Fri, 7 May 2021 12:52:37 +0200 Subject: [PATCH] [GITHUB] Make sure things get compiled with MSVC 2015 & 2017 Also unify again ISO artifacts and upload debug symbols for MSVC builds while we're at it Also don't fail early in case things go wrong, which helps fixing build errors in one go instead of incremental trial & error --- .github/workflows/build.yml | 96 +++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3ad5168c7d..42de2d16973 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,26 +60,77 @@ jobs: - name: Configure run: echo 'cmake -S ${{github.workspace}}/src -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-${{matrix.compiler}}.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DCLANG_VERSION=${{env.LLVM_VERSION}}' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} - name: Build - run: echo 'cmake --build ${{github.workspace}}/build' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} + run: echo 'cmake --build ${{github.workspace}}/build -- -k0' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} - name: Generate ISOs run: echo 'cmake --build ${{github.workspace}}/build --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} - name: Print ccache statistics run: ccache -s - - name: Upload bootcd + - name: Upload ISOs uses: actions/upload-artifact@v2 with: - name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/bootcd.iso - - name: Upload livecd - uses: actions/upload-artifact@v2 - with: - name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/livecd.iso + name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso build-msvc: strategy: matrix: - compiler: [msvc, clang-cl] + arch: [i386, amd64] + toolset: ['14.2', '14.1'] # VS 2019, 2017 + include: + - arch: i386 # Not compiling on amd64 prompt + toolset: '14.0' # VS 2015 + fail-fast: false + runs-on: windows-latest + steps: + - name: Install ninja + run: choco install -y ninja + - name: Install Flex & Bison + run: | + curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z + 7z x flexbison.7z -O${{github.workspace}}\bin + echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: Activate VS cmd (x86) + if: ${{ matrix.arch == 'i386' }} + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64_x86 + toolset: ${{ matrix.toolset }} + - name: Activate VS cmd (amd64) + if: ${{ matrix.arch == 'amd64' }} + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64 + toolset: ${{ matrix.toolset }} + - name: Source checkout + uses: actions/checkout@v2 + with: + path: src + - name: Configure + run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 + - name: Build + run: cmake --build ${{github.workspace}}\build -- -k0 + - name: Generate ISOs + run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd + - name: Upload ISOs + uses: actions/upload-artifact@v2 + with: + name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso + - name: Upload debug symbols + uses: actions/upload-artifact@v2 + with: + name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{github.sha}} + path: build/msvc_pdb + + build-clang-cl: + strategy: + matrix: arch: [i386, amd64] fail-fast: false runs-on: windows-latest @@ -87,12 +138,12 @@ jobs: - name: Install ninja run: choco install -y ninja - name: Install LLVM (x86) - if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'i386') }} + if: ${{ matrix.arch == 'i386' }} run: | choco install --x86 -y llvm echo "LLVM_PATH=${env:PROGRAMFILES(X86)}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Install LLVM (amd64) - if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'amd64') }} + if: ${{ matrix.arch == 'amd64' }} run: | choco install -y llvm echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append @@ -108,34 +159,37 @@ jobs: uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64_x86 + toolset: '14.1' # latest masm build known to make bootable builds - name: Activate VS cmd (amd64) if: ${{ matrix.arch == 'amd64' }} uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64 + toolset: '14.1' # latest masm build known to make bootable builds - name: Add LLVM to PATH - if: ${{ matrix.compiler == 'clang-cl' }} run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Source checkout uses: actions/checkout@v2 with: path: src - name: Configure - run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=${{matrix.compiler == 'clang-cl'}} + run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=TRUE - name: Build - run: cmake --build ${{github.workspace}}\build + run: cmake --build ${{github.workspace}}\build -- -k0 - name: Generate ISOs run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd - - name: Upload bootcd + - name: Upload ISOs uses: actions/upload-artifact@v2 with: - name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/bootcd.iso - - name: Upload livecd + name: reactos-clang-cl-${{matrix.arch}}-${{github.sha}} + path: | + build/bootcd.iso + build/livecd.iso + - name: Upload debug symbols uses: actions/upload-artifact@v2 with: - name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} - path: build/livecd.iso + name: reactos-syms-clang-cl-${{matrix.arch}}-${{github.sha}} + path: build/msvc_pdb build-msbuild-i386: name: MSBuild (i386)