| #!/usr/bin/tclsh |
| # |
| # Run this script from the top of the source tree in order to confirm that |
| # various aspects of the source tree are up-to-date. Items checked include: |
| # |
| # * Makefile.msc and autoconf/Makefile.msc agree |
| # * src/ctime.tcl is consistent with tool/mkctimec.tcl |
| # * VERSION agrees with autoconf/tea/configure.ac |
| # * src/pragma.h agrees with tool/mkpragmatab.tcl |
| # |
| # Other tests might be added later. |
| # |
| # Error messages are printed and the process exists non-zero if problems |
| # are found. If everything is ok, no output is generated and the process |
| # exits with 0. |
| # |
| |
| # Read an entire file. |
| # |
| proc readfile {filename} { |
| set fd [open $filename rb] |
| set txt [read $fd] |
| close $fd |
| return $txt |
| } |
| |
| # Find the root of the tree. |
| # |
| set ROOT [file dir [file dir [file normalize $argv0]]] |
| |
| # Name of the TCL interpreter |
| # |
| set TCLSH [info nameofexe] |
| |
| # Number of errors seen. |
| # |
| set NERR 0 |
| |
| ######################### configure ########################################### |
| |
| set conf [readfile $ROOT/configure] |
| set vers [readfile $ROOT/VERSION] |
| if {[string first $vers $conf]<=0} { |
| puts "ERROR: ./configure does not agree with ./VERSION" |
| puts "...... Fix: run autoconf" |
| incr NERR |
| } |
| unset conf |
| |
| ######################### autoconf/tea/configure.ac ########################### |
| |
| set confac [readfile $ROOT/autoconf/tea/configure.ac] |
| set vers [readfile $ROOT/VERSION] |
| set pattern {AC_INIT([sqlite],[} |
| append pattern [string trim $vers] |
| append pattern {])} |
| if {[string first $pattern $confac]<=0} { |
| puts "ERROR: ./autoconf/tea/configure.ac does not agree with ./VERSION" |
| puts "...... Fix: manually edit ./autoconf/tea/configure.ac and put the" |
| puts "...... correct version number in AC_INIT()" |
| incr NERR |
| } |
| unset confac |
| |
| ######################### autoconf/Makefile.msc ############################### |
| |
| set f1 [readfile $ROOT/autoconf/Makefile.msc] |
| exec $TCLSH $ROOT/tool/mkmsvcmin.tcl $ROOT/Makefile.msc tmp1.txt |
| set f2 [readfile tmp1.txt] |
| file delete tmp1.txt |
| if {$f1 != $f2} { |
| puts "ERROR: ./autoconf/Makefile.msc does not agree with ./Makefile.msc" |
| puts "...... Fix: tclsh tool/mkmsvcmin.tcl" |
| incr NERR |
| } |
| |
| ######################### src/pragma.h ######################################## |
| |
| set f1 [readfile $ROOT/src/pragma.h] |
| exec $TCLSH $ROOT/tool/mkpragmatab.tcl tmp2.txt |
| set f2 [readfile tmp2.txt] |
| file delete tmp2.txt |
| if {$f1 != $f2} { |
| puts "ERROR: ./src/pragma.h does not agree with ./tool/mkpragmatab.tcl" |
| puts "...... Fix: tclsh tool/mkpragmatab.tcl" |
| incr NERR |
| } |
| |
| ######################### src/ctime.c ######################################## |
| |
| set f1 [readfile $ROOT/src/ctime.c] |
| exec $TCLSH $ROOT/tool/mkctimec.tcl tmp3.txt |
| set f2 [readfile tmp3.txt] |
| file delete tmp3.txt |
| if {$f1 != $f2} { |
| puts "ERROR: ./src/ctime.c does not agree with ./tool/mkctimec.tcl" |
| puts "..... Fix: tclsh tool/mkctimec.tcl" |
| incr NERR |
| } |
| |
| # If any errors are seen, exit 1 so that the build will fail. |
| # |
| if {$NERR>0} {exit 1} |