[Asterisk-code-review] CI: Various updates to buildAsterisk.sh (asterisk[13])
George Joseph
asteriskteam at digium.com
Tue Dec 11 09:07:40 CST 2018
George Joseph has submitted this change and it was merged. ( https://gerrit.asterisk.org/10743 )
Change subject: CI: Various updates to buildAsterisk.sh
......................................................................
CI: Various updates to buildAsterisk.sh
* Added ---no-configure, --no-menuselect, --no-make and --no-alembic
options that prevent those actions from being performed. Useful
for testing and re-running portions of the build after fixing
earlier failures.
* Added "set -e" to abort the script on command failure.
Not sure why this wasn't there in the first place.
* Fixed a few echos that were redirecting to stderr when they shouldn't
have been.
* Catch more alembic failures by actually trying to generate the SQL.
Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb
---
M tests/CI/buildAsterisk.sh
1 file changed, 98 insertions(+), 77 deletions(-)
Approvals:
Joshua C. Colp: Looks good to me, but someone else must approve
Benjamin Keith Ford: Looks good to me, but someone else must approve
George Joseph: Looks good to me, approved; Approved for Submit
diff --git a/tests/CI/buildAsterisk.sh b/tests/CI/buildAsterisk.sh
index e06bcda..5a0b6d1 100755
--- a/tests/CI/buildAsterisk.sh
+++ b/tests/CI/buildAsterisk.sh
@@ -4,8 +4,14 @@
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 @@
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
@@ -95,57 +109,63 @@
export WGET_EXTRA_ARGS="--quiet"
-runner ./configure ${common_config_args} > ${OUTPUT_DIR:+${OUTPUT_DIR}/}configure.txt
-
-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
+if [ $NO_CONFIGURE -eq 0 ] ; then
+ runner ./configure ${common_config_args} > ${OUTPUT_DIR:+${OUTPUT_DIR}/}configure.txt
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
+if [ $NO_MENUSELECT -eq 0 ] ; then
+ runner ${MAKE} 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
-if [ $REF_DEBUG -eq 1 ] ; then
- # res_odbc does not unload at shutdown, including it with REF_DEBUG testing would cause
- # every test to fail due to that leak.
- # Note: --ref-debug and --realtime cannot be used together in this version of Asterisk.
- # To test for reference leaks with realtime usage you must test against Asterisk 16+.
- mod_disables+=" res_odbc"
+ 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
+ if [ $REF_DEBUG -eq 1 ] ; then
+ # res_odbc does not unload at shutdown, including it with REF_DEBUG testing would cause
+ # every test to fail due to that leak.
+ # Note: --ref-debug and --realtime cannot be used together in this version of Asterisk.
+ # To test for reference leaks with realtime usage you must test against Asterisk 16+.
+ mod_disables+=" res_odbc"
+ fi
+
+ 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
fi
-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
-
-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
@@ -162,43 +182,44 @@
--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
+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
-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
+ 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=$(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
+ 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=$(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"
+ 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
--
To view, visit https://gerrit.asterisk.org/10743
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb
Gerrit-Change-Number: 10743
Gerrit-PatchSet: 1
Gerrit-Owner: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Benjamin Keith Ford <bford at digium.com>
Gerrit-Reviewer: Friendly Automation (1000185)
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua C. Colp <jcolp at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20181211/03847643/attachment-0001.html>
More information about the asterisk-code-review
mailing list