[Toaster] [review-request][PATCH] bitbake: toaster: Code cleanup: bashisms

Damian, Alexandru alexandru.damian at intel.com
Thu May 7 07:29:45 PDT 2015


Actually, I spoke too soon.

This patch doesn't pass testing - it breaks launching toaster on my system,
where /bin/sh is actually dash. Since this is default on Ubuntu systems, we
need to support it to run out of the box.

I will not be submitting this patch. Can you please debug it also with dash
as /bin/sh ?

Thank you,
Alex

On Thu, May 7, 2015 at 11:30 AM, Damian, Alexandru <
alexandru.damian at intel.com> wrote:

> Taken for submission,
>
> Thank you,
> Alex
>
> On Mon, May 4, 2015 at 11:42 AM, Ed Bartosh <ed.bartosh at linux.intel.com>
> wrote:
>
>> Fixed the following bashisms:
>>  replaced echo -e -> printf
>>  removed 'function' from function definitions
>>  replaced $(< ${file}) -> `cat ${file}`
>>
>> Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
>> ---
>>  bitbake/bin/toaster | 49
>> +++++++++++++++++++++++++------------------------
>>  1 file changed, 25 insertions(+), 24 deletions(-)
>>
>> diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster
>> index 162d4d9..dfbc58d 100755
>> --- a/bitbake/bin/toaster
>> +++ b/bitbake/bin/toaster
>> @@ -1,4 +1,4 @@
>> -#!/bin/bash
>> +#!/bin/sh
>>  # (c) 2013 Intel Corp.
>>
>>  # This program is free software; you can redistribute it and/or modify
>> @@ -28,13 +28,14 @@
>>
>>  # Helper function to kill a background toaster development server
>>
>> -function webserverKillAll()
>> +webserverKillAll()
>>  {
>>      local pidfile
>>      for pidfile in ${BUILDDIR}/.toastermain.pid; do
>>          if [ -f ${pidfile} ]; then
>> -            while kill -0 $(< ${pidfile}) 2>/dev/null; do
>> -                kill -SIGTERM -$(< ${pidfile}) 2>/dev/null
>> +            pid=`cat ${pidfile}`
>> +            while kill -0 $pid 2>/dev/null; do
>> +                kill -SIGTERM -$pid 2>/dev/null
>>                  sleep 1
>>                  # Kill processes if they are still running - may happen
>> in interactive shells
>>                  ps fux | grep "python.*manage.py runserver" | awk
>> '{print $2}' | xargs kill
>> @@ -44,7 +45,7 @@ function webserverKillAll()
>>      done
>>  }
>>
>> -function webserverStartAll()
>> +webserverStartAll()
>>  {
>>      # do not start if toastermain points to a valid process
>>      if ! cat "${BUILDDIR}/.toastermain.pid" 2>/dev/null | xargs -I{}
>> kill -0 {} ; then
>> @@ -58,7 +59,7 @@ function webserverStartAll()
>>      if [ $retval -eq 1 ]; then
>>          echo "Failed db sync, stopping system start" 1>&2
>>      elif [ $retval -eq 2 ]; then
>> -        echo -e "\nError on migration, trying to recover... \n"
>> +        printf "\nError on migration, trying to recover... \n"
>>          python $BBBASEDIR/lib/toaster/manage.py migrate orm 0001_initial
>> --fake
>>          retval=0
>>          python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=1
>> @@ -83,7 +84,7 @@ function webserverStartAll()
>>
>>  # Helper functions to add a special configuration file
>>
>> -function addtoConfiguration()
>> +addtoConfiguration()
>>  {
>>      file=$1
>>      shift
>> @@ -94,13 +95,13 @@ function addtoConfiguration()
>>  INSTOPSYSTEM=0
>>
>>  # define the stop command
>> -function stop_system()
>> +stop_system()
>>  {
>>      # prevent reentry
>>      if [ $INSTOPSYSTEM -eq 1 ]; then return; fi
>>      INSTOPSYSTEM=1
>>      if [ -f ${BUILDDIR}/.toasterui.pid ]; then
>> -        kill $(< ${BUILDDIR}/.toasterui.pid ) 2>/dev/null
>> +        kill `cat ${BUILDDIR}/.toasterui.pid` 2>/dev/null
>>          rm ${BUILDDIR}/.toasterui.pid
>>      fi
>>      BBSERVER=0.0.0.0:-1 bitbake -m
>> @@ -113,12 +114,12 @@ function stop_system()
>>      INSTOPSYSTEM=0
>>  }
>>
>> -function check_pidbyfile() {
>> -    [ -e $1 ] && kill -0 $(< $1) 2>/dev/null
>> +check_pidbyfile() {
>> +    [ -e $1 ] && kill -0 `cat $1` 2>/dev/null
>>  }
>>
>>
>> -function notify_chldexit() {
>> +notify_chldexit() {
>>      if [ $NOTOASTERUI -eq 0 ]; then
>>          check_pidbyfile ${BUILDDIR}/.toasterui.pid && return
>>          stop_system
>> @@ -126,16 +127,16 @@ function notify_chldexit() {
>>  }
>>
>>
>> -function verify_prereq() {
>> +verify_prereq() {
>>      # Verify prerequisites
>>
>>      if ! echo "import django; print (1,) == django.VERSION[0:1] and
>> django.VERSION[1:2][0] in (6,)" | python 2>/dev/null | grep True
>> >/dev/null; then
>> -        echo -e "This program needs Django 1.6. Please install
>> with\n\npip install django==1.6\n"
>> +        printf "This program needs Django 1.6. Please install
>> with\n\npip install django==1.6\n"
>>          return 2
>>      fi
>>
>>      if ! echo "import south; print reduce(lambda x, y: 2 if x==2 else 0
>> if x == 0 else y, map(lambda x: 1+cmp(x[1]-x[0],0), zip([0,8,4],
>> map(int,south.__version__.split(\".\"))))) > 0" | python 2>/dev/null | grep
>> True >/dev/null; then
>> -        echo -e "This program needs South 0.8.4. Please install
>> with\n\npip install south==0.8.4\n"
>> +        printf "This program needs South 0.8.4. Please install
>> with\n\npip install south==0.8.4\n"
>>          return 2
>>      fi
>>      return 0
>> @@ -174,47 +175,47 @@ if [ `basename \"$0\"` = `basename \"${SRCFILE}\"`
>> ]; then
>>      # Start just the web server, point the web browser to the interface,
>> and start any Django services.
>>
>>      if ! verify_prereq; then
>> -        echo -e "Error: Could not verify that the needed dependencies
>> are installed. Please use virtualenv and pip to install dependencies listed
>> in toaster-requirements.txt" 1>&2
>> +        echo "Error: Could not verify that the needed dependencies are
>> installed. Please use virtualenv and pip to install dependencies listed in
>> toaster-requirements.txt" 1>&2
>>          exit 1
>>      fi
>>
>>      if [ -n "$BUILDDIR" ]; then
>> -        echo -e "Error: It looks like you sourced oe-init-build-env.
>> Toaster cannot start in build mode from an oe-core build environment.\n You
>> should be starting Toaster from a new terminal window." 1>&2
>> +        printf "Error: It looks like you sourced oe-init-build-env.
>> Toaster cannot start in build mode from an oe-core build environment.\n You
>> should be starting Toaster from a new terminal window." 1>&2
>>          exit 1
>>      fi
>>
>>      if ! which daemon >/dev/null 2>&1; then
>> -        echo -e "Failed dependency; toaster needs the 'daemon' program
>> in order to be able to start builds'. Please install the 'daemon' program
>> from your distribution repositories or http://www.libslack.org/daemon/"
>> 1>&2
>> +        echo "Failed dependency; toaster needs the 'daemon' program in
>> order to be able to start builds'. Please install the 'daemon' program from
>> your distribution repositories or http://www.libslack.org/daemon/" 1>&2
>>          exit 1
>>      fi
>>
>>      # Define a fake builddir where only the pid files are actually
>> created. No real builds will take place here.
>>      BUILDDIR=/tmp/toaster_$$
>>      if [ -d "$BUILDDIR" ]; then
>> -        echo -e "Previous toaster run directory $BUILDDIR found,
>> cowardly refusing to start. Please remove the directory when that toaster
>> instance is over" 2>&1
>> +        echo "Previous toaster run directory $BUILDDIR found, cowardly
>> refusing to start. Please remove the directory when that toaster instance
>> is over" 2>&1
>>          exit 1
>>      fi
>>
>>      mkdir -p "$BUILDDIR"
>>
>>      RUNNING=1
>> -    function trap_ctrlc() {
>> +    trap_ctrlc() {
>>          echo "** Stopping system"
>>          webserverKillAll
>>          RUNNING=0
>>      }
>>
>> -    function do_cleanup() {
>> +    do_cleanup() {
>>          find "$BUILDDIR" -type f | xargs rm
>>          rmdir "$BUILDDIR"
>>      }
>> -    function cleanup() {
>> +    cleanup() {
>>          if grep -ir error "$BUILDDIR" >/dev/null; then
>>              if grep -irn "That port is already in use" "$BUILDDIR"; then
>>                  echo "You can use the \"webport=PORTNUMBER\" parameter
>> to start Toaster on a different port (port $WEB_PORT is already in use)"
>>                  do_cleanup
>>              else
>> -                echo -e "\nErrors found in the Toaster log files present
>> in '$BUILDDIR'. Directory will not be cleaned.\n Please review the errors
>> and notify toaster at yoctoproject.org or submit a bug
>> https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Toaster"
>> +                printf "\nErrors found in the Toaster log files present
>> in '$BUILDDIR'. Directory will not be cleaned.\n Please review the errors
>> and notify toaster at yoctoproject.org or submit a bug
>> https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Toaster"
>>              fi
>>          else
>>              echo "No errors found, removing the run directory
>> '$BUILDDIR'"
>> @@ -245,7 +246,7 @@ fi
>>
>>
>>  if ! verify_prereq; then
>> -    echo -e "Error: Could not verify that the needed dependencies are
>> installed. Please use virtualenv and pip to install dependencies listed in
>> toaster-requirements.txt" 1>&2
>> +    echo "Error: Could not verify that the needed dependencies are
>> installed. Please use virtualenv and pip to install dependencies listed in
>> toaster-requirements.txt" 1>&2
>>      return 1
>>  fi
>>
>> --
>> 2.1.4
>>
>> --
>> _______________________________________________
>> toaster mailing list
>> toaster at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/toaster
>>
>
>
>
> --
> Alex Damian
> Yocto Project
> SSG / OTC
>



-- 
Alex Damian
Yocto Project
SSG / OTC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20150507/4e64977c/attachment-0001.html>


More information about the toaster mailing list