From a85292e7990168f67fd500e7e79a7f60989f1226 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Fri, 16 Aug 2024 14:39:15 +0200 Subject: [PATCH] ci: don't use conan for ci --- .github/workflows/build-cmake-conan.yml | 57 ---------- .github/workflows/build-ps2.yml | 29 ------ .github/workflows/build-switch.yml | 26 ----- .github/workflows/build.yml | 77 ++++++++++++++ conanfile.py | 132 ------------------------ 5 files changed, 77 insertions(+), 244 deletions(-) delete mode 100644 .github/workflows/build-cmake-conan.yml delete mode 100644 .github/workflows/build-ps2.yml delete mode 100644 .github/workflows/build-switch.yml create mode 100644 .github/workflows/build.yml delete mode 100644 conanfile.py diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml deleted file mode 100644 index ca45d9f..0000000 --- a/.github/workflows/build-cmake-conan.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Conan -on: - pull_request: - push: - release: - types: published -jobs: - build-cmake: - strategy: - matrix: - os: [windows-latest, ubuntu-latest, macos-latest] - platform: ['null', 'gl3', 'd3d9'] - gl3_gfxlib: ['glfw', 'sdl2'] - exclude: - - os: ubuntu-latest - platform: d3d9 - - os: macos-latest - platform: d3d9 - - platform: 'null' - gl3_gfxlib: sdl2 - - platform: d3d9 - gl3_gfxlib: sdl2 - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.x' - - name: "Setup conan" - run: | - python -m pip install conan - conan config init - - name: "Create host profile" - shell: bash - run: | - cp ~/.conan/profiles/default host_profile - - name: "Download/build dependencies (conan install)" - run: | - conan install ${{ github.workspace }} librw/master@ -if build -o librw:platform=${{ matrix.platform }} -o librw:gl3_gfxlib=${{ matrix.gl3_gfxlib }} --build missing -pr:h ./host_profile -pr:b default - env: - CONAN_SYSREQUIRES_MODE: enabled - - name: "Build librw (conan build)" - run: | - conan build ${{ github.workspace }} -if build -bf build -pf package - - name: "Package librw (conan package)" - run: | - conan package ${{ github.workspace }} -if build -bf build -pf package - - name: "Create binary package (cpack)" - working-directory: ./build - run: | - cpack - - name: "Archive binary package (github artifacts)" - uses: actions/upload-artifact@v2 - with: - name: "${{ matrix.os }}-${{ matrix.platform }}" - path: build/*.tar.xz - if-no-files-found: error diff --git a/.github/workflows/build-ps2.yml b/.github/workflows/build-ps2.yml deleted file mode 100644 index bb0b0ec..0000000 --- a/.github/workflows/build-ps2.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Playstation 2 (by ps2dev) -on: - pull_request: - push: - release: - types: published -jobs: - build-playstation-2: - runs-on: ubuntu-latest - container: ps2dev/ps2dev - steps: - - uses: actions/checkout@v2 - - name: "Install dependencies" - run: | - apk add build-base cmake - - name: "Build files" - run: | - cmake -S. -Bbuild -DLIBRW_INSTALL=ON -DLIBRW_PLATFORM=PS2 -DCMAKE_TOOLCHAIN_FILE=cmake/ps2/cmaketoolchain/toolchain_ps2_ee.cmake - cmake --build build --parallel - - name: "Create binary package (cpack)" - working-directory: ./build - run: | - cpack - - name: "Archive binary package (github artifacts)" - uses: actions/upload-artifact@v2 - with: - name: "ps2" - path: build/*.tar.xz - if-no-files-found: error diff --git a/.github/workflows/build-switch.yml b/.github/workflows/build-switch.yml deleted file mode 100644 index cfda93c..0000000 --- a/.github/workflows/build-switch.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Nintendo Switch (by devkitPro) -on: - pull_request: - push: - release: - types: published -jobs: - build-nintendo-switch: - runs-on: ubuntu-latest - container: devkitpro/devkita64:latest - steps: - - uses: actions/checkout@v2 - - name: "Build files" - run: | - /opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake -S. -Bbuild -DLIBRW_PLATFORM=GL3 -DLIBRW_GL3_GFXLIB=GLFW -DLIBRW_INSTALL=True - cmake --build build --parallel - - name: "Create binary package (cpack)" - working-directory: ./build - run: | - cpack - - name: "Archive binary package (github artifacts)" - uses: actions/upload-artifact@v2 - with: - name: "switch-gl3" - path: build/*.tar.xz - if-no-files-found: error diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..18dbfcd --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +name: Build +on: + pull_request: + push: + release: + types: published +jobs: + build-cmake: + name: ${{ matrix.case.name }} + runs-on: ${{ matrix.case.os }} + container: ${{ matrix.case.container }} + + strategy: + fail-fast: false + matrix: + case: + - { name: 'Windows (DirectX 9)', os: 'windows-latest', platform: 'D3D9' } + - { name: 'Windows (GL3, glfw)', os: 'windows-latest', platform: 'GL3', gl3_gfxlib: 'GLFW' } + - { name: 'Windows (GL3, SDL2)', os: 'windows-latest', platform: 'GL3', gl3_gfxlib: 'SDL2' } + - { name: 'Windows (null)', os: 'windows-latest', platform: 'NULL' } + - { name: 'macOS (GL3, glfw)', os: 'macos-latest', platform: 'GL3', gl3_gfxlib: 'GLFW' } + - { name: 'macOS (GL3, SDL2)', os: 'macos-latest', platform: 'GL3', gl3_gfxlib: 'SDL2' } + - { name: 'macOS (null)', os: 'macos-latest', platform: 'NULL' } + - { name: 'Ubuntu (GL3, glfw)', os: 'ubuntu-latest', platform: 'GL3', gl3_gfxlib: 'GLFW' } + - { name: 'Ubuntu (GL3, SDL2)', os: 'ubuntu-latest', platform: 'GL3', gl3_gfxlib: 'SDL2' } + - { name: 'Ubuntu (null)', os: 'ubuntu-latest', platform: 'NULL' } + - { name: 'PlayStation 2', os: 'ubuntu-latest', platform: 'PS2', ps2: true, container: 'ps2dev/ps2dev:latest', cmake-toolchain-file: 'cmake/ps2/cmaketoolchain/toolchain_ps2_ee.cmake' } + - { name: 'Nintendo Switch', os: 'ubuntu-latest', platform: 'GL3', gl3_gfxlib: 'GLFW', glfw-nobuild: true, container: 'devkitpro/devkita64:latest', cmake-toolchain-file: '/opt/devkitpro/cmake/Switch.cmake' } + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: '3.x' + - name: 'Install PS2 dependencies' + if: ${{ matrix.case.ps2 }} + run: | + apk add cmake gmp mpc1 mpfr4 make pkgconf git + - name: 'Setup SDL2' + if: ${{ matrix.case.gl3_gfxlib == 'SDL2' }} + uses: libsdl-org/setup-sdl@main + with: + version: 2-latest + install-linux-dependencies: true + cmake-toolchain-file: ${{ matrix.case.cmake-toolchain-file }} + - name: 'Setup GLFW' + if: ${{ matrix.case.gl3_gfxlib == 'GLFW' && !matrix.case.glfw-nobuild }} + shell: sh + run: | + ${{ (runner.os == 'Linux' && 'sudo apt-get update -y && sudo apt-get install -y libwayland-dev libxkbcommon-dev xorg-dev') || '' }} + git clone "https://github.com/glfw/glfw.git" glfw-source --depth 1 + cmake -S glfw-source -B glfw-build -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF -DGLFW_INSTALL=ON -DCMAKE_INSTALL_PREFIX=glfw-prefix -DCMAKE_TOOLCHAIN_FILE="${{ matrix.case.cmake-toolchain-file }}" -DCMAKE_BUILD_TYPE=Release + cmake --build glfw-build --config Release + cmake --install glfw-build --config Release + echo "glfw3_ROOT=${{ github.workspace}}/glfw-prefix" >${GITHUB_ENV} + - name: 'Configure (CMake)' + shell: sh + run: | + cmake -S . -B build \ + -DLIBRW_PLATFORM=${{ matrix.case.platform }} \ + -DLIBRW_GL3_GFXLIB=${{ matrix.case.gl3_gfxlib }} \ + -DCMAKE_TOOLCHAIN_FILE=${{ matrix.case.cmake-toolchain-file }} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POLICY_DEFAULT_CMP0074=NEW + - name: 'Build (CMake)' + run: | + cmake --build build --config Release --verbose + - name: 'Create binary package (CPack)' + run: | + cd build + cpack . -C Release + - name: 'Archive binary package (GitHub artifacts)' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.case.os }}-${{ matrix.case.platform }}${{ (matrix.case.gl3_gfxlib != '' && format('-{0}', matrix.case.gl3_gfxlib)) || '' }} + path: build/*.tar.xz + if-no-files-found: error diff --git a/conanfile.py b/conanfile.py deleted file mode 100644 index aa36dd5..0000000 --- a/conanfile.py +++ /dev/null @@ -1,132 +0,0 @@ -from conans import ConanFile, CMake, tools -from conans.errors import ConanException, ConanInvalidConfiguration -import os -import shutil -import textwrap - - -class LibrwConan(ConanFile): - name = "librw" - version = "master" - license = "MIT" - settings = "os", "arch", "compiler", "build_type" - generators = "cmake", "cmake_find_package" - options = { - "platform": ["null", "gl3", "d3d9", "ps2"], - "gl3_gfxlib": ["glfw", "sdl2"], - } - default_options = { - "platform": "gl3", - "gl3_gfxlib": "glfw", - "openal:with_external_libs": False, - "sdl2:vulkan": False, - "sdl2:opengl": True, - "sdl2:sdl2main": True, - } - no_copy_source = True - - @property - def _os_is_playstation2(self): - try: - return self.settings.os == "Playstation2" - except ConanException: - return False - - def config_options(self): - if self._os_is_playstation2: - self.options.platform = "ps2" - if self.settings.os == "Windows": - self.options.platform = "d3d9" - self.options["sdl2"].directx = False - - def configure(self): - if self.options.platform != "gl3": - del self.options.gl3_gfxlib - - def validate(self): - if self.options.platform == "d3d9" and self.settings.os != "Windows": - raise ConanInvalidConfiguration("platform=d3d9 can only be built for os=Windows") - if self._os_is_playstation2: - if self.options.platform not in ("null", "ps2"): - raise ConanInvalidConfiguration("os=Playstation2 only supports platform=(null,ps2)") - - def requirements(self): - if self.options.platform == "gl3": - if self.options.gl3_gfxlib == "glfw": - self.requires("glfw/3.3.7") - elif self.options.gl3_gfxlib == "sdl2": - self.requires("sdl/2.0.20") - - def export_sources(self): - for d in ("cmake", "skeleton", "src", "tools"): - shutil.copytree(src=d, dst=os.path.join(self.export_sources_folder, d)) - self.copy("args.h") - self.copy("rw.h") - self.copy("CMakeLists.txt") - self.copy("LICENSE") - - @property - def _librw_platform(self): - return { - "null": "NULL", - "gl3": "GL3", - "d3d9": "D3D9", - "ps2": "PS2", - }[str(self.options.platform)] - - def build(self): - if self.source_folder == self.build_folder: - raise Exception("cannot build with source_folder == build_folder") - if self.options.platform == "gl3" and self.options.gl3_gfxlib == "glfw": - tools.save("Findglfw3.cmake", - textwrap.dedent( - """ - if(NOT TARGET glfw) - message(STATUS "Creating glfw TARGET") - add_library(glfw INTERFACE IMPORTED) - set_target_properties(glfw PROPERTIES - INTERFACE_LINK_LIBRARIES CONAN_PKG::glfw) - endif() - """), append=True) - tools.save("CMakeLists.txt", - textwrap.dedent( - """ - cmake_minimum_required(VERSION 3.0) - project(cmake_wrapper) - - include("{}/conanbuildinfo.cmake") - conan_basic_setup(TARGETS) - - add_subdirectory("{}" librw) - """).format(self.install_folder.replace("\\", "/"), - self.source_folder.replace("\\", "/"))) - cmake = CMake(self) - env = {} - cmake.definitions["LIBRW_PLATFORM"] = self._librw_platform - cmake.definitions["LIBRW_INSTALL"] = True - cmake.definitions["LIBRW_TOOLS"] = True - if self.options.platform == "gl3": - cmake.definitions["LIBRW_GL3_GFXLIB"] = str(self.options.gl3_gfxlib).upper() - if self._os_is_playstation2: - env["PS2SDK"] = self.deps_cpp_info["ps2dev-ps2sdk"].rootpath - with tools.environment_append(env): - cmake.configure(source_folder=self.build_folder) - cmake.build() - - def package(self): - cmake = CMake(self) - cmake.install() - - def package_info(self): - self.cpp_info.includedirs.append(os.path.join("include", "librw")) - self.cpp_info.libs = ["librw" if self.settings.compiler == "Visual Studio" else "rw"] - if self.options.platform == "null": - self.cpp_info.defines.append("RW_NULL") - elif self.options.platform == "gl3": - self.cpp_info.defines.append("RW_GL3") - if self.options.gl3_gfxlib == "sdl2": - self.cpp_info.defines.append("LIBRW_SDL2") - elif self.options.platform == "d3d9": - self.cpp_info.defines.append("RW_D3D9") - elif self.options.platform == "ps2": - self.cpp_info.defines.append("RW_PS2")