#!/bin/bash | |
# | |
# This script makes a patch for LLVM ensuring the correct diff options and | |
# putting the files in a standard review order. | |
function error { | |
retcode="$?" | |
echo "mkpatch: error: $1 ($retcode)" | |
exit 1 | |
} | |
if [ ! -e llvm.spec.in ] ; then | |
error "Please change directory to the LLVM top source directory" | |
fi | |
if [ "$#" -ne 1 ] ; then | |
error "usage: utils/mkpatch [PATCH_NAME]" | |
fi | |
NAME="$1" | |
echo "mkpatch: Generating differences on top level files" | |
svn diff -N -x -u > "$NAME".patch.raw 2>&1 | |
echo "mkpatch: Generating differences on all directories" | |
svn diff -x -u >> "$NAME".patch.raw 2>&1 \ | |
autoconf docs utils include lib/System lib/Support lib/VMCore lib/AsmParser \ | |
lib/Bitcode lib/Analysis lib/Transforms lib/CodeGen lib/Target \ | |
lib/ExecutionEngine lib/Linker \ | |
tools test unittests runtime projects examples Xcode | |
echo "mkpatch: Removing cruft from the patch file" | |
sed -e '/^[?] .*/d' -e '/^cvs diff: Diffing/d' "$NAME".patch.raw | awk '\ | |
BEGIN { deleting = 0; } \ | |
/^Index: .*[.]cvs$/ { deleting = 1; fname=substr($0,7); \ | |
print "Skipping: ", fname > "/dev/stderr"; } \ | |
/^Index:.*/ && !/^Index: .*[.]cvs$/ { deleting = 0; } \ | |
{ if (! deleting) { print; } } ' > "$NAME".patch || \ | |
error "sed/awk cleanup failed" | |