diff options
author | Ed Warnicke <eaw@cisco.com> | 2015-12-08 15:45:58 -0700 |
---|---|---|
committer | Ed Warnicke <eaw@cisco.com> | 2015-12-08 15:47:27 -0700 |
commit | cb9cadad578297ffd78fa8a33670bdf1ab669e7e (patch) | |
tree | 6ac2be912482cc7849a26f0ab845561c3d7f4e26 /build-root/copyimg | |
parent | fb0815d4ae4bb0fe27bd9313f34b45c8593b907e (diff) |
Initial commit of vpp code.v1.0.0
Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17
Signed-off-by: Ed Warnicke <eaw@cisco.com>
Diffstat (limited to 'build-root/copyimg')
-rwxr-xr-x | build-root/copyimg | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/build-root/copyimg b/build-root/copyimg new file mode 100755 index 00000000000..e5e3fc265ee --- /dev/null +++ b/build-root/copyimg @@ -0,0 +1,83 @@ +#!/bin/sh + +if [ $# -lt 2 ]; then + cat - <<EOF +$0 FROM-DIR TO-DIR ENVIRONMENT + +Copies files from one directory to another with possible +transformations. + +Files named FILE.spp will be transformed via the spp preprocessor +subject to environment definitions. Source FILE.copyimgspp results in +destination file FILE in the corresponding destination directory. + +Files named FILE.copyimgsh are run as shell scripts in (i.e. via chdir) +the corresponding destination directory (and not copied). + +First regular files are copied. Then transformations are preformed. +Finally, shell scripts are run. +EOF + exit 1; +fi + +FROM_DIR=$1 +TO_DIR=$2 + +FILTER=" -and -not -name '*~'"; +FILTER="${FILTER} -and -not -name '.*~'"; +FILTER="$FILTER -and -not -path '*/.git*'"; +FILTER="$FILTER -and -not -path '*/.svn*'"; +FILTER="$FILTER -and -not -path '*/.CVS*'"; + +FROM_FILES=`(cd $FROM_DIR; eval "find . -not -type d $FILTER")`; + FROM_DIRS=`(cd $FROM_DIR; eval "find . -type d $FILTER")`; + +COPY_FILES= +SPP_FILES= +SH_FILES= +for f in $FROM_FILES; do + case $f in + *.copyimgspp) SPP_FILES="$SPP_FILES $f" ;; + *.copyimgsh) SH_FILES="$SH_FILES $f" ;; + *) COPY_FILES="$COPY_FILES $f";; + esac +done + +# Make destination directories. +mkdir -p $TO_DIR; +if [ "$FROM_DIRS" != "" ]; then + for d in $FROM_DIRS; do + mkdir -p $TO_DIR/$d; + done +fi + +# Copy files +if [ "$COPY_FILES" != "" ]; then + tar -cf - -C $FROM_DIR $COPY_FILES | tar --preserve-permissions -xf - -C $TO_DIR; +fi + +# Use spp to transform any spp files +if [ "$SPP_FILES" != "" ]; then + for f in $SPP_FILES; do + d=`dirname $f`; + b=`basename $f .copyimgspp`; + mkdir -p $TO_DIR/$d; + t=$TO_DIR/$d/$b; + spp -o $TO_DIR/$d/$b $FROM_DIR/$f || exit 1; + done; +fi + +# Now that all files have been copied/created we run any shell scripts +ABS_FROM_DIR=`(cd $FROM_DIR; pwd)`; +if [ "$SH_FILES" != "" ]; then + # Allow directory to define some functions + if [ -f $FROM_DIR/copyimgsh-functions.sh ]; then + . $FROM_DIR/copyimgsh-functions.sh ; + fi ; + for f in $SH_FILES; do + d=`dirname $f`; + b=`basename $f`; + mkdir -p $TO_DIR/$d; + (cd $TO_DIR/$d; . $ABS_FROM_DIR/$d/$b) || exit 1; + done; +fi; |