diff options
-rw-r--r-- | infrastructure/bin/compilecache.sh | 84 |
1 files changed, 43 insertions, 41 deletions
diff --git a/infrastructure/bin/compilecache.sh b/infrastructure/bin/compilecache.sh index a2b6220..6e42a50 100644 --- a/infrastructure/bin/compilecache.sh +++ b/infrastructure/bin/compilecache.sh @@ -16,49 +16,51 @@ CP_CMD="cp -R -u" if [ `uname` == "Darwin" ]; then - CP_CMD="/bin/cp -R -n" + CP_CMD="/bin/cp -R -n" +elif [ `uname` == "SunOS" ]; then + CP_CMD="cp -R" #Solaris cp does not have '-u' fi function cacheonfiles { - NAME=$1; FILES=$2; FUNC=$3; NOCOPY=1; - if [ -z "$4" ]; then - NOCOPY=0 - fi - REBUILD=0 - BPATH=buildcache/$NAME - FILETEST=$BPATH/t - if [ ! -f $FILETEST ]; then - REBUILD=1 - else - for a in $FILES; do - if [ $FILETEST -ot $a ]; then - echo $a has changed, rebuilding $NAME + NAME=$1; FILES=$2; FUNC=$3; NOCOPY=1; + if [ -z "$4" ]; then + NOCOPY=0 + fi + REBUILD=0 + BPATH=buildcache/$NAME + FILETEST=$BPATH/t + if [ ! -f $FILETEST ]; then REBUILD=1 - fi - done - fi - if [ $REBUILD -eq 1 ]; then - if [ -d $BPATH ]; then - rm -rf $BPATH + else + for a in $FILES; do + if [ $FILETEST -ot $a ]; then + echo $a has changed, rebuilding $NAME + REBUILD=1 + fi + done + fi + if [ $REBUILD -eq 1 ]; then + if [ -d $BPATH ]; then + rm -rf $BPATH + fi + mkdir -p $BPATH + $FUNC $BPATH + pushd $BPATH >> /dev/null + touch t + popd >> /dev/null + else + echo using cached $NAME... + fi + if [ $NOCOPY -ne 1 ]; then + for a in $BPATH/*; do + if [ -d $a ]; then + $CP_CMD $a build/ + elif [ -f $a ]; then + cp $a build/ + else + echo unknown file type $a + exit 1 + fi + done fi - mkdir -p $BPATH - $FUNC $BPATH - pushd $BPATH >> /dev/null - touch t - popd >> /dev/null - else - echo using cached $NAME... - fi - if [ $NOCOPY -ne 1 ]; then - for a in $BPATH/*; do - if [ -d $a ]; then - $CP_CMD $a build/ - elif [ -f $a ]; then - cp $a build/ - else - echo unknown file type $a - exit 1 - fi - done - fi -} +} |