mirror of
https://github.com/reactos/reactos.git
synced 2024-06-29 09:21:31 +00:00
1e01afab99
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
219 lines
9 KiB
YAML
219 lines
9 KiB
YAML
name: Build
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build-linux:
|
|
strategy:
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
arch: [i386, amd64]
|
|
fail-fast: false
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Get RosBE build specifics
|
|
id: get_rosbe_spec
|
|
run: |
|
|
gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}'
|
|
echo ::set-output name=march-sha::$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}')
|
|
echo ::set-output name=git-sha::$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}')
|
|
wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh
|
|
- name: Get RosBE
|
|
id: get_rosbe
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: RosBE-CI
|
|
key: RosBE-CI-${{runner.os}}-${{steps.get_rosbe_spec.outputs.march-sha}}-${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}
|
|
- name: Compile RosBE
|
|
if: steps.get_rosbe.outputs.cache-hit != 'true'
|
|
run: |
|
|
chmod +x build_rosbe_ci.sh
|
|
./build_rosbe_ci.sh ${{github.workspace}}/RosBE-CI
|
|
- name: Install ccache
|
|
run: sudo apt install ccache
|
|
- name: Install LLVM
|
|
if: ${{ matrix.compiler == 'clang' }}
|
|
run: |
|
|
echo "LLVM_VERSION=12" >> $GITHUB_ENV
|
|
wget https://apt.llvm.org/llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh $LLVM_VERSION
|
|
- name: Source checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: src
|
|
- name: Set up cache for ccache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ccache
|
|
key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
|
|
restore-keys: |
|
|
ccache-${{matrix.compiler}}-${{matrix.arch}}-
|
|
- name: Set ccache settings
|
|
run: |
|
|
echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV
|
|
echo "CCACHE_DIR=${{github.workspace}}/ccache" >> $GITHUB_ENV
|
|
echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV
|
|
echo "CCACHE_SLOPPINESS=time_macros" >> $GITHUB_ENV
|
|
- name: Ease ccache compiler check (GCC)
|
|
if: matrix.compiler == 'gcc'
|
|
run: echo "CCACHE_COMPILERCHECK=string:${{steps.get_rosbe_spec.outputs.git-sha}}-${{hashfiles('./build_rosbe_ci.sh')}}" >> $GITHUB_ENV
|
|
- 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 -- -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 ISOs
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
|
|
path: |
|
|
build/bootcd.iso
|
|
build/livecd.iso
|
|
|
|
build-msvc:
|
|
strategy:
|
|
matrix:
|
|
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
|
|
steps:
|
|
- name: Install ninja
|
|
run: choco install -y ninja
|
|
- name: Install LLVM (x86)
|
|
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.arch == 'amd64' }}
|
|
run: |
|
|
choco install -y llvm
|
|
echo "LLVM_PATH=${env:PROGRAMFILES}\llvm\bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
- 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: '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
|
|
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=TRUE
|
|
- 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-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-syms-clang-cl-${{matrix.arch}}-${{github.sha}}
|
|
path: build/msvc_pdb
|
|
|
|
build-msbuild-i386:
|
|
name: MSBuild (i386)
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Install Flex and 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: Add CL to PATH
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: amd64_x86
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
path: src
|
|
- name: Configure
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
|
- name: Build
|
|
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|