[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
This commit is contained in:
Jérôme Gardou 2021-05-07 12:52:37 +02:00 committed by Jérôme Gardou
parent 3adf450867
commit 1e01afab99

View file

@ -60,26 +60,77 @@ jobs:
- name: Configure - 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}} 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 - 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 - name: Generate ISOs
run: echo 'cmake --build ${{github.workspace}}/build --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}} run: echo 'cmake --build ${{github.workspace}}/build --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
- name: Print ccache statistics - name: Print ccache statistics
run: ccache -s run: ccache -s
- name: Upload bootcd - name: Upload ISOs
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
path: build/bootcd.iso path: |
- name: Upload livecd build/bootcd.iso
uses: actions/upload-artifact@v2 build/livecd.iso
with:
name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
path: build/livecd.iso
build-msvc: build-msvc:
strategy: strategy:
matrix: 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] arch: [i386, amd64]
fail-fast: false fail-fast: false
runs-on: windows-latest runs-on: windows-latest
@ -87,12 +138,12 @@ jobs:
- name: Install ninja - name: Install ninja
run: choco install -y ninja run: choco install -y ninja
- name: Install LLVM (x86) - name: Install LLVM (x86)
if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'i386') }} if: ${{ matrix.arch == 'i386' }}
run: | run: |
choco install --x86 -y llvm choco install --x86 -y llvm
echo "LLVM_PATH=${env:PROGRAMFILES(X86)}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "LLVM_PATH=${env:PROGRAMFILES(X86)}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Install LLVM (amd64) - name: Install LLVM (amd64)
if: ${{ (matrix.compiler == 'clang-cl') && (matrix.arch == 'amd64') }} if: ${{ matrix.arch == 'amd64' }}
run: | run: |
choco install -y llvm choco install -y llvm
echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append 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 uses: ilammy/msvc-dev-cmd@v1
with: with:
arch: amd64_x86 arch: amd64_x86
toolset: '14.1' # latest masm build known to make bootable builds
- name: Activate VS cmd (amd64) - name: Activate VS cmd (amd64)
if: ${{ matrix.arch == 'amd64' }} if: ${{ matrix.arch == 'amd64' }}
uses: ilammy/msvc-dev-cmd@v1 uses: ilammy/msvc-dev-cmd@v1
with: with:
arch: amd64 arch: amd64
toolset: '14.1' # latest masm build known to make bootable builds
- name: Add LLVM to PATH - name: Add LLVM to PATH
if: ${{ matrix.compiler == 'clang-cl' }}
run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append run: echo "${env:LLVM_PATH}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Source checkout - name: Source checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
path: src path: src
- name: Configure - 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 - name: Build
run: cmake --build ${{github.workspace}}\build run: cmake --build ${{github.workspace}}\build -- -k0
- name: Generate ISOs - name: Generate ISOs
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
- name: Upload bootcd - name: Upload ISOs
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: reactos-bootcd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} name: reactos-clang-cl-${{matrix.arch}}-${{github.sha}}
path: build/bootcd.iso path: |
- name: Upload livecd build/bootcd.iso
build/livecd.iso
- name: Upload debug symbols
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: reactos-livecd-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}} name: reactos-syms-clang-cl-${{matrix.arch}}-${{github.sha}}
path: build/livecd.iso path: build/msvc_pdb
build-msbuild-i386: build-msbuild-i386:
name: MSBuild (i386) name: MSBuild (i386)