diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..46a42d3d9 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +language: cpp +dist: trusty +sudo: required +before_install: +- openssl aes-256-cbc -K $encrypted_f030ceebf8d9_key -iv $encrypted_f030ceebf8d9_iv + -in travis/travisci_builder_id_key.enc -out travis/travisci_builder_id_key -d +- chmod 600 travis/travisci_builder_id_key +cache: ccache +install: travis/install_deps.sh +script: travis/compile.sh +env: + - PLATFORM="native_static" + - PLATFORM="native_dyn" + - PLATFORM="win32_static" + - PLATFORM="win32_dyn" + - PLATFORM="android_arm" + - PLATFORM="android_arm64" +addons: + ssh_known_hosts: download.kiwix.org diff --git a/travis/compile.sh b/travis/compile.sh new file mode 100755 index 000000000..2d8330a07 --- /dev/null +++ b/travis/compile.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +set -e + +BUILD_DIR=${HOME}/BUILD_${PLATFORM} +INSTALL_DIR=${BUILD_DIR}/INSTALL + + +case ${PLATFORM} in + "native_static") + MESON_OPTION="--default-library=static" + ;; + "native_dyn") + MESON_OPTION="--default-library=shared" + ;; + "win32_static") + MESON_OPTION="--default-library=static --cross-file ${BUILD_DIR}/meson_cross_file.txt" + ;; + "win32_dyn") + MESON_OPTION="--default-library=shared --cross-file ${BUILD_DIR}/meson_cross_file.txt" + ;; + "android_arm") + MESON_OPTION="-Dandroid=true --default-library=shared --cross-file ${BUILD_DIR}/meson_cross_file.txt" + ;; + "android_arm64") + MESON_OPTION="-Dandroid=true --default-library=shared --cross-file ${BUILD_DIR}/meson_cross_file.txt" + ;; + +esac + +cd ${TRAVIS_BUILD_DIR} +export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/x86_64-linux-gnu/pkgconfig +meson . build -Dctpp2-install-prefix=${INSTALL_DIR} ${MESON_OPTION} +cd build +ninja diff --git a/travis/install_deps.sh b/travis/install_deps.sh new file mode 100755 index 000000000..aabe2c60a --- /dev/null +++ b/travis/install_deps.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -e + + +REPO_NAME=${TRAVIS_REPO_SLUG#*/} +ARCHIVE_NAME=deps_${PLATFORM}_${REPO_NAME}.tar.gz +SSH_KEY=${TRAVIS_BUILD_DIR}/travis/travisci_builder_id_key + + +# Packages. +case ${PLATFORM} in + "native_static") + PACKAGES="gcc cmake libbz2-dev ccache zlib1g-dev uuid-dev libctpp2-dev" + ;; + "native_dyn") + PACKAGES="gcc cmake libbz2-dev ccache zlib1g-dev uuid-dev libctpp2-dev libmicrohttpd-dev" + ;; + "win32_static") + PACKAGES="g++-mingw-w64-i686 gcc-mingw-w64-i686 gcc-mingw-w64-base mingw-w64-tools ccache" + ;; + "win32_dyn") + PACKAGES="g++-mingw-w64-i686 gcc-mingw-w64-i686 gcc-mingw-w64-base mingw-w64-tools ccache" + ;; + "android_arm") + PACKAGES="gcc cmake ccache" + ;; + "android_arm64") + PACKAGES="gcc cmake ccache" + ;; +esac + +sudo apt-get update -qq +sudo apt-get install -qq python3-pip ${PACKAGES} +pip3 install meson + +# Ninja +cd $HOME +git clone git://github.com/ninja-build/ninja.git +cd ninja +git checkout release +./configure.py --bootstrap +sudo cp ninja /bin + + +# Dependencies comming from kiwix-build. +cd ${HOME} +scp -v -p -i ${SSH_KEY} nightlybot@download.kiwix.org:~/travis_deps/${ARCHIVE_NAME} . +mkdir -p BUILD_${PLATFORM} +cd BUILD_${PLATFORM} +tar xf ${HOME}/${ARCHIVE_NAME} diff --git a/travis/travisci_builder_id_key.enc b/travis/travisci_builder_id_key.enc new file mode 100644 index 000000000..99638fdb6 Binary files /dev/null and b/travis/travisci_builder_id_key.enc differ diff --git a/travis/travisci_builder_id_key.pub b/travis/travisci_builder_id_key.pub new file mode 100644 index 000000000..12e88a21d --- /dev/null +++ b/travis/travisci_builder_id_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCWxcsEawR4TrXmGgMXXOhuYjXtO1V/BpEQ2tuf2tTiloZ0n1cPtxeLp3ic7F91p/e+58U1QlpLkxs9Ia0REXvr2ppd3FuIRjADs6g9iqK4jgAx/KKVjy2vhtxFtDKP5xCkbqSRjDcYnSZwrllEPbsOEIgTvRBaOyyqBNbctjSN6DhB+hY1bsPNJntDL0/XLqSYFXBnxd+unRLiItRJX1C42tpTwWyr9OvpjuPCjWVo/6WqohU8xjW29xPDpmAnWCX02JD//hRamJ+zfDPxf5AGTVJhk7of4Jjj4pTunhTXRLGhA3UBPApbI//NA2nAOc8feOchu1VfO6n5JuVbnXDzUlMFVqSNJ6ihYBTEczN+T/xbdc3Uyzi3JZX7IW2lH1YpxJoGEzJ67HjNPHdKgQzqVGlKl00qUrL1aMJ+1rOm8xDvPYVjHidORPUn0x+2fvxJ0VVr4crVwmTa23ft79MS2sLbw5DbPkURVUkEH88nSwcbF9fbuCPE4RL15NS7ZNwDqRMyQIxnAe7Sf+UWz45HxTrdvgjrsk0PCYX+KCgnXEexXWDDlbXWuiJa1h2VhKb2zM3AUmtRMK0pFTi/xCrFFwDIYYIBOMxMb0nYmruv5Feh/cez1FNYq9+UKrnBAV7DAZCLibM2/u46OAgbbtZS70zaX1JvcX44yUgjpClNcQ== TravisCIBuilder