Check-in [556b736457]
Not logged in
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to tclconference@googlegroups.com or submit via the online form
by Aug 20.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Adding fossil branches to build specs Added a "domake" to hijack make calls
Timelines: family | ancestors | descendants | both | autosetup
Files: files | file ages | folders
SHA1: 556b73645793d61c42d8bae0579ab97eb7c17a49
User & Date: hypnotoad 2015-03-13 12:19:17
Context
2015-03-13
12:39
Recompute where the tclsh is after every make_tcl check-in: 0bde6831fb user: hypnotoad tags: autosetup
12:19
Adding fossil branches to build specs Added a "domake" to hijack make calls check-in: 556b736457 user: hypnotoad tags: autosetup
12:02
Completing the migration to jimtcl compadible code for codebale/cthluhu/fileutil Alter the search path rules for find-tclsh to prefer a native 8.6 to jimtcl check-in: e61e828788 user: hypnotoad tags: autosetup
Changes
Unified Diff Ignore Whitespace Patch
Changes to scripts/common.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
###
# Common suite of routines for the odie boostrap process
###

set path [file normalize [file join [file dirname [file normalize [info script]]] ..]]

if {[file exists [file join $path odieConfig.tcl]]} {
    source [file join $path odieConfig.tcl]
}

proc ::noop args {}

proc ::doexec args {
  exec {*}$args >&@ stdout
}

namespace eval ::sherpa_bootstrap {}

proc ::sherpa_bootstrap::download_fossil {pkg} {
  variable distribution
  set PKG_SRCPATH [sandbox_path $pkg]
  set fosdb [fossil_db $pkg]
  if {![file exists $fosdb]} {



<








<
<
<
<







1
2
3

4
5
6
7
8
9
10
11




12
13
14
15
16
17
18
###
# Common suite of routines for the odie boostrap process
###

set path [file normalize [file join [file dirname [file normalize [info script]]] ..]]

if {[file exists [file join $path odieConfig.tcl]]} {
    source [file join $path odieConfig.tcl]
}

proc ::noop args {}





namespace eval ::sherpa_bootstrap {}

proc ::sherpa_bootstrap::download_fossil {pkg} {
  variable distribution
  set PKG_SRCPATH [sandbox_path $pkg]
  set fosdb [fossil_db $pkg]
  if {![file exists $fosdb]} {
35
36
37
38
39
40
41



42

43
44
45
46
47
48
49
  if {![file exists ${PKG_SRCPATH}/$::odie(fossil_checkout)]} {
    puts "Fossil open $pkg"
    file mkdir ${PKG_SRCPATH}
    cd ${PKG_SRCPATH}
    doexec $::odie(fossil) open $fosdb
  }
  cd ${PKG_SRCPATH}



  doexec $::odie(fossil) update

  return ${PKG_SRCPATH}
}

proc ::sherpa_bootstrap::fossil_db pkg {
  if {[file exists [file join $::odie(download) $pkg.fossil]]} {
    return [file join $::odie(download) $pkg.fossil]
  }







>
>
>
|
>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  if {![file exists ${PKG_SRCPATH}/$::odie(fossil_checkout)]} {
    puts "Fossil open $pkg"
    file mkdir ${PKG_SRCPATH}
    cd ${PKG_SRCPATH}
    doexec $::odie(fossil) open $fosdb
  }
  cd ${PKG_SRCPATH}
  if {[dict exists $distribution $pkg fossil_branch]} {
      doexec $::odie(fossil) update [dict get $distribution $pkg fossil_branch]
  } else {
      doexec $::odie(fossil) update
  }
  return ${PKG_SRCPATH}
}

proc ::sherpa_bootstrap::fossil_db pkg {
  if {[file exists [file join $::odie(download) $pkg.fossil]]} {
    return [file join $::odie(download) $pkg.fossil]
  }
63
64
65
66
67
68
69

70




71
72
73

74




75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96












97












98
99
100
101
102
103
104
    if {![file exists ${PKG_SRCPATH}/Makefile]} {
      if {$::odie(host) != $::odie(target)} {
	doexec sh ./configure --prefix=$::odie(local_repo) --libdir=$::odie(local_repo)/lib --host=$::odie(host)
      } else {
	doexec sh ./configure --prefix=$::odie(local_repo) --libdir=$::odie(local_repo)/lib
      }
    }

    doexec make install




  } else {
    set PKG_SRCPATH [sandbox_path $pkg]
    cd ${PKG_SRCPATH}

    doexec make $action




  }
}

proc ::sherpa_bootstrap::build_sak {pkg action} {
  if {$action eq "install"} {
    set PKG_SRCPATH [sandbox_path $pkg]
    doexec $::odie(tcl_shell) [file join $PKG_SRCPATH installer.tcl] \
                -no-examples -no-nroff \
                -no-wait -no-gui
  }
}

proc ::sherpa_bootstrap::build_kettle {pkg action} {
  set PKG_SRCPATH [sandbox_path $pkg]
  if {$pkg eq "kettle"} {
    doexec $::odie(tcl_shell) [file join $PKG_SRCPATH kettle] -f [file join $PKG_SRCPATH build.tcl] $action
  } else {
    doexec $::odie(tcl_shell) $::odie(kettle) -f [file join $PKG_SRCPATH build.tcl] $action
  }
}

proc ::sherpa_bootstrap::build_sqlite {pkg action} {












  doexec $::odie(tcl_shell) [file join $::odie(src_dir) scripts make_sqlite.tcl]












}

proc ::sherpa_bootstrap::install_package package {
  variable distribution
  set pkginfo [dict get $distribution $package]
  puts [list $package $pkginfo]
  set download [dict get $pkginfo get_proc]







>
|
>
>
>
>



>
|
>
>
>
>







|














>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
    if {![file exists ${PKG_SRCPATH}/Makefile]} {
      if {$::odie(host) != $::odie(target)} {
	doexec sh ./configure --prefix=$::odie(local_repo) --libdir=$::odie(local_repo)/lib --host=$::odie(host)
      } else {
	doexec sh ./configure --prefix=$::odie(local_repo) --libdir=$::odie(local_repo)/lib
      }
    }
    if [catch {
        domake install
    } err] {
	puts "Died on $err"
	exit 1
    }
  } else {
    set PKG_SRCPATH [sandbox_path $pkg]
    cd ${PKG_SRCPATH}
    if [catch {
        domake $action
    } err] {
	puts "Died on $err"
	exit 1
    }
  }
}

proc ::sherpa_bootstrap::build_sak {pkg action} {
  if {$action eq "install"} {
    set PKG_SRCPATH [sandbox_path $pkg]
    doexec $::odie(tcl_shell) [file join $PKG_SRCPATH installer.tcl] \
                -no-examples -no-nroff -no-html \
                -no-wait -no-gui
  }
}

proc ::sherpa_bootstrap::build_kettle {pkg action} {
  set PKG_SRCPATH [sandbox_path $pkg]
  if {$pkg eq "kettle"} {
    doexec $::odie(tcl_shell) [file join $PKG_SRCPATH kettle] -f [file join $PKG_SRCPATH build.tcl] $action
  } else {
    doexec $::odie(tcl_shell) $::odie(kettle) -f [file join $PKG_SRCPATH build.tcl] $action
  }
}

proc ::sherpa_bootstrap::build_sqlite {pkg action} {
    ###
    # Sqlite
    ###
    set SQLITE_VERSION 3.8.7.4
    set SQLITE_TFNAME sqlite-autoconf-3080704
    set SQLITE_SRCPATH $::odie(sandbox)/sqlite
    set SQLITE_URL http://sqlite.org/2014/${SQLITE_TFNAME}.tar.gz
    # In MSYS, tar may not understand the prefix
    set download_msys [exec pwd]
    set SQLITE_TARBALL [file join [::realpath $::odie(download)] sqlite${SQLITE_VERSION}.tar.gz]
    cd [::realpath $::odie(odie_src_dir)]
    if {![file exists $SQLITE_TARBALL]} {
      doexec $::odie(tcl_shell) scripts/url-get.tcl ${SQLITE_URL} ${SQLITE_TARBALL}
    }
    if {![file exists ${SQLITE_SRCPATH}/README]} {
      file delete -force ${SQLITE_SRCPATH}
      cd $::odie(sandbox)
      doexec tar xfz [::cygpath ${SQLITE_TARBALL}]
      file rename -force ${SQLITE_TFNAME} ${SQLITE_SRCPATH}
    }
    cd ${SQLITE_SRCPATH}/tea
    if {![file exists ${SQLITE_SRCPATH}/tea/Makefile]} {
      doexec sh ./configure --prefix=[::cygpath $::odie(local_repo)] --libdir=[::cygpath $::odie(local_repo)/lib] --host=$::odie(host)
    }

}

proc ::sherpa_bootstrap::install_package package {
  variable distribution
  set pkginfo [dict get $distribution $package]
  puts [list $package $pkginfo]
  set download [dict get $pkginfo get_proc]
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

139


140
141
142






143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

170
171
172

















173
174
175
176
177
178
  if {![dict exists $distribution $name get_proc]} {
    dict set distribution $name get_proc ::noop
  }
  if {![dict exists $distribution $name build_proc]} {
    dict set distribution $name build_proc ::noop
  }
}

###
# Make sure the odielib toolkit is downloaded
###
if {![file exists [file join $::odie(sandbox) odielib modules odie index.tcl]]} {
  ::sherpa_bootstrap::download_fossil odielib
}
source [file join $path .. odielib modules odie index.tcl]
source [file join $path .. odielib modules cmdline cmdline.tcl]
source [file join $path .. odielib modules fileutil index.tcl]
source [file join $path .. odielib modules codebale index.tcl]


::sherpa_bootstrap::distribution sqlite {
  get_proc   ::noop
  build_proc build_sqlite

}


::sherpa_bootstrap::distribution tclx {
  get_proc   download_fossil
  build_proc build_gnumake






}
::sherpa_bootstrap::distribution tclvfs {
  get_proc   download_fossil
  requires tcllib
  build_proc build_gnumake
}
::sherpa_bootstrap::distribution taolib {
  get_proc   download_fossil
  requires {sqlite tcllib tklib}
  build_proc build_sak
}
::sherpa_bootstrap::distribution tcllib {
  get_proc   download_fossil
  build_proc build_sak
}
::sherpa_bootstrap::distribution tklib {
  get_proc   download_fossil
  requires tcllib
  build_proc build_sak
}
::sherpa_bootstrap::distribution kettle {
  get_proc   download_fossil
  requires {tclx tcllib tklib}
  build_proc build_kettle
}
::sherpa_bootstrap::distribution odielib {
  get_proc   download_fossil

  requires {tcllib}
  build_proc build_gnumake
}


















#::sherpa_bootstrap::distribution sherpa {
#  get_proc   download_fossil
#  requires {taolib tcllib odielib kettle}
#  build_proc build_kettle
#}







<
<
<
<
<
<
<
<
<
<
<
<




>

>
>
|
|
|
>
>
>
>
>
>




















<
<
<
<
|


>



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






149
150
151
152
153
154
155












156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192




193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
  if {![dict exists $distribution $name get_proc]} {
    dict set distribution $name get_proc ::noop
  }
  if {![dict exists $distribution $name build_proc]} {
    dict set distribution $name build_proc ::noop
  }
}













::sherpa_bootstrap::distribution sqlite {
  get_proc   ::noop
  build_proc build_sqlite
  #build_proc ::noop
}

if {!$::odie(windows)} {
    ::sherpa_bootstrap::distribution tclx {
      get_proc   download_fossil
      build_proc build_gnumake
    }
    ::sherpa_bootstrap::distribution kettle {
      get_proc   download_fossil
      requires {tclx tcllib tklib}
      build_proc build_kettle
    }
}
::sherpa_bootstrap::distribution tclvfs {
  get_proc   download_fossil
  requires tcllib
  build_proc build_gnumake
}
::sherpa_bootstrap::distribution taolib {
  get_proc   download_fossil
  requires {sqlite tcllib tklib}
  build_proc build_sak
}
::sherpa_bootstrap::distribution tcllib {
  get_proc   download_fossil
  build_proc build_sak
}
::sherpa_bootstrap::distribution tklib {
  get_proc   download_fossil
  requires tcllib
  build_proc build_sak
}





::sherpa_bootstrap::distribution odielib {
  get_proc   download_fossil
  fossil_branch autosetup
  requires {tcllib}
  build_proc build_gnumake
}

proc ::doexec args {
  exec {*}$args >&@ stdout
}

###
# Make sure the odielib toolkit is downloaded
###
if {![file exists [file join $::odie(sandbox) odielib modules odie index.tcl]]} {
  ::sherpa_bootstrap::download_fossil odielib
}
source [file join $path .. odielib modules odie index.tcl]
source [file join $path .. odielib modules cmdline cmdline.tcl]
source [file join $path .. odielib modules fileutil index.tcl]
source [file join $path .. odielib modules codebale index.tcl]



#::sherpa_bootstrap::distribution sherpa {
#  get_proc   download_fossil
#  requires {taolib tcllib odielib kettle}
#  build_proc build_kettle
#}
Changes to scripts/make_basekit.tcl.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Only needed for pre-zipvfs enable Tcl/Tk
set TCL_STATIC_SRCPATH $::odie(sandbox)/tcl/$::odie(tcl_src_dir)
set TK_STATIC_SRCPATH $::odie(sandbox)/tk/$::odie(tcl_src_dir)

if {$::odie(window_system) ne "none"} {
  if { $::odie(platform) eq "windows" } {
    cd [::realpath ${TK_STATIC_SRCPATH}]
    doexec make tk.res.o
    doexec make wish.res.o
  }
}
cd [::realpath $::odie(sandbox)/odie/src/toadkit]
puts "Building kits"
doexec make -C $::odie(sandbox)/odie/src/toadkit clean
doexec make -C $::odie(sandbox)/odie/src/toadkit install







|
|




|
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Only needed for pre-zipvfs enable Tcl/Tk
set TCL_STATIC_SRCPATH $::odie(sandbox)/tcl/$::odie(tcl_src_dir)
set TK_STATIC_SRCPATH $::odie(sandbox)/tk/$::odie(tcl_src_dir)

if {$::odie(window_system) ne "none"} {
  if { $::odie(platform) eq "windows" } {
    cd [::realpath ${TK_STATIC_SRCPATH}]
    domake tk.res.o
    domake wish.res.o
  }
}
cd [::realpath $::odie(sandbox)/odie/src/toadkit]
puts "Building kits"
domake clean
domake install
Changes to scripts/sherpa.tcl.
68
69
70
71
72
73
74


set method [lindex $argv 0]
if { [info command ::command::$method] eq {} } {
  puts stderr "Invalid command: $method."
  ::command::help
  exit 1
}
::command::$method {*}[lrange $argv 1 end]









>
>
68
69
70
71
72
73
74
75
76
set method [lindex $argv 0]
if { [info command ::command::$method] eq {} } {
  puts stderr "Invalid command: $method."
  ::command::help
  exit 1
}
::command::$method {*}[lrange $argv 1 end]
update
exit 0