1#!/bin/sh - 2# 3# Reconcile the list of public defines with the man pages and the Java files. 4 5d=../.. 6docs=$d/docs_src 7 8[ -f $d/LICENSE ] || { 9 echo 'FAIL: cannot find source distribution directory.' 10 exit 1 11} 12 13p=$d/dist/pubdef.in 14 15exitv=0 16 17# remove m4 doc tests, m4 has been removed for 4.8 18# TODO: add test for csharp const 19#cat <<END_OF_TEXT 20#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 21#Check that pubdef.in has everything listed in m4.links. 22#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 23#END_OF_TEXT 24 25#f=$docs/m4/m4.links 26#sed -n \ 27# -e 's/^\$1, \(DB_[^,]*\).*/\1/p' \ 28# -e d < $f | 29#while read name; do 30# if `egrep -w "$name" $p > /dev/null`; then 31# : 32# else 33# echo "$f: $name is missing from $p" 34# exitv=1 35# fi 36#done 37 38#cat <<END_OF_TEXT 39#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 40#Check that m4.links has everything listed in pubdef.in. 41#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 42#END_OF_TEXT 43 44#f=$docs/m4/m4.links 45#sed '/^#/d' $p | 46#while read name isdoc isinc isjava; do 47# if `egrep -w "^.1, $name" $f > /dev/null`; then 48# [ "X$isdoc" != "XD" ] && { 49# echo "$name should not appear in $f" 50# exitv=1 51# } 52# else 53# [ "X$isdoc" = "XD" ] && { 54# echo "$name does not appear in $f" 55# exitv=1; 56# } 57# fi 58#done 59 60cat <<END_OF_TEXT 61=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 62Check that pubdef.in has everything listed in db.in plus api_flags.in. 63=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 64END_OF_TEXT 65 66cat $d/dbinc/db.in $d/dbinc_auto/api_flags.in | sed -n \ 67 -e 's/^#define[ ]*\(DB_[A-Z_0-9][A-Z_0-9]*\).*/\1/p' \ 68 -e 's/^[ ]*\(DB_[A-Z_]*\)=[0-9].*/\1/p' \ 69 -e d | 70while read name; do 71 if `egrep -w "$name" $p > /dev/null`; then 72 : 73 else 74 echo "db.in/api_flags.in: $name is missing from $p" 75 exitv=1 76 fi 77done 78 79cat <<END_OF_TEXT 80=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 81Check that api_flags.in plus db.in has everything listed in pubdef.in. 82=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 83END_OF_TEXT 84 85sed '/^#/d' $p | 86while read name isdoc isinc isjava iscsharp; do 87 if `egrep -w "#define[ ]$name|[ ][ ]*$name=[0-9][0-9]*" \ 88 $d/dbinc/db.in $d/dbinc_auto/api_flags.in > /dev/null`; then 89 [ "X$isinc" != "XI" ] && { 90 echo "$name should not appear in db.in/api_flags.in" 91 exitv=1 92 } 93 else 94 [ "X$isinc" = "XI" ] && { 95 echo "$name does not appear in db.in/api_flags.in" 96 exitv=1 97 } 98 fi 99done 100 101cat <<END_OF_TEXT 102=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 103Check that pubdef.in has everything listed in DbConstants.java. 104=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 105END_OF_TEXT 106 107j=$d/java/src/com/sleepycat/db 108f=$j/internal/DbConstants.java 109sed -n -e 's/.*int[ ]\([^ ]*\).*;/\1/p' < $f | 110while read name; do 111 if `egrep -w "$name" $p > /dev/null`; then 112 : 113 else 114 echo "$f: $name is missing from $p" 115 exitv=1 116 fi 117done 118 119cat <<END_OF_TEXT 120=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 121Check that DbConstants.java has everything listed in pubdef.in. 122=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 123END_OF_TEXT 124 125f=$j/internal/DbConstants.java 126sed '/^#/d' $p | 127while read name isdoc isinc isjava iscsharp; do 128 if `egrep -w "int[ ]$name =" $f > /dev/null`; then 129 [ "X$isjava" != "XJ" ] && { 130 echo "$name should not appear in $f" 131 exitv=1 132 } 133 else 134 [ "X$isjava" = "XJ" ] && { 135 echo "$name does not appear in $f" 136 exitv=1 137 } 138 fi 139done 140 141cat <<END_OF_TEXT 142=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 143Check that all constants in pubdef.in are wrapped by the Java API. 144=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 145END_OF_TEXT 146 147#Strip out Javadoc comments 148t=__1 149cat $j/*.java $d/rpc_server/java/*.java \ 150 $j/internal/Db.java $j/internal/DbEnv.java \ 151 $j/internal/db_javaJNI.java | sed '/\/\*\*/,/\*\// d' > $t 152 153sed '/^#/d' $p | 154while read name isdoc isinc isjava iscsharp; do 155 if `egrep -w "$name" $t > /dev/null`; then 156 [ "X$isjava" != "XJ" ] && { 157 echo "$name should not appear in the Java API" 158 exitv=1 159 } 160 else 161 [ "X$isjava" = "XJ" ] && { 162 echo "$name does not appear in the Java API" 163 exitv=1 164 } 165 fi 166done 167 168cat <<END_OF_TEXT 169=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 170Check that all constants in pubdef.in are wrapped by the Java native layer. 171=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 172END_OF_TEXT 173 174sed '/^#/d' $p | 175while read name isdoc isinc isjava iscsharp; do 176 if `egrep -w "$name" $d/libdb_java/db_java_wrap.c > /dev/null`; then 177 [ "X$isjava" != "XN" ] && [ "X$isjava" != "XJ" ] && { 178 echo "$name should not appear in the Java native layer" 179 exitv=1 180 } 181 else 182 [ "X$isjava" = "XN" ] && { 183 echo "$name does not appear in the Java native layer" 184 exitv=1 185 } 186 fi 187done 188 189exit $exitv 190