Skip to content

Fetch generator

Fetch generator #183

Workflow file for this run

env:
GENERATOR_BUILID: "release"
# valid options: "release", "latest", "pr-NNN"
# "release" is the latest djinni generator release
# "latest" is the djinni generator build of the latest state of main, might be equal release, or newer
# "pr-NNN" is the djinni generator build of a pull request, NNN is the pullrequest number
# This can be used to check that a support lib builds with new generator changes that have not been released yet
# Note: the pipeline will not succeed with a generator different than release,
# but we can verify that the support lib builds and tests successfully with a generator different (newer) than release
name: build-all-configs
on: [push, pull_request]
jobs:
build-on-osx-for-objectiveC:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_OBJC=ON -G Xcode
- name: Build release
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
- name: Install files
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release --target install -- DESTDIR=check_install_root
- name: List installed files
working-directory: build/check_install_root
run: du -a | tail -r | awk -F ' ' '{print $2}'
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: diff -u ../../test/objc_list.txt <(du -a | tail -r | awk -F ' ' '{print $2}')
build-on-osx-for-python:
runs-on: macos-11
strategy:
matrix:
python-version: ["3.7.17", "3.12.1"] # oldest and newest, rest assumed to work
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
uses: py-actions/py-dependency-install@v3
with:
path: "requirements.txt"
- name: Download Genearator
env:
GENERATOR_DL_TOKEN: ${{ secrets.GENERATOR_DL_TOKEN }}
run: python get-generator.py ${{ env.GENERATOR_BUILID }}
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_PYTHON=ON -DDJINNI_EXECUTABLE="$(pwd)/zz/djinni"
- name: Build release
run: cmake --build build --parallel $(sysctl -n hw.ncpu) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-ubuntu-for-jni:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON
- name: Build release
run: cmake --build build --parallel $(nproc) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
- name: Install files
run: cmake --build build --parallel $(nproc) --config Release --target install -- DESTDIR=check_install_root
- name: List installed files
working-directory: build/check_install_root
run: du -a | tac | awk -F ' ' '{print $2}' | sort
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: diff -u ../../test/jni_list.txt <(du -a | tac | awk -F ' ' '{print $2}' | sort)
build-on-ubuntu-for-jni-with-thread-attach:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON -DJNI_CPP_THREAD_ATTACH=ON -DCMAKE_BUILD_TYPE=Release
- name: Build release
run: cmake --build build --parallel $(nproc)
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-ubuntu-for-android_arm32-with-thread-attach:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- uses: ashutoshvarma/setup-ninja@master
with:
version: 1.10.2
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_JNI=ON -DJNI_CPP_THREAD_ATTACH=ON -DCMAKE_BUILD_TYPE=Release -DJINNI_BUILD_TESTING=OFF -DCMAKE_TOOLCHAIN_FILE=${ANDROID_SDK_ROOT}/ndk/$(ls ${ANDROID_SDK_ROOT}/ndk -C1 | sort -r | head -1)/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-26 -DANDROID_NATIVE_API_LEVEL=26 -DANDROID_ABI=armeabi-v7a -G Ninja
- name: Build release
run: cmake --build build --parallel $(nproc)
build-on-ubuntu-for-python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: asdf-vm/actions/install@v1
- name: Install dependencies
uses: py-actions/py-dependency-install@v3
with:
path: "requirements.txt"
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_PYTHON=ON
- name: Build release
run: cmake --build build --parallel $(nproc) --config Release
- name: Run tests
working-directory: build/test-suite
run: ctest -C Release -V
build-on-windows-for-cppcli:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: install djinni
run: |
$VERSION = 'v' + [regex]::Match((Get-Content .tool-versions), '^djinni (\d+.\d+.\d+)').captures.groups[1].value
$URL = 'https://github.com/cross-language-cpp/djinni-generator/releases/download/' + $VERSION + '/djinni.bat'
Invoke-WebRequest -Uri $URL -OutFile djinni.bat
- name: Report cmake version
run: cmake --version
- name: Configure cmake
run: cmake -S . -B build -DDJINNI_WITH_CPPCLI=ON -DCMAKE_INSTALL_PREFIX=build/check_install_root -DDJINNI_EXECUTABLE="$(((Get-Location).Path) -replace "\\","/")/djinni.bat" -G "Visual Studio 17 2022"
- name: Install nuget dependencies
working-directory: build/test-suite
run: dotnet restore DjinniCppCliTest.csproj --runtime win-x64
- name: Build release
run: cmake --build build --config Release
- name: Run tests
working-directory: build/test-suite
run: dotnet test Release/DjinniCppCliTest.dll
- name: Install files
run: cmake --build build --config Release --target install
- name: List installed files
working-directory: build/check_install_root
run: Resolve-Path -Path (Get-ChildItem -Recurse).FullName -Relative
- name: Test if expected files have been installed
working-directory: build/check_install_root
run: if((Compare-Object (Get-Content ..\..\test\cppcli_list.txt) (Resolve-Path -Path (Get-ChildItem -Recurse).FullName -Relative))) { Write-Error "file list not equal" }
check_generator_buildid:
needs: ["build-on-windows-for-cppcli", "build-on-ubuntu-for-python", "build-on-ubuntu-for-android_arm32-with-thread-attach", "build-on-ubuntu-for-jni-with-thread-attach", "build-on-ubuntu-for-jni", "build-on-osx-for-python", "build-on-osx-for-objectiveC"]
runs-on: ubuntu-latest
steps:
- name: Check GENERATOR_BUILID
run: |
if [[ "${{ env.GENERATOR_BUILID }}" != "release" ]]; then
echo "GENERATOR_BUILID is not set to 'release'"
exit 1
fi