mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-05 21:17:25 +00:00
With a change introduce in 385dda5c3785ed8d6a35868bc169f07e40e889087fd2edc66, flatc was not able to emit code for Kotlin if a namespace is specified and the folders do not exist. The fix create folders if neded. Additional changes are introduced in gradle files to bring more visibility to the error messages. Co-authored-by: Derek Bailey <derekbailey@google.com>
342 lines
11 KiB
YAML
342 lines
11 KiB
YAML
name: CI
|
|
permissions: read-all
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
build-linux:
|
|
name: Build Linux
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cxx: [g++-10, clang++-12]
|
|
fail-fast: false
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake
|
|
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build
|
|
run: make -j
|
|
- name: test
|
|
run: ./flattests
|
|
- name: make flatc executable
|
|
run: |
|
|
chmod +x flatc
|
|
./flatc --version
|
|
- name: flatc tests
|
|
run: python3 tests/flatc/main.py
|
|
- name: upload build artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: Linux flatc binary ${{ matrix.cxx }}
|
|
path: flatc
|
|
|
|
build-windows:
|
|
name: Build Windows 2019
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add msbuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.1
|
|
- name: cmake
|
|
run: cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_CPP17=ON -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build
|
|
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64
|
|
- name: test
|
|
run: Release\flattests.exe
|
|
- name: upload build artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: Windows flatc binary
|
|
path: Release\flatc.exe
|
|
|
|
build-windows-2017:
|
|
name: Build Windows 2017
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add msbuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.1
|
|
- name: cmake
|
|
run: cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build tool version 15 (VS 2017)
|
|
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 /p:VisualStudioVersion=15.0
|
|
- name: test
|
|
run: Release\flattests.exe
|
|
|
|
build-windows-2015:
|
|
name: Build Windows 2015
|
|
runs-on: windows-2019
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add msbuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.1
|
|
- name: cmake
|
|
run: cmake -G "Visual Studio 14 2015" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build tool version 14 (VS 2015)
|
|
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 /p:VisualStudioVersion=14.0
|
|
- name: test
|
|
run: Release\flattests.exe
|
|
|
|
build-dotnet-windows:
|
|
name: Build .NET Windows
|
|
runs-on: windows-2019
|
|
strategy:
|
|
matrix:
|
|
configuration: [
|
|
'',
|
|
'-p:UnsafeByteBuffer=true',
|
|
# Fails two tests currently.
|
|
#'-p:EnableSpanT=true,UnsafeByteBuffer=true'
|
|
]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Setup .NET Core SDK
|
|
uses: actions/setup-dotnet@v1.9.0
|
|
with:
|
|
dotnet-version: '3.1.x'
|
|
- name: Build
|
|
run: |
|
|
cd tests\FlatBuffers.Test
|
|
dotnet new sln --force --name FlatBuffers.Core.Test
|
|
dotnet sln FlatBuffers.Core.Test.sln add FlatBuffers.Core.Test.csproj
|
|
dotnet build -c Release ${{matrix.configuration}} -o out FlatBuffers.Core.Test.sln
|
|
- name: Run
|
|
run: |
|
|
cd tests\FlatBuffers.Test
|
|
out\FlatBuffers.Core.Test.exe
|
|
|
|
build-mac-intel:
|
|
name: Build Mac (for Intel)
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake
|
|
run: cmake -G "Xcode" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_FLATC_EXECUTABLE=_build/Release/flatc -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build
|
|
# NOTE: we need this _build dir to not have xcodebuild's default ./build dir clash with the BUILD file.
|
|
run: xcodebuild -toolchain clang -configuration Release -target flattests SYMROOT=$(PWD)/_build
|
|
- name: check that the binary is x86_64
|
|
run: |
|
|
info=$(file _build/Release/flatc)
|
|
echo $info
|
|
echo $info | grep "Mach-O 64-bit executable x86_64"
|
|
- name: test
|
|
run: _build/Release/flattests
|
|
- name: make flatc executable
|
|
run: |
|
|
chmod +x _build/Release/flatc
|
|
./_build/Release/flatc --version
|
|
- name: upload build artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: Mac flatc binary
|
|
path: _build/Release/flatc
|
|
|
|
build-mac-universal:
|
|
name: Build Mac (universal build)
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake
|
|
run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_FLATC_EXECUTABLE=_build/Release/flatc -DFLATBUFFERS_STRICT_MODE=ON .
|
|
- name: build
|
|
# NOTE: we need this _build dir to not have xcodebuild's default ./build dir clash with the BUILD file.
|
|
run: xcodebuild -toolchain clang -configuration Release -target flattests SYMROOT=$(PWD)/_build
|
|
- name: check that the binary is "universal"
|
|
run: |
|
|
info=$(file _build/Release/flatc)
|
|
echo $info
|
|
echo $info | grep "Mach-O universal binary with 2 architectures"
|
|
- name: test
|
|
run: _build/Release/flattests
|
|
- name: make flatc executable
|
|
run: |
|
|
chmod +x _build/Release/flatc
|
|
./_build/Release/flatc --version
|
|
- name: upload build artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: Mac flatc binary
|
|
path: _build/Release/flatc
|
|
|
|
build-android:
|
|
name: Build Android (on Linux)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: set up JDK 1.8
|
|
uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 1.8
|
|
- name: set up flatc
|
|
run: |
|
|
cmake -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON .
|
|
make -j
|
|
echo "${PWD}" >> $GITHUB_PATH
|
|
- name: build
|
|
working-directory: android
|
|
run: gradle clean build
|
|
|
|
build-generator:
|
|
name: Check Generated Code
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cxx: [g++-10, clang++-12]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake
|
|
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j
|
|
- name: Generate
|
|
run: scripts/check_generate_code.py
|
|
- name: Generate gRPC
|
|
run: bash scripts/check-grpc-generated-code.sh
|
|
|
|
build-benchmarks:
|
|
name: Build Benchmarks (on Linux)
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cxx: [g++-10]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake
|
|
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_CXX_FLAGS="-Wno-unused-parameter -fno-aligned-new" -DFLATBUFFERS_BUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j
|
|
- name: Run benchmarks
|
|
run: ./flatbenchmark --benchmark_repetitions=5 --benchmark_display_aggregates_only=true --benchmark_out_format=console --benchmark_out=benchmarks/results_${{matrix.cxx}}
|
|
- name: Upload benchmarks results
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: Linux flatbenchmark results ${{matrix.cxx}}
|
|
path: benchmarks/results_${{matrix.cxx}}
|
|
|
|
build-java:
|
|
name: Build Java
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: test
|
|
working-directory: tests
|
|
run: bash JavaTest.sh
|
|
|
|
build-kotlin-macos:
|
|
name: Build Kotlin MacOS
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- uses: gradle/wrapper-validation-action@v1
|
|
- uses: actions/setup-java@v2
|
|
with:
|
|
distribution: 'adopt-hotspot'
|
|
java-version: '11'
|
|
- name: Build
|
|
working-directory: kotlin
|
|
run: ./gradlew clean iosX64Test macosX64Test
|
|
|
|
build-kotlin-linux:
|
|
name: Build Kotlin Linux
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- uses: actions/setup-java@v2
|
|
with:
|
|
distribution: 'adopt-hotspot'
|
|
java-version: '11'
|
|
- uses: gradle/wrapper-validation-action@v1
|
|
- name: Build
|
|
working-directory: kotlin
|
|
# we are using docker's version of gradle
|
|
# so no need for wrapper validadation or user
|
|
# gradlew
|
|
run: gradle jvmMainClasses jvmTest jsTest jsBrowserTest
|
|
|
|
build-rust:
|
|
name: Build Rust
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: test
|
|
working-directory: tests
|
|
run: bash RustTest.sh
|
|
|
|
build-python:
|
|
name: Build Python
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: test
|
|
working-directory: tests
|
|
run: bash PythonTest.sh
|
|
|
|
build-go:
|
|
name: Build Go
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: flatc
|
|
# FIXME: make test script not rely on flatc
|
|
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
|
|
- name: test
|
|
working-directory: tests
|
|
run: bash GoTest.sh
|
|
|
|
build-swift:
|
|
name: Build Swift
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: test
|
|
working-directory: tests/FlatBuffers.Test.Swift
|
|
run: sh SwiftTest.sh
|
|
|
|
build-swift-wasm:
|
|
name: Build Swift Wasm
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: ghcr.io/swiftwasm/carton:0.15.3
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Setup Wasmer
|
|
uses: wasmerio/setup-wasmer@v1
|
|
- name: Test
|
|
working-directory: tests/FlatBuffers.Test.Swift.Wasm
|
|
run: carton test
|
|
|
|
build-ts:
|
|
name: Build TS
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: flatc
|
|
# FIXME: make test script not rely on flatc
|
|
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j
|
|
- name: compile
|
|
run: npm run compile
|
|
- name: test
|
|
working-directory: tests
|
|
run: python3 TypeScriptTest.py
|
|
|
|
build-dart:
|
|
name: Build Dart
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: dart-lang/setup-dart@v1
|
|
with:
|
|
sdk: stable
|
|
- name: flatc
|
|
# FIXME: make test script not rely on flatc
|
|
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
|
|
- name: test
|
|
working-directory: tests
|
|
run: bash DartTest.sh
|