1#!/bin/sh 2 3readonly PSVN=${PSVN:-svn} 4 5echo "===> Removing work dirs..." 6 7if [ "$(make -V PORTNAME)" ]; then 8 depth=2 9else 10 [ "$(make -V PORTSTOP)" ] && depth=4 || depth=3 11fi 12 13wrk_dirs=$(find . -name "work*" -type d -depth $((depth-1)) | sed 's|^./||g') 14if [ "$wrk_dirs" ]; then 15 for wdir in $wrk_dirs; do 16 if [ $depth -ne 2 ]; then 17 dirname=$(dirname "$wdir") 18 echo "===> Running 'make clean' in $dirname..." 19 make_args="-C $dirname" 20 else 21 echo "===> Running 'make clean'..." 22 make_args="" 23 fi 24 25 ret=$(make $make_args clean 2>/dev/null) 26 if echo "$ret" | grep -q 'not writable'; then 27 if [ $depth -ne 2 ]; then 28 echo " Failed to 'make clean' in $dirname" 29 else 30 echo " Failed to 'make clean'" 31 fi 32 fi 33 done 34fi 35 36if ! which "$PSVN" >/dev/null; then 37 echo "===> $PSVN executable not found" >&2 38 exit 1 39fi 40if $PSVN info >/dev/null 2>&1; then 41 echo "===> Running '$PSVN revert'..." 42 $PSVN revert --depth infinity . 43 44 echo "===> Removing leftover files..." 45 $PSVN status --no-ignore | while read line; do 46 status=$(echo "$line" | awk '{ print $1 }') 47 file=$(echo "$line" | awk ' { print $2 }') 48 49 [ ! "$status" -o ! "$file" ] && continue 50 51 if [ "$status" = "?" -o "$status" = "I" ]; then 52 [ "$file" != "distfiles" ] || continue 53 echo " $file" 54 rm -rf "$file" 55 else 56 echo "file=$file status=$status" 57 fi 58 done 59fi 60