[PATCH modular] Process a user-supplied sub-project list.
Trevor Woerner
twoerner at gmail.com
Thu Oct 7 06:10:46 PDT 2010
From: Trevor Woerner <twoerner at gmail.com>
New feature.
Using the new "--modlist <file>" option, the user can specify a file which
contains a list of the sub-projects to process. The file can contain blank
lines as well as comment lines which start with a hash mark (#). The
sub-projects will be processed in the order in which they are found in the
list file.
Suggested usage:
1. run script to generate the list of sub-projects, redirecting to a file
$ util/modular/build.sh -L > list
2. edit <list>, commenting-out or deleting unnecessary lines, or adding
new lines as appropriate
3. run the build with this list
$ util/modular/build.sh --modfile list
Signed-off-by: Trevor Woerner <twoerner at gmail.com>
---
build.sh | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 78 insertions(+), 17 deletions(-)
diff --git a/build.sh b/build.sh
index 1e31c2a..bbe4d46 100755
--- a/build.sh
+++ b/build.sh
@@ -864,6 +864,52 @@ build_doc() {
build doc xorg-docs
}
+# just process the sub-projects supplied in the given file ($MODFILE)
+# in the order in which they are found in the list
+# (prerequisites and ordering are the responsibility of the user)
+# globals used:
+# $MODFILE - readable file containing list of modules to process
+# arguments:
+# (none)
+# returns:
+# 0 - good
+# 1 - bad
+process_module_file() {
+ local line
+ local module
+ local component
+
+ # preconds
+ if [ X"$MODFILE" = X ]; then
+ echo "internal process_module_file() error, \$MODFILE is empty"
+ return 1
+ fi
+ if [ ! -r "$MODFILE" ]; then
+ echo "module file '$MODFILE' is not readable or does not exist"
+ return 1
+ fi
+
+ # read from input file, skipping blank and comment lines
+ while read line; do
+ # skip blank lines
+ if [ X"$line" = X ]; then
+ continue
+ fi
+
+ # skip comment lines
+ echo "$line" | grep "^#" > /dev/null
+ if [ $? -eq 0 ]; then
+ continue
+ fi
+
+ module=`echo $line | cut -d'/' -f1`
+ component=`echo $line | cut -d'/' -f2`
+ build $module $component
+ done <"$MODFILE"
+
+ return 0
+}
+
usage() {
echo "Usage: $0 [options] prefix"
echo " where options are:"
@@ -886,6 +932,7 @@ usage() {
echo " --check : run make check in addition to others"
echo " --clone : clone non-existing repositories (uses \$GITROOT if set)"
echo " --cmd cmd : execute arbitrary git or make command 'cmd'"
+ echo " --modfile file : only process the module/components specified in 'file'"
echo ""
echo "Usage: $0 -L"
echo " -L : just list modules to build"
@@ -1022,6 +1069,16 @@ do
exit 1
fi
;;
+ --modfile)
+ required_arg $1 $2
+ shift
+ CLONE=1
+ if [ ! -r "$1" ]; then
+ echo "can't find/read file '$1'"
+ exit 1
+ fi
+ MODFILE=$1
+ ;;
*)
if [ X"$PREFIX" != X ]; then
echo "unrecognized and/or too many command-line arguments"
@@ -1064,23 +1121,27 @@ if [ X"$LISTONLY" = X ]; then
date
fi
-# We must install the global macros before anything else
-build util macros
-build font util
-
-build_proto
-build_lib
-build_mesa
-
-if [ $LIB_ONLY -eq 0 ]; then
- build_doc
- build data bitmaps
- build_app
- build_xserver
- build_driver
- build_data
- build_font
- build_util
+if [ X"$MODFILE" = X ]; then
+ # We must install the global macros before anything else
+ build util macros
+ build font util
+
+ build_proto
+ build_lib
+ build_mesa
+
+ if [ $LIB_ONLY -eq 0 ]; then
+ build_doc
+ build data bitmaps
+ build_app
+ build_xserver
+ build_driver
+ build_data
+ build_font
+ build_util
+ fi
+else
+ process_module_file
fi
if [ X"$LISTONLY" != X ]; then
--
1.7.3.1.50.g1e633
More information about the xorg-devel
mailing list