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