blob: f843735f6df02a69d042e1938caf743a5ebe7b3b [file] [log] [blame]
#!/bin/sh
# Ad hoc script for merging annotated JDKs. Arguments are JDK source
# directories, assumed to be children of $js and identified by directory
# name only (e.g. "merge-annotations nullness").
if [ $# -le 1 ]; then exit 0; fi
js="$HOME/src/jdk1.8.0_45/src"
jb="$CHECKERFRAMEWORK/checker/dist/*"
cf="$CHECKERFRAMEWORK/checker/build"
sl="$JSR308/annotation-tools/scene-lib/bin"
al="$JSR308/annotation-tools/annotation-file-utilities/lib"
jj=./jdk.jaif
wd=`pwd`
cp="$jb:$cf:$sl:$al/*:$wd:$CLASSPATH"
if [ 0 -eq 1 ] ; then
td=/tmp/merge-jaifs.*
else
td=/tmp/merge-jaifs.$$
for aj in $* ; do
cd $aj/build
for f in `find . -name '*\.class' -print | sed 's-^\./--'` ; do
CLASSPATH="$wd/$aj/build:$CHECKERFRAMEWORK/checker/build:$CLASSPATH" \
extract-annotations "$f"
if [ $? -eq 0 ] ; then
d=`dirname "$f"`
mkdir -p "$td/$aj/$d"
mv "$d"/*.jaif "$td/$aj/$d"
fi
done
cd "$wd"
done
fi
find $td -type f -print | xargs java -cp "$cp" annotations.tools.IndexFileMerger $td | sed 's/(value={\[/({/g' | sed 's/\]}/}/g' > "./$jj" &&\
find "$js" -name "*\.java" -print | CLASSPATH="$cp" xargs insert-annotations-to-source --print-error-stack "$jj" &&\
rm -rf $td