diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml index 018839b8172..f6d11e2efeb 100644 --- a/.github/workflows/linux_builds.yml +++ b/.github/workflows/linux_builds.yml @@ -34,6 +34,7 @@ jobs: tests: true sconsflags: use_asan=yes use_ubsan=yes proj-test: true + godot-cpp-test: true bin: "./bin/godot.linuxbsd.tools.64s" # Skip 2GiB artifact speeding up action. artifact: false @@ -126,6 +127,46 @@ jobs: VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true misc/scripts/check_ci_log.py sanitizers_log.txt + # Checkout godot-cpp + - name: Checkout godot-cpp + if: ${{ matrix.godot-cpp-test }} + uses: actions/checkout@v2 + with: + repository: godotengine/godot-cpp + submodules: 'recursive' + path: 'godot-cpp' + + # Check extension API + - name: Check for extension api updates + if: ${{ matrix.godot-cpp-test }} + run: | + echo "Running --dump-extension-api to create extensions api." + VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --dump-extension-api 2>&1 > /dev/null || true + misc/scripts/compare_extension_api.py godot-cpp/godot-headers/extension_api.json extension_api.json + + # Copy new extension API files into place + - name: Copy new extension API files into place + if: ${{ matrix.godot-cpp-test }} + run: | + cp -f extension_api.json godot-cpp/godot-headers/ + cp -f core/extension/gdnative_interface.h godot-cpp/godot-headers/godot/ + + # Build godot-cpp library + - name: Build godot-cpp library + if: ${{ matrix.godot-cpp-test }} + run: | + cd godot-cpp + scons target=${{ matrix.target }} generate_bindings=yes -j2 + cd .. + + # Build godot-cpp test extension + - name: Build godot-cpp test extension + if: ${{ matrix.godot-cpp-test }} + run: | + cd godot-cpp/test + scons target=${{ matrix.target }} -j2 + cd ../.. + - name: Prepare artifact if: ${{ matrix.artifact }} run: | diff --git a/misc/scripts/compare_extension_api.py b/misc/scripts/compare_extension_api.py new file mode 100755 index 00000000000..f96db4278cf --- /dev/null +++ b/misc/scripts/compare_extension_api.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys + +# TODO: +# Add a process that compares the original godot-cpp/godot-headers/extension_api.json with the new extension_api.json (both passed as arguments) and reports any API calls that have been removed. +# If we only have additions or no changes to the file, we pass +# For now we deem this too early because the API isn't stable enough yet. + +sys.exit(0)