From 0af3caab3d4de95a6d084fab7510af0baaa177b7 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Mon, 21 Jun 2010 16:19:54 +0200 Subject: [PATCH 1/1] fix caching --- misc/tools/cached-converter.sh | 35 ++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/misc/tools/cached-converter.sh b/misc/tools/cached-converter.sh index f8281f90..dd4e3b7d 100755 --- a/misc/tools/cached-converter.sh +++ b/misc/tools/cached-converter.sh @@ -17,29 +17,40 @@ trap 'rm -rf "$tmpdir"' EXIT cached() { + flag=$1; shift method=$1; shift infile1=$1; shift infile2=$1; shift outfile1=$1; shift outfile2=$1; shift + if ! $flag; then + return 0 + fi options=`echo "$*" | git hash-object --stdin` sum=`git hash-object "$infile1"` if [ -n "$infile2" ]; then - sum=$sum`git hash-object "$infile2"` + sum=$sum`git hash-object "$infile2"` fi mkdir -p "$CACHEDIR/$method-$options" - name1="$CACHEDIR/$method/$sum-1.${outfile1##*.}" - [ -z "$outfile2" ] || name2="$CACHEDIR/$method/$sum-2.${outfile2##*.}" - tempfile1="$name1.new" - [ -z "$outfile2" ] || tempfile2="$name2.new" - if "$method" "$infile1" "$infile2" "$tempfile1" "$tempfile2" "$@"; then - mv "$tempfile1" "$name1" - [ -z "$outfile2" ] || mv "$tempfile2" "$name2" - ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1" - [ -z "$outfile2" ] || ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2" + name1="$CACHEDIR/$method-$options/$sum-1.${outfile1##*.}" + [ -z "$outfile2" ] || name2="$CACHEDIR/$method-$options/$sum-2.${outfile2##*.}" + tempfile1="${name1%/*}/new-${name1##*/}" + [ -z "$outfile2" ] || tempfile2="${name2%/*}/new-${name2##*/}" + if [ -f "$name1" ]; then + echo "$name1 already there, caching" + sleep 10 + ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1" + [ -z "$outfile2" ] || ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2" + elif "$method" "$infile1" "$infile2" "$tempfile1" "$tempfile2" "$@"; then + echo "$name1 not there, making" + sleep 10 + mv "$tempfile1" "$name1" + [ -z "$outfile2" ] || mv "$tempfile2" "$name2" + ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1" + [ -z "$outfile2" ] || ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2" else - rm -f "$tempfile1" - rm -f "$tempfile2" + rm -f "$tempfile1" + rm -f "$tempfile2" exit 1 fi } -- 2.39.2