Skip to content

test building libiconv on android #53

test building libiconv on android

test building libiconv on android #53

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'