From 08661166e9d3cb15401f809fb7b61e94104f2cef Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Sat, 17 Aug 2024 17:07:50 +0200 Subject: [PATCH] ci: verify SDL_REVISION --- .github/workflows/create-test-plan.py | 46 ++++++++++++++++++++++++++- .github/workflows/generic.yml | 12 ++++--- test/CMakeLists.txt | 2 +- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/.github/workflows/create-test-plan.py b/.github/workflows/create-test-plan.py index 340514c3b..6bad883b5 100755 --- a/.github/workflows/create-test-plan.py +++ b/.github/workflows/create-test-plan.py @@ -141,6 +141,19 @@ JOB_SPECS = { } +class StaticLibType(Enum): + MSVC = "SDL3-static.lib" + A = "libSDL3.a" + + +class SharedLibType(Enum): + WIN32 = "SDL3.dll" + SO_0 = "libSDL3.so.0" + SO = "libSDL3.so" + DYLIB = "libSDL3.0.dylib" + FRAMEWORK = "SDL3.framework/Versions/A/SDL3" + + @dataclasses.dataclass(slots=True) class JobDetails: name: str @@ -171,6 +184,8 @@ class JobDetails: use_cmake: bool = True shared: bool = True static: bool = True + shared_lib: Optional[SharedLibType] = None + static_lib: Optional[StaticLibType] = None run_tests: bool = True test_pkg_config: bool = True cc_from_cmake: bool = False @@ -238,6 +253,8 @@ class JobDetails: "cmake-build-arguments": my_shlex_join(self.cmake_build_arguments), "shared": self.shared, "static": self.static, + "shared-lib": self.shared_lib.value if self.shared_lib else None, + "static-lib": self.static_lib.value if self.static_lib else None, "cmake-build-type": self.cmake_build_type, "run-tests": self.run_tests, "android-apks": my_shlex_join(self.android_apks), @@ -325,6 +342,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.msvc_project = spec.msvc_project if spec.msvc_project else "" job.msvc_project_flags.append("-p:TreatWarningsAsError=true") job.test_pkg_config = False + job.shared_lib = SharedLibType.WIN32 + job.static_lib = StaticLibType.MSVC job.cmake_arguments.extend(( "-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=ProgramDatabase", "-DCMAKE_EXE_LINKER_FLAGS=-DEBUG", @@ -413,6 +432,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: "libudev-dev", "fcitx-libs-dev", )) + job.shared_lib = SharedLibType.SO_0 + job.static_lib = StaticLibType.A fpic = True assert spec.os.value.startswith("ubuntu-") ubuntu_year, ubuntu_month = [int(v) for v in spec.os.value.removeprefix("ubuntu-").split(".", 1)] @@ -426,6 +447,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.clang_tidy = False job.run_tests = False job.test_pkg_config = False + job.shared_lib = SharedLibType.DYLIB + job.static_lib = StaticLibType.A match spec.platform: case SdlPlatform.Ios: job.xcode_sdk = 'iphoneos' @@ -448,12 +471,15 @@ def spec_to_job(spec: JobSpec) -> JobDetails: "'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'", "-DSDL_FRAMEWORK=ON", )) + job.shared_lib = SharedLibType.FRAMEWORK else: job.clang_tidy = True job.cmake_arguments.extend(( "-DCMAKE_OSX_ARCHITECTURES=arm64", "-DCLANG_TIDY_BINARY=$(brew --prefix llvm)/bin/clang-tidy", )) + job.shared_lib = SharedLibType.DYLIB + job.static_lib = StaticLibType.A job.apt_packages = [] job.brew_packages.append("ninja") if job.test_pkg_config: @@ -464,6 +490,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.android_gradle = spec.android_gradle job.android_mk = spec.android_mk job.run_tests = False + job.shared_lib = SharedLibType.SO + job.static_lib = StaticLibType.A if spec.android_mk or not spec.no_cmake: job.android_ndk = True if spec.android_gradle or not spec.no_cmake: @@ -510,6 +538,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails: "chrome --version", "chromedriver --version", ]) + job.static_lib = StaticLibType.A case SdlPlatform.Ps2: build_parallel = False job.shared = False @@ -522,6 +551,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.shared = False job.cc = "mips64r5900el-ps2-elf-gcc" job.ldflags = ["-L${PS2DEV}/ps2sdk/ee/lib", "-L${PS2DEV}/gsKit/lib", "-L${PS2DEV}/ps2sdk/ports/lib", ] + job.static_lib = StaticLibType.A case SdlPlatform.Psp: build_parallel = False job.sudo = "" @@ -534,6 +564,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.cc = "psp-gcc" job.ldflags = ["-L${PSPDEV}/lib", "-L${PSPDEV}/psp/lib", "-L${PSPDEV}/psp/sdk/lib", ] job.pollute_directories = ["${PSPDEV}/include", "${PSPDEV}/psp/include", "${PSPDEV}/psp/sdk/include", ] + job.static_lib = StaticLibType.A case SdlPlatform.Vita: job.sudo = "" job.apt_packages = [] @@ -556,6 +587,7 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.run_tests = False job.shared = False job.cc = "arm-vita-eabi-gcc" + job.static_lib = StaticLibType.A case SdlPlatform.Haiku: fpic = False job.run_tests = False @@ -567,6 +599,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: f"-DCMAKE_CXX_COMPILER={job.cxx}", "-DCMAKE_SYSTEM_NAME=Haiku", )) + job.shared_lib = SharedLibType.SO_0 + job.static_lib = StaticLibType.A case SdlPlatform.PowerPC64: # FIXME: Enable SDL_WERROR job.werror = False @@ -574,6 +608,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: job.run_tests = False job.sudo = "" job.apt_packages = [] + job.shared_lib = SharedLibType.SO_0 + job.static_lib = StaticLibType.A case SdlPlatform.LoongArch64: job.run_tests = False job.cc = "${LOONGARCH64_CC}" @@ -583,13 +619,16 @@ def spec_to_job(spec: JobSpec) -> JobDetails: f"-DCMAKE_CXX_COMPILER={job.cxx}", "-DCMAKE_SYSTEM_NAME=Linux", )) + job.shared_lib = SharedLibType.SO_0 + job.static_lib = StaticLibType.A case SdlPlatform.N3ds: job.shared = False - job.apt_packages = ["ninja-build"] + job.apt_packages = ["ninja-build", "binutils"] job.clang_tidy = False job.run_tests = False job.cc_from_cmake = True job.cmake_toolchain_file = "${DEVKITPRO}/cmake/3DS.cmake" + job.static_lib = StaticLibType.A case SdlPlatform.Msys2: job.shell = "msys2 {0}" assert spec.msys2_platform @@ -602,6 +641,8 @@ def spec_to_job(spec: JobSpec) -> JobDetails: "ucrt64": "mingw-w64-ucrt-x86_64", }[spec.msys2_platform.value] job.msys2_no_perl = spec.msys2_platform in (Msys2Platform.Mingw32, Msys2Platform.Clang32) + job.shared_lib = SharedLibType.WIN32 + job.static_lib = StaticLibType.A case SdlPlatform.Riscos: # FIXME: Enable SDL_WERROR job.werror = False @@ -616,11 +657,14 @@ def spec_to_job(spec: JobSpec) -> JobDetails: "-DSDL_GCC_ATOMICS:BOOL=OFF", )) job.cmake_toolchain_file = "/home/riscos/env/toolchain-riscos.cmake" + job.static_lib = StaticLibType.A case SdlPlatform.FreeBSD | SdlPlatform.NetBSD: job.cpactions = True job.no_cmake = True job.run_tests = False job.apt_packages = [] + job.shared_lib = SharedLibType.SO_0 + job.static_lib = StaticLibType.A match spec.platform: case SdlPlatform.FreeBSD: job.cpactions_os = "freebsd" diff --git a/.github/workflows/generic.yml b/.github/workflows/generic.yml index da916b3d0..14d11d405 100644 --- a/.github/workflows/generic.yml +++ b/.github/workflows/generic.yml @@ -179,6 +179,14 @@ jobs: run: | ${{ matrix.platform.source-cmd }} cmake --build build --config ${{ matrix.platform.cmake-build-type }} --verbose -- ${{ matrix.platform.cmake-build-arguments }} + - name: 'Verify SDL_REVISION' + if: ${{ !matrix.platform.no-cmake }} + run: | + echo "This should show us the SDL_REVISION" + echo "Shared library:" + ${{ (matrix.platform.shared-lib && format('strings build/{0} | grep SDL-', matrix.platform.shared-lib)) || 'echo ""' }} + echo "Static library:" + ${{ (matrix.platform.static-lib && format('strings build/{0} | grep SDL-', matrix.platform.static-lib)) || 'echo ""' }} - name: 'Run build-time tests (CMake)' id: tests if: ${{ !matrix.platform.no-cmake && matrix.platform.run-tests }} @@ -189,10 +197,6 @@ jobs: set -eu export SDL_TESTS_QUICK=1 ctest -VV --test-dir build/ -j2 - if test "${{ runner.os }}" = "Linux"; then - # This should show us the SDL_REVISION - strings build/libSDL3.so.0 | grep SDL- - fi - name: "Build test apk's (CMake)" id: apks if: ${{ steps.build.outcome == 'success' && matrix.platform.android-apks != '' }} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 425298853..279d1e2bc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -659,7 +659,7 @@ function(add_sdl_test TEST TARGET) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.27") - set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$") + set_property(TEST ${TEST} APPEND PROPERTY ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:$") endif() if(NOT notrackmem) set_property(TEST ${TEST} PROPERTY FAIL_REGULAR_EXPRESSION "Total: [0-9]+\\.[0-9]+ Kb in [1-9][0-9]* allocations")