test building libiconv on android #53
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: VCMI - dependencies | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- platform: android-armeabi-v7a | |
os: ubuntu-24.04 | |
conan_profile: android-32-ndk | |
conan_prebuilts: dependencies-android-armeabi-v7a | |
- platform: android-arm64-v8a | |
os: ubuntu-24.04 | |
conan_profile: android-64-ndk | |
conan_prebuilts: dependencies-android-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' | |
- uses: actions/setup-java@v4 | |
if: ${{ startsWith(matrix.platform, 'android') }} | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Prepare CI | |
if: "${{ matrix.before_install != '' }}" | |
run: source '${{github.workspace}}/CI/before_install/${{matrix.before_install}}' | |
- name: Install Conan Dependencies | |
if: "${{ matrix.conan_prebuilts != '' }}" | |
run: source '${{github.workspace}}/CI/install_conan_dependencies.sh' '${{matrix.conan_prebuilts}}' | |
- name: Remove old binary packages (non-android) | |
if: ${{ !startsWith(matrix.platform, 'android') }} | |
run: rm -rf ~/.conan/data/*/*/_/_/package | |
# TODO: fix libiconv - fails to build on android (both macos and linux host) | |
- name: Remove old binary packages (android) | |
if: ${{ startsWith(matrix.platform, 'android') }} | |
run: | | |
rm -rf ~/.conan/data/*/*/_/_/package | |
echo -e "[buildenv]\nLD=ld" >> CI/conan/${{ matrix.conan_profile }} | |
# Completely remove packages that were confirmed to be rebuildable using upstream recipe/sources | |
# TODO: generate entire package from scratch instead of such cleanup | |
- name: Remove old recipes | |
run: | | |
rm -rf ~/.conan/data/boost | |
rm -rf ~/.conan/data/ffmpeg | |
rm -rf ~/.conan/data/xz_utils | |
rm -rf ~/.conan/data/sdl_mixer | |
rm -rf ~/.conan/data/sdl_image | |
rm -rf ~/.conan/data/sdl_ttf | |
rm -rf ~/.conan/data/sdl | |
- name: Remove old recipes (non-apple) | |
if: ${{ matrix.platform != 'ios' && matrix.platform != 'mac-intel' && matrix.platform != 'mac-arm' }} | |
run: | | |
rm -rf ~/.conan/data/sqlite3 | |
- name: Install Conan | |
run: pipx install 'conan<2.0' | |
- name: Generate conan profile | |
run: | | |
conan profile new default --detect | |
conan install . -o 'boost/*:without_process=True' \ | |
--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 build requirements | |
run: | | |
rm -rf ~/.conan/data/android-ndk | |
rm -rf ~/.conan/data/autoconf | |
rm -rf ~/.conan/data/automake | |
rm -rf ~/.conan/data/b2 | |
rm -rf ~/.conan/data/cmake | |
rm -rf ~/.conan/data/gnu-config | |
rm -rf ~/.conan/data/libtool | |
rm -rf ~/.conan/data/m4 | |
rm -rf ~/.conan/data/nasm | |
rm -rf ~/.conan/data/pkgconf | |
rm -rf ~/.conan/data/yasm | |
- 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' |