• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3# Ad hoc script for merging annotated JDKs.  Arguments are JDK source
4# directories, assumed to be children of $js and identified by directory
5# name only (e.g. "merge-annotations nullness").
6
7if [ $# -le 1 ]; then exit 0; fi
8
9js="$HOME/src/jdk1.8.0_45/src"
10jb="$CHECKERFRAMEWORK/checker/dist/*"
11cf="$CHECKERFRAMEWORK/checker/build"
12sl="$JSR308/annotation-tools/scene-lib/bin"
13al="$JSR308/annotation-tools/annotation-file-utilities/lib"
14jj=./jdk.jaif
15wd=`pwd`
16cp="$jb:$cf:$sl:$al/*:$wd:$CLASSPATH"
17if [ 0 -eq 1 ] ; then
18td=/tmp/merge-jaifs.*
19else
20td=/tmp/merge-jaifs.$$
21
22for aj in $* ; do
23    cd $aj/build
24    for f in `find . -name '*\.class' -print | sed 's-^\./--'` ; do
25        CLASSPATH="$wd/$aj/build:$CHECKERFRAMEWORK/checker/build:$CLASSPATH" \
26          extract-annotations "$f"
27        if [ $? -eq 0 ] ; then
28            d=`dirname "$f"`
29            mkdir -p "$td/$aj/$d"
30            mv "$d"/*.jaif "$td/$aj/$d"
31        fi
32    done
33    cd "$wd"
34done
35fi
36
37find $td -type f -print | xargs java -cp "$cp" annotations.tools.IndexFileMerger $td | sed 's/(value={\[/({/g' | sed 's/\]}/}/g' > "./$jj" &&\
38find "$js" -name "*\.java" -print | CLASSPATH="$cp" xargs insert-annotations-to-source --print-error-stack "$jj" &&\
39rm -rf $td
40
41