From cf273a06b440f92de1e0a8204f4f8d9225670a22 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Mon, 10 Apr 2017 14:05:58 +0200 Subject: [PATCH] Add TravisCI. Now the project is build on every PR using TravisCI. The project dependencies are get from the archive generated by kiwix-build. --- .travis.yml | 19 +++++++++++ travis/compile.sh | 35 ++++++++++++++++++++ travis/install_deps.sh | 51 +++++++++++++++++++++++++++++ travis/travisci_builder_id_key.enc | Bin 0 -> 3248 bytes travis/travisci_builder_id_key.pub | 1 + 5 files changed, 106 insertions(+) create mode 100644 .travis.yml create mode 100755 travis/compile.sh create mode 100755 travis/install_deps.sh create mode 100644 travis/travisci_builder_id_key.enc create mode 100644 travis/travisci_builder_id_key.pub 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 0000000000000000000000000000000000000000..99638fdb666be59e640ce1730a1c76a6e56721a0 GIT binary patch literal 3248 zcmV;h3{UfVK0AX|U!Yy`+xfE6k2=Rc9KC=#^+^k|t z@F^*HeAKN=#waA*nmi2ucqj=(0j2L;Q3pksLA0;q0wCr5aUa`7w9V?m4~R}og9W9_eS<&oJmv#pQ<`bSMj!MX zJJlul#*w{}7J)4>#ZFIRVE9rs-h!RDq0N~vwAh}r#Ohn5N7L#%$PIFQHEkmn$0nU) zBVzwEdf#*b&#{OHqIa$TZJ%S9@B|oxzIl%T-WT*|!FO4XuV|z^(3jcnH|$Q{8YlL7 zZZ<1G3cS*b|K-IPn{|)h>sT&&MA$!Po$Ch;aBBd08RyJ-IWL!n4nAKsJrWwA&3>rw z4Rznc&$J~&op?;o(@p9ikfFDocBPHJEcxcJ zc^;v|dMq8$_pr?}E_C0L1Lp$4E+PHE6xb8+MqRGhY40 zAX5i?DL5gtN9oXzQbjdcU6YWO?e2o$9Em4A95Urt>xKpT@B6DBZ=v{xdhyX)uzK<6 zb6tQQioAVc&O5}%?F#z?!013_{f|J&U~^f*>XO?1OoJiz;*_*2C3p?BzFukzn($CA z%j>AkfxG9PFuqLrg`&G47uVqLl*>x$6FiQE_Y&6$qP(gsehcm;xsA$ZIDf^ zN@^gKJ7?6_zCqCFxY-!)Pqqgxv;-q01_F*KqN8nAvS_Gd#ZRreq(h51g!C+{>w-wU z%Yd?)mFbxut6sew^JY**&J z#jlIoy*;MgEQ%MWE;Kl^2W={6hQda>`|U(ce_2z8u%_kiFOGB1m_p=1xvmQ^KD`tw zc}iG8ptnW@&hi32ipalScCASHIF-_%SIoc>_K7BE;`2L7sb$yMA3^H~F*ClgmET-j|qxHF$dn@j%+=|v{P||WzXJXzMa37JDBeeAK*56l7ih6xZ zmM{%7<5RuOoSvFUsC5}6rpSFjpgTg33ogLcLbR$X*Mf1-#pCfXW0(@gSWVAT<^j_C zysH=xqZnSJ#p6KBe;KRy^v%oALO%MB{I2i=A^;xM-3G>8`eosJk z^AC{-qU*>@hg^b`{)2N^({h5j*5 zHqIW<}#Df_liWpGQ3K7hANCsW&ugP;b7Yeh`S`OKk{(2Y<81woV|Af2?UW9 zr@9R;K%D?o6d!jB{6(?>O3d+zF`D#AKH679!Qk~&bW4n&k(`%_3tQDj`ZtSay)Bbf z$-S)yye+HIccrjyU=(t)`xZy(^qVmM!)}vrblp!{4{Hkw=r+7-pv?^f0#B4}Q)H6N zJHg2D-)xnO(V43#VOk{g+U{MhAWGnc_@v~uaGD(kJ;t|`<)dWQ4_oqjm+c&^aB2`( zVCoBZPzR*=K@)H$*O_$4ocvLSix$qoM?utx{(herAWQQim@8N)l4YeL$M`3KsXaUl z48Hx1Azg2ROugZm+^~A@;y;LU1_z$7LmzqV`&l}(kz^j`ZLXzbKHA})Pl|MiO;%8l}AZduPZN- z9ik|LBg|%bREN!m_P=~wgLiU_7J-+SvCTV?NfguWJoB`k_I^bs6;|oW5iUk8RdTa< zi8<#(uUtHXW<;?>2l(9y^aLKQxJX@2G3)cKolNc}XL2&moD9Tkt7S#EUBWvP&>Dvn zheBI)aCYQ{bD~R*6cvE==mXf0ag)nI(Ws_N?Xt;IudLoLY~&xJuC>-)v^y_69UJ?7 zbH-+T_fU&YeP;LQa`&Ir*54Bw)6Tjmkw`zz5kl-?8mLQ;XRd;wu8zt# zjF6>-Om4#}HJe@2PrjMF+sQlR|A@ZvR2+ICOMnF3qRfyw`eUH zNWt~}EECv!lWQH>Wr(*{aI{Zxbmg_Ol@P(0RJoX8f)P7gi#0m%u>=u(9*wcFV0e&( z#d&dhsf`FBT>todzZ{3K^l*@896KW?I9@PiKM1c7&eD*+gXlVP_A>EmI4ei23XUw1 z{QU+aB?pr~D8NRl&|Ngb?}6(u-UXaFG-gzB{&?A`5vJ0!v%ZsSVD}@>PQbp>a-(yI z6yA(wwfqSp<2I8G#C|epf&MEk zPq=$>N+qi;-d~fcx`*QOuU&0n%z|)wd&P_~k73J>Ax3$ACk6{yHhzUFGAB!_NqgDW z!p5?+2}rkzp}$DO|5vvJKQypILpGG0lHj{cXg~r*VWUith-O6j6n1=kf}8lcSJBWK zHmC~&eiD;Q!vOP2n-fhcDf1E~Q9)`fs|8Mku6yHpAj|<^spGN>-$V%+=iz;`cLJG) zn~~$(3q=7;T>J}e%d%6MV_&^%@3A711r(E3X9+JVNRXzX`Iq{~^Ci0OB&4<^ql+<| zz0Q=D;Bp<#Nd`uf>%jvkF^Wgyd@H8_w)!7=qVQ>|63ZBiW+{<;Ja5aVIeIMRtFVeI zr`_lJ@?^5?1aIr#4y{5{tm+>pc@SFCMAYc-i)oV~;PcD};^{D6j5%-0zm*AvIJL2Y zf8A8ZnSO)ts~_9e-`tiO^0eB1f~35{^w&oe605AA^QEWTy3~~OfB3=>iw9z9$kV@d zJoqp+WV*_e+l*RE+D}MbF!)7|;(MiVzgfQye-n5P zZc@*u7*7SFHMi1^ML(^^IG49#EYeU1TLJL;eUav^CW&dHCW;G;(phxWL34r}&|`V7 iDYzuViy?1hEzzz{U}rY_g3GNqSl$mVjob(XPz