diff --git a/tests/CI/buildAsterisk.sh b/tests/CI/buildAsterisk.sh index b9746297c6c1702c5ace245b30cba36699acb18a..6877eaf438c713beef67c9609f8f8605fa3fdaa0 100755 --- a/tests/CI/buildAsterisk.sh +++ b/tests/CI/buildAsterisk.sh @@ -4,8 +4,14 @@ CIDIR=$(dirname $(readlink -fn $0)) COVERAGE=0 REF_DEBUG=0 DISABLE_BINARY_MODULES=0 +NO_CONFIGURE=0 +NO_MENUSELECT=0 +NO_MAKE=0 +NO_ALEMBIC=0 source $CIDIR/ci.functions +set -e + if [ -z $BRANCH_NAME ]; then BRANCH_NAME=$(git config -f .gitreview --get gerrit.defaultbranch) fi @@ -32,6 +38,14 @@ gen_mods() { done } +run_alembic() { + pushd contrib/ast-db-manage >/dev/null + runner alembic $@ + RC=$? + popd > /dev/null + return $RC +} + [ x"$OUTPUT_DIR" != x ] && mkdir -p "$OUTPUT_DIR" 2> /dev/null if [ -z $TESTED_ONLY ]; then @@ -89,50 +103,56 @@ fi export WGET_EXTRA_ARGS="--quiet" -runner ./configure ${common_config_args} > ${OUTPUT_DIR:+${OUTPUT_DIR}/}configure.txt +if [ $NO_CONFIGURE -eq 0 ] ; then + runner ./configure ${common_config_args} > ${OUTPUT_DIR:+${OUTPUT_DIR}/}configure.txt +fi -runner ${MAKE} menuselect.makeopts +if [ $NO_MENUSELECT -eq 0 ] ; then + runner ${MAKE} menuselect.makeopts -runner menuselect/menuselect `gen_mods enable DONT_OPTIMIZE BETTER_BACKTRACES MALLOC_DEBUG DO_CRASH TEST_FRAMEWORK` menuselect.makeopts -runner menuselect/menuselect `gen_mods disable COMPILE_DOUBLE BUILD_NATIVE` menuselect.makeopts -if [ $REF_DEBUG -eq 1 ] ; then - runner menuselect/menuselect --enable REF_DEBUG menuselect.makeopts -fi + runner menuselect/menuselect `gen_mods enable DONT_OPTIMIZE BETTER_BACKTRACES MALLOC_DEBUG DO_CRASH TEST_FRAMEWORK` menuselect.makeopts + runner menuselect/menuselect `gen_mods disable COMPILE_DOUBLE BUILD_NATIVE` menuselect.makeopts + if [ $REF_DEBUG -eq 1 ] ; then + runner menuselect/menuselect --enable REF_DEBUG menuselect.makeopts + fi -cat_enables="MENUSELECT_BRIDGES MENUSELECT_CEL MENUSELECT_CDR" -cat_enables+=" MENUSELECT_CHANNELS MENUSELECT_CODECS MENUSELECT_FORMATS MENUSELECT_FUNCS" -cat_enables+=" MENUSELECT_PBX MENUSELECT_RES MENUSELECT_UTILS MENUSELECT_TESTS" -runner menuselect/menuselect `gen_cats enable $cat_enables` menuselect.makeopts - -mod_disables="res_digium_phone chan_vpb" -if [ $TESTED_ONLY -eq 1 ] ; then - # These modules are not tested at all. They are loaded but nothing is ever done - # with them, no testsuite tests depend on them. - mod_disables+=" app_adsiprog app_alarmreceiver app_celgenuserevent app_db app_dictate" - mod_disables+=" app_dumpchan app_externalivr app_festival app_getcpeid app_ices app_image" - mod_disables+=" app_jack app_milliwatt app_minivm app_morsecode app_mp3 app_nbscat app_privacy" - mod_disables+=" app_readexten app_sms app_speech_utils app_test app_url app_waitforring" - mod_disables+=" app_waitforsilence app_waituntil app_zapateller" - mod_disables+=" cdr_adaptive_odbc cdr_custom cdr_manager cdr_odbc cdr_pgsql cdr_radius" - mod_disables+=" cdr_syslog cdr_tds" - mod_disables+=" cel_odbc cel_pgsql cel_radius cel_sqlite3_custom cel_tds" - mod_disables+=" chan_alsa chan_console chan_mgcp chan_motif chan_oss chan_rtp chan_skinny chan_unistim" - mod_disables+=" func_frame_trace func_pitchshift func_speex func_volume func_dialgroup" - mod_disables+=" func_periodic_hook func_sprintf func_enum func_extstate func_sysinfo func_iconv" - mod_disables+=" func_callcompletion func_version func_rand func_sha1 func_module func_md5" - mod_disables+=" pbx_dundi pbx_loopback" - mod_disables+=" res_ael_share res_calendar res_config_ldap res_config_pgsql res_corosync" - mod_disables+=" res_http_post res_pktccops res_rtp_multicast res_snmp res_xmpp" -fi + cat_enables="MENUSELECT_BRIDGES MENUSELECT_CEL MENUSELECT_CDR" + cat_enables+=" MENUSELECT_CHANNELS MENUSELECT_CODECS MENUSELECT_FORMATS MENUSELECT_FUNCS" + cat_enables+=" MENUSELECT_PBX MENUSELECT_RES MENUSELECT_UTILS MENUSELECT_TESTS" + runner menuselect/menuselect `gen_cats enable $cat_enables` menuselect.makeopts + + mod_disables="res_digium_phone chan_vpb" + if [ $TESTED_ONLY -eq 1 ] ; then + # These modules are not tested at all. They are loaded but nothing is ever done + # with them, no testsuite tests depend on them. + mod_disables+=" app_adsiprog app_alarmreceiver app_celgenuserevent app_db app_dictate" + mod_disables+=" app_dumpchan app_externalivr app_festival app_getcpeid app_ices app_image" + mod_disables+=" app_jack app_milliwatt app_minivm app_morsecode app_mp3 app_nbscat app_privacy" + mod_disables+=" app_readexten app_sms app_speech_utils app_test app_url app_waitforring" + mod_disables+=" app_waitforsilence app_waituntil app_zapateller" + mod_disables+=" cdr_adaptive_odbc cdr_custom cdr_manager cdr_odbc cdr_pgsql cdr_radius" + mod_disables+=" cdr_syslog cdr_tds" + mod_disables+=" cel_odbc cel_pgsql cel_radius cel_sqlite3_custom cel_tds" + mod_disables+=" chan_alsa chan_console chan_mgcp chan_motif chan_oss chan_rtp chan_skinny chan_unistim" + mod_disables+=" func_frame_trace func_pitchshift func_speex func_volume func_dialgroup" + mod_disables+=" func_periodic_hook func_sprintf func_enum func_extstate func_sysinfo func_iconv" + mod_disables+=" func_callcompletion func_version func_rand func_sha1 func_module func_md5" + mod_disables+=" pbx_dundi pbx_loopback" + mod_disables+=" res_ael_share res_calendar res_config_ldap res_config_pgsql res_corosync" + mod_disables+=" res_http_post res_pktccops res_rtp_multicast res_snmp res_xmpp" + fi -runner menuselect/menuselect `gen_mods disable $mod_disables` menuselect.makeopts + runner menuselect/menuselect `gen_mods disable $mod_disables` menuselect.makeopts -mod_enables="app_voicemail app_directory FILE_STORAGE" -mod_enables+=" res_mwi_external res_ari_mailboxes res_mwi_external_ami res_stasis_mailbox" -mod_enables+=" CORE-SOUNDS-EN-GSM MOH-OPSOUND-GSM EXTRA-SOUNDS-EN-GSM" -runner menuselect/menuselect `gen_mods enable $mod_enables` menuselect.makeopts + mod_enables="app_voicemail app_directory FILE_STORAGE" + mod_enables+=" res_mwi_external res_ari_mailboxes res_mwi_external_ami res_stasis_mailbox" + mod_enables+=" CORE-SOUNDS-EN-GSM MOH-OPSOUND-GSM EXTRA-SOUNDS-EN-GSM" + runner menuselect/menuselect `gen_mods enable $mod_enables` menuselect.makeopts +fi -runner ${MAKE} -j8 || runner ${MAKE} -j1 NOISY_BUILD=yes +if [ $NO_MAKE -eq 0 ] ; then + runner ${MAKE} -j8 || runner ${MAKE} -j1 NOISY_BUILD=yes +fi runner rm -f ${LCOV_DIR}/*.info if [ $COVERAGE -eq 1 ] ; then @@ -149,43 +169,44 @@ if [ $COVERAGE -eq 1 ] ; then --output-file ${LCOV_DIR}/initial.info fi -ALEMBIC=$(which alembic 2>/dev/null || : ) -if [ x"$ALEMBIC" = x ] ; then - echo "Alembic not installed" - exit 1 -fi - -cd contrib/ast-db-manage -find -name *.pyc -delete -out=$(alembic -c config.ini.sample branches) -if [ "x$out" != "x" ] ; then - >&2 echo "Alembic branches were found for config" - >&2 echo $out - exit 1 -else - >&2 echo "Alembic for 'config' OK" -fi - -out=$(alembic -c cdr.ini.sample branches) -if [ "x$out" != "x" ] ; then - >&2 echo "Alembic branches were found for cdr" - >&2 echo $out - exit 1 -else - >&2 echo "Alembic for 'cdr' OK" -fi +if [ $NO_ALEMBIC -eq 0 ] ; then + ALEMBIC=$(which alembic 2>/dev/null || : ) + if [ x"$ALEMBIC" = x ] ; then + >&2 echo "Alembic not installed" + exit 1 + fi -out=$(alembic -c voicemail.ini.sample branches) -if [ "x$out" != "x" ] ; then - >&2 echo "Alembic branches were found for voicemail" - >&2 echo $out - exit 1 -else - >&2 echo "Alembic for 'voicemail' OK" + find contrib/ast-db-manage -name *.pyc -delete + out=$(run_alembic -c config.ini.sample branches) + if [ "x$out" != "x" ] ; then + >&2 echo "Alembic branches were found for config" + >&2 echo $out + exit 1 + fi + run_alembic -c config.ini.sample upgrade head --sql > "${OUTPUT_DIR:+${OUTPUT_DIR}/}alembic-config.sql" || exit 1 + echo "Alembic for 'config' OK" + + out=$(run_alembic -c cdr.ini.sample branches) + if [ "x$out" != "x" ] ; then + >&2 echo "Alembic branches were found for cdr" + >&2 echo $out + exit 1 + fi + run_alembic -c cdr.ini.sample upgrade head --sql > "${OUTPUT_DIR:+${OUTPUT_DIR}/}alembic-cdr.sql" || exit 1 + echo "Alembic for 'cdr' OK" + + out=$(run_alembic -c voicemail.ini.sample branches) + if [ "x$out" != "x" ] ; then + >&2 echo "Alembic branches were found for voicemail" + >&2 echo $out + exit 1 + fi + run_alembic -c voicemail.ini.sample upgrade head --sql > "${OUTPUT_DIR:+${OUTPUT_DIR}/}alembic-voicemail.sql" || exit 1 + echo "Alembic for 'voicemail' OK" fi if [ -f "doc/core-en_US.xml" ] ; then - ${MAKE} validate-docs || ${MAKE} NOISY_BUILD=yes validate-docs + runner ${MAKE} validate-docs || ${MAKE} NOISY_BUILD=yes validate-docs fi