r2755 - jhalfs/trunk/common

manuel at linuxfromscratch.org manuel at linuxfromscratch.org
Thu Jun 8 14:05:04 PDT 2006


Author: manuel
Date: 2006-06-08 15:05:03 -0600 (Thu, 08 Jun 2006)
New Revision: 2755

Modified:
   jhalfs/trunk/common/makefile-functions
   jhalfs/trunk/common/progress_bar.sh
Log:
Now the progress bar is a pretty time counter.

Modified: jhalfs/trunk/common/makefile-functions
===================================================================
--- jhalfs/trunk/common/makefile-functions	2006-06-08 00:42:03 UTC (rev 2754)
+++ jhalfs/trunk/common/makefile-functions	2006-06-08 21:05:03 UTC (rev 2755)
@@ -7,6 +7,7 @@
 ORANGE= ""
 BLUE= ""
 WHITE= ""
+CURSOR_ON= "[?25h"
 
 define echo_message
   @echo $(BOLD)
@@ -72,7 +73,7 @@
   @echo that you already know and there is no need to discuss it here.
   @echo $(BOLD)
   @echo --------------------------------------------------------------------------------
-  @echo -e \\t\\t$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD)
+  @echo -e \\t\\t$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD)$(CURSOR_ON)
   @echo --------------------------------------------------------------------------------$(WHITE)
 endef
 
@@ -97,6 +98,6 @@
   @echo -e \\t $(BOLD)make makesys
   @echo  The build process should resume. Follow any instructions that appear.
   @echo --------------------------------------------------------------------------------
-  @echo -e \\t\\t$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD)
+  @echo -e \\t\\t$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD)$(CURSOR_ON)
   @echo --------------------------------------------------------------------------------$(WHITE)
 endef

Modified: jhalfs/trunk/common/progress_bar.sh
===================================================================
--- jhalfs/trunk/common/progress_bar.sh	2006-06-08 00:42:03 UTC (rev 2754)
+++ jhalfs/trunk/common/progress_bar.sh	2006-06-08 21:05:03 UTC (rev 2755)
@@ -4,12 +4,49 @@
 
 set -e
 
+# Be sure that we know the taget name
 [[ -z $1 ]] && exit
+TARGET=$1  # Remember the target build we are looking for
 
-if [ ! -f $1 ] ; then
-  while fuser -v . 2>&1 | grep make >/dev/null ; do
-    echo -n "."
-    sleep 1
-    [[ -f $1 ]] && exit
+declare -r  CSI=$'\e['  # DEC terminology, Control Sequence Introducer
+declare -r  CURSOR_OFF=${CSI}$'?25l'
+declare -r  CURSOR_ON=${CSI}$'?25h'
+declare -r  ERASE_LINE=${CSI}$'2K'
+declare -r  FRAME_OPEN=${CSI}$'2G['
+declare -r  FRAME_CLOSE=${CSI}$'63G]'
+declare -r  TS_POSITION=${CSI}$'65G'
+declare -a  RESET_LINE=${CURSOR_OFF}${ERASE_LINE}${FRAME_OPEN}${FRAME_CLOSE}
+
+declare -a  GRAPHIC_STR="| / - \\ + "
+declare -i  MIN=0  # Start value for minutes
+declare -i  SEC=0  # Seconds accumulator
+declare -i  POS=0  # Start value for seconds/cursor position
+
+write_or_exit() {
+    # make has been killed or failed, leave
+  if ! fuser -v . 2>&1 | grep make >/dev/null ; then
+     echo -n "${CURSOR_ON}" && exit
+  fi
+    # Target build complete, leave. If we are here, make is alive and a new
+    # package target may has been started. Close this instance of the script.
+    # The cursor will be restored by echo-finished in makefile-functions.
+  [[ -f ${TARGET} ]] && exit
+    # It is safe to write to the screen
+  echo -n "$1"
+}
+
+  # This will loop forever.. or overflow, which ever comes forst :)
+for ((MIN=0; MIN >= 0; MIN++)); do
+  write_or_exit "${RESET_LINE}${TS_POSITION}${MIN} min. 0 sec. "
+  # Count the seconds
+  for ((SEC=1, POS=3; SEC <= 60; SEC++, POS++)); do
+    for GRAPHIC_CHAR in ${GRAPHIC_STR} ; do
+      write_or_exit "${CSI}${POS}G${GRAPHIC_CHAR}"
+      sleep .2
+    done
+      # Display then accumlated time.
+    write_or_exit "${TS_POSITION}${MIN} min. ${SEC} sec. "
   done
-fi
+done
+exit
+




More information about the alfs-log mailing list