mirror of https://github.com/kiwix/libkiwix.git
150 lines
4.6 KiB
YAML
150 lines
4.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
|
|
jobs:
|
|
Macos:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Setup python 3.10
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.10'
|
|
- name: Install packages
|
|
run: |
|
|
brew update
|
|
brew install gcovr pkg-config ninja
|
|
- name: Install python modules
|
|
run: pip3 install meson==0.49.2 pytest
|
|
- name: Install deps
|
|
shell: bash
|
|
run: |
|
|
ARCHIVE_NAME=deps2_osx_native_dyn_libkiwix.tar.xz
|
|
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C $HOME
|
|
- name: Compile
|
|
shell: bash
|
|
run: |
|
|
export PKG_CONFIG_PATH=$HOME/BUILD_native_dyn/INSTALL/lib/pkgconfig
|
|
export CPPFLAGS="-I$HOME/BUILD_native_dyn/INSTALL/include"
|
|
meson . build --default-library=shared -Db_coverage=true
|
|
cd build
|
|
ninja
|
|
- name: Test
|
|
shell: bash
|
|
run: |
|
|
export LD_LIBRARY_PATH=$HOME/BUILD_native_dyn/INSTALL/lib:$HOME/BUILD_native_dyn/INSTALL/lib64
|
|
cd build
|
|
meson test --verbose
|
|
env:
|
|
SKIP_BIG_MEMORY_TEST: 1
|
|
|
|
Linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name:
|
|
- native_static
|
|
- native_dyn
|
|
- android_arm
|
|
- android_arm64
|
|
- win32_static
|
|
- win32_dyn
|
|
include:
|
|
- name: native_static
|
|
target: native_static
|
|
image_variant: bionic
|
|
lib_postfix: '/x86_64-linux-gnu'
|
|
- name: native_dyn
|
|
target: native_dyn
|
|
image_variant: bionic
|
|
lib_postfix: '/x86_64-linux-gnu'
|
|
- name: android_arm
|
|
target: android_arm
|
|
image_variant: bionic
|
|
lib_postfix: '/arm-linux-androideabi'
|
|
- name: android_arm64
|
|
target: android_arm64
|
|
image_variant: bionic
|
|
lib_postfix: '/aarch64-linux-android'
|
|
- name: win32_static
|
|
target: win32_static
|
|
image_variant: f35
|
|
lib_postfix: '64'
|
|
- name: win32_dyn
|
|
target: win32_dyn
|
|
image_variant: f35
|
|
lib_postfix: '64'
|
|
env:
|
|
HOME: /home/runner
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-31"
|
|
steps:
|
|
- name: Checkout code
|
|
shell: python
|
|
run: |
|
|
from subprocess import check_call
|
|
from os import environ
|
|
command = [
|
|
'git', 'clone',
|
|
'https://github.com/${{github.repository}}',
|
|
'--depth=1',
|
|
'--branch', '${{ github.head_ref || github.ref_name }}'
|
|
]
|
|
check_call(command, cwd=environ['HOME'])
|
|
- name: Install deps
|
|
shell: bash
|
|
run: |
|
|
ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_libkiwix.tar.xz
|
|
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C /home/runner
|
|
- name: Compile
|
|
shell: bash
|
|
run: |
|
|
meson --version
|
|
if [[ "${{matrix.target}}" =~ .*_dyn ]]; then
|
|
MESON_OPTION="--default-library=shared"
|
|
else
|
|
MESON_OPTION="--default-library=static"
|
|
fi
|
|
if [[ "${{matrix.target}}" =~ native_.* ]]; then
|
|
MESON_OPTION="$MESON_OPTION -Db_coverage=true"
|
|
else
|
|
MESON_OPTION="$MESON_OPTION --cross-file $HOME/BUILD_${{matrix.target}}/meson_cross_file.txt"
|
|
fi
|
|
if [[ "${{matrix.target}}" =~ android_.* ]]; then
|
|
MESON_OPTION="$MESON_OPTION -Dstatic-linkage=true"
|
|
fi
|
|
cd $HOME/libkiwix
|
|
meson . build ${MESON_OPTION}
|
|
cd build
|
|
ninja
|
|
env:
|
|
PKG_CONFIG_PATH: "/home/runner/BUILD_${{matrix.target}}/INSTALL/lib/pkgconfig:/home/runner/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}/pkgconfig"
|
|
CPPFLAGS: "-I/home/runner/BUILD_${{matrix.target}}/INSTALL/include"
|
|
- name: Test
|
|
if: startsWith(matrix.target, 'native_')
|
|
shell: bash
|
|
run: |
|
|
cd $HOME/libkiwix/build
|
|
meson test --verbose
|
|
ninja coverage
|
|
env:
|
|
LD_LIBRARY_PATH: "/home/runner/BUILD_${{matrix.target}}/INSTALL/lib:/home/runner/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}"
|
|
SKIP_BIG_MEMORY_TEST: 1
|
|
- name: Publish coverage
|
|
shell: bash
|
|
run: |
|
|
cd $HOME/libkiwix
|
|
curl https://codecov.io/bash -o codecov.sh
|
|
bash codecov.sh -n "${OS_NAME}_${{matrix.target}}" -Z
|
|
rm codecov.sh
|
|
if: startsWith(matrix.target, 'native_')
|
|
env:
|
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|