diff options
author | Sachin Saxena <sachin.saxena@freescale.com> | 2018-02-28 20:28:52 +0530 |
---|---|---|
committer | Sachin Saxena <sachin.saxena@nxp.com> | 2018-02-28 20:34:56 +0530 |
commit | 0689fce93ba269c48f83a2f70f971b3976d04c90 (patch) | |
tree | 4cc2908df3598507cc1828ac19d8c43b22450ffa /build-root/copyimg | |
parent | 746b57564deede624261ab8a96c94f562f24d22c (diff) | |
parent | d594711a5d79859a7d0bde83a516f7ab52051d9b (diff) |
Merge branch 'stable/1710' of https://gerrit.fd.io/r/vpp into 17101710
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 00000000..e5e3fc26 --- /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; |