diff --git a/.github/workflows/rebuildDependencies.yml b/.github/workflows/rebuildDependencies.yml new file mode 100644 index 0000000..e86b3c6 --- /dev/null +++ b/.github/workflows/rebuildDependencies.yml @@ -0,0 +1,109 @@ +name: VCMI - dependencies + +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + include: + - platform: mac-intel + os: macos-13 + preset: macos-conan-ninja-release + conan_profile: macos-intel + conan_options: --options with_apple_system_libs=True + artifact_platform: intel + - platform: mac-arm + os: macos-13 + preset: macos-arm-conan-ninja-release + conan_profile: macos-arm + conan_options: --options with_apple_system_libs=True + artifact_platform: arm + - platform: ios + os: macos-13 + preset: ios-release-conan-ccache + conan_profile: ios-arm64 + conan_options: --options with_apple_system_libs=True + - platform: mingw + os: ubuntu-22.04 + preset: windows-mingw-conan-linux + conan_profile: mingw64-linux.jinja + - platform: mingw-32 + os: ubuntu-22.04 + preset: windows-mingw-conan-linux + conan_profile: mingw32-linux.jinja + - platform: android-32 + os: macos-14 + preset: android-conan-ninja-release + conan_profile: android-32-ndk + conan_options: --conf tools.android:ndk_path=$ANDROID_NDK_ROOT + artifact_platform: armeabi-v7a + - platform: android-64 + os: macos-14 + preset: android-conan-ninja-release + conan_profile: android-64-ndk + conan_options: --conf tools.android:ndk_path=$ANDROID_NDK_ROOT + artifact_platform: arm64-v8a + runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: 'vcmi/vcmi' + ref: 'update_prebuilts' + + - name: Install dependencies + run: source '${{github.workspace}}/CI/${{matrix.platform}}/before_install.sh' + env: + VCMI_BUILD_PLATFORM: x64 + + - name: Remove old packages + run: rm -rf ~/.conan/data/ffmpeg ~/.conan/data/yasm ~/.conan/data/pkgconfig ~/.conan/data/xz_utils + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Setup Conan + run: pip3 install 'conan<2.0' + + - name: Generate conan profile + run: | + conan profile new default --detect + conan install . \ + --install-folder=conan-generated \ + --no-imports \ + --build=missing \ + --profile:build=default \ + --profile:host=CI/conan/${{ matrix.conan_profile }} \ + ${{ matrix.conan_options }} + env: + GENERATE_ONLY_BUILT_CONFIG: 1 + + - name: Remove builds and source code + run: "conan remove --builds --src --force '*'" + + - name: Remove Android SDK + if: ${{ startsWith(matrix.platform, 'android') }} + run: rm -rf ~/.conan/data/android-ndk + + - name: Create dependencies archive + run: "tar --create --xz --file dependencies-${{matrix.platform}}.txz -C ~/.conan data" + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: dependencies-${{ matrix.platform }} + compression-level: 0 + path: 'dependencies-${{matrix.platform}}.txz'