mirror of
https://github.com/reactos/reactos.git
synced 2025-01-01 03:54:02 +00:00
fa7d5dbf06
GitHub is starting to discontinue Actions V2 (the date was postponed). Once they enforce Actions V3, builds will likely fail to run, so it's better to change this sooner rather than later. - Update GitHub Actions to V3 - Replace deprecated set-output with $GITHUB_OUTPUT This also fixes the warnings on the builds/artifacts page.
319 lines
13 KiB
YAML
319 lines
13 KiB
YAML
name: Build
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build-linux:
|
|
strategy:
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
arch: [i386, amd64]
|
|
config: [Debug, Release]
|
|
dllver: ['0x502', '0x600']
|
|
exclude:
|
|
- dllver: 0x600
|
|
compiler: clang
|
|
- dllver: 0x600
|
|
config: Release
|
|
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 march-sha=$(gcc -march=native -Q --help=target | sha1sum | awk '{print $1}') >> $GITHUB_OUTPUT
|
|
echo git-sha=$(git ls-remote https://github.com/zefklop/RosBE.git | grep unix_amd64 | awk '{print $1}') >> $GITHUB_OUTPUT
|
|
wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh
|
|
- name: Get RosBE
|
|
id: get_rosbe
|
|
uses: actions/cache@v3
|
|
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: |
|
|
export LLVM_VERSION=13
|
|
wget https://apt.llvm.org/llvm.sh
|
|
chmod +x llvm.sh
|
|
sudo ./llvm.sh $LLVM_VERSION
|
|
echo "D_CLANG_VERSION=-DCLANG_VERSION=$LLVM_VERSION" >> $GITHUB_ENV
|
|
- name: Source checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: src
|
|
- name: Set up cache for ccache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ccache
|
|
key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{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}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DDLL_EXPORT_VERSION=${{matrix.dllver}} -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{env.D_CLANG_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@v3
|
|
with:
|
|
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
|
path: |
|
|
build/bootcd.iso
|
|
build/livecd.iso
|
|
|
|
build-msvc:
|
|
strategy:
|
|
matrix:
|
|
os: [windows-latest, windows-2019]
|
|
toolset: ['14.2', '14.1', '14.0'] # VS 2019, 2017, and 2015 (see below)
|
|
arch: [i386, amd64]
|
|
config: [Debug, Release]
|
|
dllver: ['0x502', '0x600']
|
|
exclude: # VS 2019, 2017 only with windows-latest; VS 2015 only with windows-2019
|
|
- os: windows-2019
|
|
toolset: '14.2'
|
|
- os: windows-2019
|
|
toolset: '14.1'
|
|
- os: windows-latest
|
|
toolset: '14.0'
|
|
- dllver: 0x600
|
|
os: windows-2019
|
|
- dllver: 0x600
|
|
toolset: '14.1'
|
|
- dllver: 0x600
|
|
toolset: '14.0'
|
|
- dllver: 0x600
|
|
config: Release
|
|
fail-fast: false
|
|
runs-on: ${{matrix.os}}
|
|
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@v3
|
|
with:
|
|
path: src
|
|
- name: Configure
|
|
run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DDLL_EXPORT_VERSION=${{matrix.dllver}}
|
|
- name: Build
|
|
run: cmake --build build -- -k0
|
|
- name: Generate ISOs
|
|
run: cmake --build build --target bootcd --target livecd
|
|
- name: Upload ISOs
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
|
path: |
|
|
build/bootcd.iso
|
|
build/livecd.iso
|
|
- name: Upload debug symbols
|
|
if: ${{ matrix.config == 'Debug' }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{matrix.dllver}}-${{github.sha}}
|
|
path: build/msvc_pdb
|
|
|
|
build-msvc-arm:
|
|
strategy:
|
|
matrix:
|
|
toolset: ['14.2', '14.1'] # VS 2019, 2017
|
|
arch: [arm, arm64]
|
|
config: [Debug, Release]
|
|
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 (arm)
|
|
if: ${{ matrix.arch == 'arm' }}
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: amd64_arm
|
|
toolset: ${{matrix.toolset}}
|
|
- name: Activate VS cmd (arm64)
|
|
if: ${{ matrix.arch == 'arm64' }}
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: amd64_arm64
|
|
toolset: ${{matrix.toolset}}
|
|
- name: Source checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: src
|
|
- name: Configure
|
|
run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1
|
|
- name: Build base module
|
|
if: ${{ matrix.arch == 'arm' }}
|
|
run: cmake --build build --target base/all
|
|
- name: Build control panel applets
|
|
if: ${{ matrix.arch == 'arm' }}
|
|
run: cmake --build build --target dll/cpl/all
|
|
- name: Build rosapps
|
|
if: ${{ matrix.arch == 'arm' }}
|
|
run: cmake --build build --target modules/rosapps/all
|
|
- name: Build subsystems
|
|
if: ${{ matrix.arch == 'arm' }}
|
|
run: cmake --build build --target subsystems/all
|
|
- name: Build some applications (arm64)
|
|
if: ${{ matrix.arch == 'arm64' }}
|
|
run: cmake --build build --target calc magnify mstsc notepad osk regedit taskmgr winmine wordpad base/applications/screensavers/all -- -k0
|
|
- name: Upload compiled binaries
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
|
path: |
|
|
build/base
|
|
build/dll/cpl
|
|
build/modules/rosapps
|
|
build/subsystems
|
|
!**/CMakeFiles
|
|
!**/cmake_install.cmake
|
|
!**/*.asm
|
|
!**/*.bin
|
|
!**/*.c
|
|
!**/*.def
|
|
!**/*.exp
|
|
!**/*.h
|
|
!**/*.lib
|
|
!**/*.mc
|
|
!**/*.obj
|
|
!**/*.rc
|
|
!**/*.tlb
|
|
- name: Upload debug symbols
|
|
if: ${{ matrix.config == 'Debug' }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-syms-msvc${{matrix.toolset}}-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
|
path: build/msvc_pdb
|
|
|
|
build-clang-cl:
|
|
strategy:
|
|
matrix:
|
|
arch: [i386, amd64]
|
|
config: [Debug, Release]
|
|
fail-fast: false
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Install ninja
|
|
run: choco install -y ninja
|
|
- name: Install LLVM
|
|
run: |
|
|
choco install -y --allow-downgrade llvm --version 13.0.1
|
|
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@v3
|
|
with:
|
|
path: src
|
|
- name: Configure
|
|
run: cmake -S src -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=${{matrix.arch}} -DCMAKE_BUILD_TYPE=${{matrix.config}} -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DUSE_CLANG_CL:BOOL=TRUE
|
|
- name: Build
|
|
run: cmake --build build -- -k0
|
|
- name: Generate ISOs
|
|
run: cmake --build build --target bootcd --target livecd
|
|
- name: Upload ISOs
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
|
path: |
|
|
build/bootcd.iso
|
|
build/livecd.iso
|
|
- name: Upload debug symbols
|
|
if: ${{ matrix.config == 'Debug' }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
|
path: build/msvc_pdb
|
|
|
|
# Disable MSBuild for the moment being until a proper fix is provided -- see CORE-18911
|
|
# build-msbuild-i386:
|
|
# name: MSBuild (i386)
|
|
# runs-on: windows-2019
|
|
# 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@v3
|
|
# 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
|