The toaster startup script conditionally migrates the database tables depending on whether you are in managed mode or not. This means that if you are in analysis mode, some of the bldcontrol* database tables used by managed mode are not available.
As a consequence, some of the code in toaster which refers to those tables can break in analysis mode, as there's no clean isolation of the two modes. To prevent this from happening, always run the migrations for managed mode and create the bldcontrol* tables, even if in analysis mode. Also clean up the function which starts up toaster so the logic is easier to follow. [YOCTO #8277] Signed-off-by: Elliot Smith <[email protected]> --- bitbake/bin/toaster | 58 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster index ac27826..05dabc9 100755 --- a/bitbake/bin/toaster +++ b/bitbake/bin/toaster @@ -54,35 +54,55 @@ webserverStartAll() fi retval=0 - if [ "$TOASTER_MANAGED" '=' '1' ]; then + if [ "$TOASTER_MANAGED" = '1' ]; then python $BBBASEDIR/lib/toaster/manage.py syncdb || retval=1 else python $BBBASEDIR/lib/toaster/manage.py syncdb --noinput || retval=1 fi - python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=2 + if [ $retval -eq 1 ]; then - echo "Failed db sync, stopping system start" 1>&2 - elif [ $retval -eq 2 ]; then - printf "\nError on migration, trying to recover... \n" + echo "Failed db sync, aborting system start" 1>&2 + return $retval + fi + + python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=1 + + if [ $retval -eq 1 ]; then + printf "\nError on orm migration, rolling back...\n" python $BBBASEDIR/lib/toaster/manage.py migrate orm 0001_initial --fake - retval=0 - python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=1 + return $retval fi + + python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol || retval=1 + + if [ $retval -eq 1 ]; then + printf "\nError on bldcontrol migration, rolling back...\n" + python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol 0001_initial --fake + return $retval + fi + if [ "$TOASTER_MANAGED" = '1' ]; then - python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol || retval=1 - python $BBBASEDIR/lib/toaster/manage.py checksettings --traceback || retval=1 + python $BBBASEDIR/lib/toaster/manage.py checksettings --traceback || retval=1 fi - if [ $retval -eq 0 ]; then - echo "Starting webserver..." - python $BBBASEDIR/lib/toaster/manage.py runserver "0.0.0.0:$WEB_PORT" </dev/null >>${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid - sleep 1 - if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then - retval=1 - rm "${BUILDDIR}/.toastermain.pid" - else - echo "Webserver address: http://0.0.0.0:$WEB_PORT/" - fi + + if [ $retval -eq 1 ]; then + printf "\nError while checking settings; aborting\n" + return $retval + fi + + echo "Starting webserver..." + + python $BBBASEDIR/lib/toaster/manage.py runserver "0.0.0.0:$WEB_PORT" </dev/null >>${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid + + sleep 1 + + if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then + retval=1 + rm "${BUILDDIR}/.toastermain.pid" + else + echo "Webserver address: http://0.0.0.0:$WEB_PORT/" fi + return $retval } -- Elliot Smith Software Engineer Intel OTC --------------------------------------------------------------------- Intel Corporation (UK) Limited Registered No. 1134945 (England) Registered Office: Pipers Way, Swindon SN3 1RJ VAT No: 860 2173 47 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
