1# 2# this is a maintenance program for XOTcl that allows us to change the 3# version information across the whole distribution automatically. 4# 5# this program assumes that pwd is in xotcl-full-X.X* directory or subdir 6# 7set XOTCL_MAJOR_VERSION 1 8set XOTCL_MINOR_VERSION 6 9set XOTCL_RELEASE_LEVEL .6 10 11# example settings: 12# 1.0 13#set XOTCL_MAJOR_VERSION 1 14#set XOTCL_MINOR_VERSION 0 15#set XOTCL_RELEASE_LEVEL .3 16# 17# 0.9.3 18#set XOTCL_MAJOR_VERSION 0 19#set XOTCL_MINOR_VERSION 9 20#set XOTCL_RELEASE_LEVEL .3 21 22#set XOTCL_MAJOR_VERSION 0 23#set XOTCL_MINOR_VERSION 9 24#set XOTCL_RELEASE_LEVEL .3 25#set XOTCL_RELEASE_LEVEL .4 26#set XOTCL_RELEASE_LEVEL .5 27 28 29set XOTCL_VERSION $XOTCL_MAJOR_VERSION.$XOTCL_MINOR_VERSION 30set FULL_VERSION $XOTCL_VERSION$XOTCL_RELEASE_LEVEL 31 32if {![regexp {((^.*/xotcl-)([0-9.]*))/?} [pwd] _ topdirname topdirprefix oldversion]} { 33 error "this program assumes that pwd is in xotcl-X.X* directory" 34} 35 36puts "Prior version is: $oldversion" 37puts "New version is: $FULL_VERSION" 38puts "Working in: $topdirname" 39 40cd $topdirname 41 42puts "... make clean first" 43if {[file exists Makefile]} { 44 exec make clean 45} 46 47foreach file [exec find . -name configure.in] { 48 puts "... updating $file" 49 set F [open $file]; set c [read $F]; close $F 50 set newFile "" 51 foreach line [split $c \n] { 52 set newLine $line 53 if {[regexp {^XOTCL_MAJOR_VERSION=[0-9]} $line]} { 54 set line "XOTCL_MAJOR_VERSION=$XOTCL_MAJOR_VERSION" 55 } elseif {[regexp {^XOTCL_MINOR_VERSION=[0-9]} $line]} { 56 set line "XOTCL_MINOR_VERSION=$XOTCL_MINOR_VERSION" 57 } elseif {[regexp {^XOTCL_RELEASE_LEVEL=} $line]} { 58 set line "XOTCL_RELEASE_LEVEL=$XOTCL_RELEASE_LEVEL" 59 } elseif {[regexp {^define\(XOTclVersion, .*$} $line]} { 60 set line "define(XOTclVersion, $XOTCL_MAJOR_VERSION.$XOTCL_MINOR_VERSION$XOTCL_RELEASE_LEVEL)" 61 } 62 append newFile $line\n 63 } 64 set F [open $file w]; puts $F $newFile; close $F 65} 66 67set newtopdirname $topdirprefix$FULL_VERSION 68if {$oldversion != $FULL_VERSION} { 69 puts "topdir: $topdirname->$newtopdirname" 70 file rename -force $topdirname $newtopdirname 71} 72cd $newtopdirname 73 74foreach file [exec find . -name configure.in] { 75 set dir [file dirname $file] 76 set oldpwd [pwd] 77 cd $dir 78 exec autoconf 79 cd $oldpwd 80} 81 82# determine last configure command 83cd $newtopdirname 84if {[catch {set configurecmd [exec fgrep {$ ./configure} config.log]}]} { 85 set configurecmd "./configure" 86} else { 87 regsub {^ +\$ } $configurecmd "" configurecmd 88} 89#puts $configurecmd 90 91cd $newtopdirname/ 92puts "Configuring in [pwd]" 93eval exec $configurecmd 94 95puts "ok ... version is now $FULL_VERSION" 96