[PATCH 1/2] Add option to limit bootstrap to a single arch

Martin Erik Werner martinerikwerner at gmail.com
Fri Feb 19 13:07:25 UTC 2016


Using the -o|--only <arch> option, it is now possible to limit the
bootstrapping operation of arch-specific libbsp, libcpu and cpukit paths
to a single arch, for example:

  $ bootstrap -p -o or1k

and

  $ bootstrap -o or1k

This is a somewhat ugly implementation, but may be sufficient for the
intended usage.

* The cleaning operation is not currently able to selectively clean
  archs
* It is currently not possible to specify more than one arch at a time

This reduces bootstrap time to around a third compared to a full run.
---
 bootstrap | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/bootstrap b/bootstrap
index e9cb851..3434e51 100755
--- a/bootstrap
+++ b/bootstrap
@@ -17,6 +17,7 @@ verbose=""
 quiet="false"
 mode="autoreconf"
 force=0
+bsp_to_build=
 
 usage()
 {
@@ -27,6 +28,7 @@ usage()
   echo "	-c .. clean, remove all aclocal/autoconf/automake generated files"
   echo "	-h .. display this message and exit"
   echo "	-p .. regenerate preinstall.am files"
+  echo "	-o <arch> .. only generate for given <arch>"
   echo "	-q .. quiet, don't display directories"
   echo "	-v .. verbose, pass -v to autotools"
   echo
@@ -94,6 +96,11 @@ case $1 in
 -g|--ge|--gen|--gene|--gener|--genera|--generat|--generate)
   mode="generate"
   shift;;
+-o|--on|--onl|--only)
+  test $# -gt 1 || usage
+  bsp_to_build=$2
+  shift
+  shift;;
 -*) echo "unknown option $1"
   usage ;;
 *) echo "invalid parameter $1"
@@ -105,6 +112,27 @@ case $mode in
 preinstall)
   confs=`find . -name Makefile.am -exec grep -l 'include .*/preinstall\.am' {} \;`
   for i in $confs; do
+    if test -n "$bsp_to_build"; then
+      case $i in
+	./c/src/lib/libbsp/$bsp_to_build/*)
+	  ;;
+	./c/src/lib/libbsp/*)
+	  continue; # skip this file
+	  ;;
+	./c/src/lib/libcpu/$bsp_to_build/*)
+	  ;;
+	./c/src/lib/libcpu/*)
+	  continue #skip this file
+	  ;;
+	./cpukit/score/cpu/$bsp_to_build/*)
+	  ;;
+	./cpukit/score/cpu/*)
+	  continue #skip this file
+	  ;;
+	*)
+	  ;;
+      esac
+    fi
     dir=$(dirname $i)
     test "$quite" = "true" || echo "Generating $dir/preinstall.am"
     ${top_srcdir}/ampolish3 "$dir/Makefile.am" > "$dir/preinstall.am"
@@ -145,6 +173,22 @@ generate)
 
   confs=`find . \( -name 'configure.in' -o -name 'configure.ac' \) -print`
   for i in $confs; do
+  if test -n "$bsp_to_build"; then
+    case $i in
+      ./c/src/lib/libbsp/$bsp_to_build/*)
+	;;
+      ./c/src/lib/libbsp/*)
+	continue # skip this file
+	;;
+      ./c/src/lib/libcpu/$bsp_to_build/*)
+	;;
+      ./c/src/lib/libcpu/*)
+	continue #skip this file
+	;;
+      *)
+	;;
+    esac
+  fi
   dir=`dirname $i`
   configure=`basename $i`
   ( test "$quiet" = "true" || echo "$dir"
@@ -177,6 +221,22 @@ autoreconf)
 
   confs=`find . -name 'configure.ac' -print`
   for i in $confs; do
+  if test -n "$bsp_to_build"; then
+    case $i in
+      ./c/src/lib/libbsp/$bsp_to_build/*)
+	;;
+      ./c/src/lib/libbsp/*)
+	continue # skip this file
+	;;
+      ./c/src/lib/libcpu/$bsp_to_build/*)
+	;;
+      ./c/src/lib/libcpu/*)
+	continue #skip this file
+	;;
+      *)
+	;;
+    esac
+  fi
   dir=`dirname $i`
   configure=`basename $i`
   ( test "$quiet" = "true" || echo "$dir"
-- 
1.9.1



More information about the devel mailing list