mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
[GITHUB] Enable GCC+clang amd64 build
Use github cache to build & retrieve RosBE on linux, for now using a custom build script until Next RosBE is out Use a matrix to manage linux gcc + clang build
This commit is contained in:
parent
061c7ecb1a
commit
a66214c020
1 changed files with 43 additions and 70 deletions
113
.github/workflows/build.yml
vendored
113
.github/workflows/build.yml
vendored
|
@ -2,107 +2,80 @@ name: Build
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-gcc-i386:
|
build-linux:
|
||||||
name: GCC (i386)
|
strategy:
|
||||||
|
matrix:
|
||||||
|
compiler: [gcc, clang]
|
||||||
|
arch: [i386, amd64]
|
||||||
|
fail-fast: false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install RosBE
|
- name: Get Runner arch
|
||||||
|
id: get_native_arch
|
||||||
run: |
|
run: |
|
||||||
wget https://svn.reactos.org/storage/vperevertkin/rosbe-ci.tar.zst
|
gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}'
|
||||||
mkdir ${{github.workspace}}/rosbe
|
echo ::set-output name=march::$(gcc -march=native -Q --help=target | grep "\-march= " | awk '{print $NF}')
|
||||||
tar -I zstd -xvf rosbe-ci.tar.zst --directory ${{github.workspace}}/rosbe
|
- name: Get RosBE
|
||||||
- name: Install other packages
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: RosBE-CI
|
||||||
|
key: RosBE-CI-${{runner.os}}-${{steps.get_native_arch.outputs.march}}
|
||||||
|
- name: Compile RosBE
|
||||||
|
run: |
|
||||||
|
wget https://gist.githubusercontent.com/zefklop/b2d6a0b470c70183e93d5285a03f5899/raw/build_rosbe_ci.sh
|
||||||
|
chmod +x build_rosbe_ci.sh
|
||||||
|
./build_rosbe_ci.sh ${{github.workspace}}/RosBE-CI
|
||||||
|
- name: Install ccache
|
||||||
run: sudo apt install ccache
|
run: sudo apt install ccache
|
||||||
- uses: actions/checkout@v2
|
- 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:
|
with:
|
||||||
path: src
|
path: src
|
||||||
- name: Set up cache for ccache
|
- name: Set up cache for ccache
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ccache
|
path: ccache
|
||||||
key: ccache-gcc-i386-${{github.sha}}
|
key: ccache-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
ccache-gcc-i386-
|
ccache-${{matrix.compiler}}-${{matrix.arch}}-
|
||||||
- name: Set ccache settings
|
- name: Set ccache settings
|
||||||
run: |
|
run: |
|
||||||
echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV
|
echo "CCACHE_BASEDIR=${{github.workspace}}" >> $GITHUB_ENV
|
||||||
echo "CCACHE_DIR=${{github.workspace}}/ccache" >> $GITHUB_ENV
|
echo "CCACHE_DIR=${{github.workspace}}/ccache" >> $GITHUB_ENV
|
||||||
echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV
|
echo "CCACHE_MAXSIZE=1G" >> $GITHUB_ENV
|
||||||
echo "CCACHE_SLOPPINESS=time_macros" >> $GITHUB_ENV
|
echo "CCACHE_SLOPPINESS=time_macros" >> $GITHUB_ENV
|
||||||
|
echo "CCACHE_COMPILERCHECK=string:${{hashfiles('./build_rosbe_ci.sh', './RosBE-CI/git-commit')}}" >> $GITHUB_ENV
|
||||||
|
- name: Create Build directory
|
||||||
|
run: mkdir build
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
working-directory: ${{github.workspace}}/build
|
||||||
mkdir build
|
run: echo 'cmake ${{github.workspace}}/src -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}}
|
||||||
echo 'cd ${{github.workspace}}/build && ${{github.workspace}}/src/configure.sh -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1' > commands
|
|
||||||
${{github.workspace}}/rosbe/RosBE.sh < commands
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
working-directory: ${{github.workspace}}/build
|
||||||
echo 'cd ${{github.workspace}}/build && cmake --build .' > commands
|
run: echo 'cmake --build .' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
|
||||||
${{github.workspace}}/rosbe/RosBE.sh < commands
|
|
||||||
- name: Generate ISOs
|
- name: Generate ISOs
|
||||||
run: |
|
working-directory: ${{github.workspace}}/build
|
||||||
echo 'cd ${{github.workspace}}/build && cmake --build . --target bootcd && cmake --build . --target livecd' > commands
|
run: echo 'cmake --build . --target bootcd --target livecd' | ${{github.workspace}}/RosBE-CI/RosBE.sh . 0 ${{matrix.arch}}
|
||||||
${{github.workspace}}/rosbe/RosBE.sh < 'commands'
|
|
||||||
- name: Print ccache statistics
|
- name: Print ccache statistics
|
||||||
run: ccache -s
|
run: ccache -s
|
||||||
- name: Upload bootcd
|
- name: Upload bootcd
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: reactos-gcc-i386-${{github.sha}}
|
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
|
||||||
path: build/bootcd.iso
|
path: build/bootcd.iso
|
||||||
- name: Upload livecd
|
- name: Upload livecd
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: reactos-gcc-i386-${{github.sha}}
|
name: reactos-${{matrix.compiler}}-${{matrix.arch}}-${{github.sha}}
|
||||||
path: build/livecd.iso
|
path: build/livecd.iso
|
||||||
|
|
||||||
build-clang-i386:
|
|
||||||
name: Clang (i386)
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Install RosBE
|
|
||||||
run: |
|
|
||||||
wget https://svn.reactos.org/storage/vperevertkin/rosbe-ci.tar.zst
|
|
||||||
mkdir ${{github.workspace}}/rosbe
|
|
||||||
tar -I zstd -xvf rosbe-ci.tar.zst --directory ${{github.workspace}}/rosbe
|
|
||||||
- name: Set LLVM version
|
|
||||||
run: |
|
|
||||||
echo "LLVM_VERSION=12" >> $GITHUB_ENV
|
|
||||||
- name: Install LLVM
|
|
||||||
run: |
|
|
||||||
wget https://apt.llvm.org/llvm.sh
|
|
||||||
chmod +x llvm.sh
|
|
||||||
sudo ./llvm.sh $LLVM_VERSION
|
|
||||||
- name: Install other packages
|
|
||||||
run: |
|
|
||||||
sudo apt install ccache
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: src
|
|
||||||
- name: Set up cache for ccache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ccache
|
|
||||||
key: ccache-clang-i386-${{github.sha}}
|
|
||||||
restore-keys: |
|
|
||||||
ccache-clang-i386-
|
|
||||||
- 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: Configure
|
|
||||||
run: |
|
|
||||||
mkdir build
|
|
||||||
echo 'cd ${{github.workspace}}/build && cmake ${{github.workspace}}/src -G Ninja -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-clang.cmake -DARCH:STRING=i386 -DENABLE_CCACHE=1 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 -DCLANG_VERSION=${{env.LLVM_VERSION}}' > commands
|
|
||||||
${{github.workspace}}/rosbe/RosBE.sh < commands
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
echo 'cd ${{github.workspace}}/build && cmake --build .' > commands
|
|
||||||
${{github.workspace}}/rosbe/RosBE.sh < commands
|
|
||||||
- name: Print ccache statistics
|
|
||||||
run: ccache -s
|
|
||||||
|
|
||||||
build-clang-cl-i386:
|
build-clang-cl-i386:
|
||||||
name: Clang-CL (i386)
|
name: Clang-CL (i386)
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
|
Loading…
Reference in a new issue