source: tol/tolbase/lib/toltk/tolpkg.tcl @ 7b5e14e

1941-docker-image-to-testdevel
Last change on this file since 7b5e14e was 7b5e14e, checked in by Jorge Pérez <josp.jorge@…>, 15 years ago

fixes #1390, initialization for test must be done in test files.

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3984 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 8.5 KB
RevLine 
[5b6b63c]1namespace eval ::TolPkg {
2  variable cwd [ file normalize [ file dir [ info script ] ] ]
3}
4
5proc ::TolPkg::UpdateRepositoryInfo { } {
6  tol::console eval {
7    Real TolPackage::Client::RemoteUpdatePackSyncInfo(False);
8    Real TolPackage::Client::RemoteUpdateVersSyncInfo(False);
9  }
10  return
11}
12
13if { 0 } {
140 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
151 -- SSCC_P18_Maps
162 -- Maps for the sscc in Granada province.
173 --
184 -- v2.0.1 b.1
195 -- v999999999999999999
206 -- SSCC_P18_Maps.1.0
217 -- SSCC_P18_Maps.1.0
228 -- y2011m11d26h15i11s00.000
239 -- y2011m11d26h15i11s00.000
2410 -- 1154572
25}
26
27proc ::TolPkg::GetPkgSyncInfo { } {
28  set localRoot [ file normalize \
29                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
[e83ccac]30  set oza [ file join $localRoot "Client/PackSyncInfo.oza" ]
31  if { ![ file exists $oza ] || ![ file readable $oza ] } {
32    return {}
33  }
34  set tolScript [ string map [ list "%O" $oza ] {
[5b6b63c]35    Set { Ois.Load( "%O" )[1] }
36  } ]
37  # return a dictionary
38  set dict {}
39  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
40    set url        [ lindex $p 0 ]
41    set name       [ lindex $p 1 ]
42    set brief      [ lindex $p 2 ]
43    set mintol     [ lindex $p 4 ]
44    set maxtol     [ lindex $p 5 ]
45    set lastremote [ lindex $p 6 ]
46    set lastlocal  [ lindex $p 7]
47    lappend dict [ list $name \
48                       [ list url $url brief $brief mintol $mintol \
49                             maxtol $maxtol lastremote $lastremote \
50                             lastlocal $lastlocal ] ]
51  }
52  return $dict
53}
54
55if { 0 } {
560 -- http://packages.localbayes.es/BayesPrivateTolPackages/repository.php
571 -- MMS
582 -- MMS.0.6040
593 --
604 -- v2.0.1 b.4
615 -- v999999999999999999
626 -- GuiTools.3.2,BysMcmc.4.8,TolIpopt.2.1,IpoptCore.3.9,QltvRespModel.4.1,GrzLinModel.3.1,MatQuery.3.2,NonLinGloOpt.5.1,TolCint.2.1,BysPrior.2.1,MatAlg.1.1,BysInfDiag.2.1,BysSampler.4.1,BabelTool.1.4,ExtLib.1.5,RandVar.2.104,DecoTools.1.6
637 -- y2011m11d07h10i45s00.000
648 -- y2011m11d07h10i45s00.000
659 -- 1474442
66}
67
68proc ::TolPkg::GetVersSyncInfo { } {
69  set localRoot [ file normalize \
70                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
[e83ccac]71  set oza [ file join $localRoot "Client/VersSyncInfo.oza" ]
72  if { ![ file exists $oza ] || ![ file readable $oza ] } {
73    return {}
74  }
75  set tolScript [ string map [ list "%O" $oza ] {
[5b6b63c]76    Set { Ois.Load( "%O" )[1] }
77  } ]
78  # return a dictionary
79  set dict {}
80  foreach p [ lindex [ toltcl::eval $tolScript ] 0 ] {
81    set url          [ lindex $p 0 ]
82    set name         [ lindex $p 1 ]
83    set version      [ lindex $p 2 ]
84    set mintol       [ lindex $p 4 ]
85    set maxtol       [ lindex $p 5 ]
86    set dependencies [ split [ lindex $p 6 ] "," ]
87    set dateremote   [ lindex $p 7 ]
88    set datelocal    [ lindex $p 8 ]
89    lappend dict [ list $version \
90                       [ list url $url name $name mintol $mintol \
91                             maxtol $maxtol dateremote $dateremote \
92                             datelocal $datelocal \
93                             dependencies $dependencies ] ]
94  }
95  return $dict
96}
97
98proc ::TolPkg::GetLocalPackages { } {
99  set localRoot [ file normalize \
100                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
101  set clientRoot [ file join $localRoot Client ]
102  set dirs [ glob -tail -dir $clientRoot -types {d r} * ]
103  set pkgsInfo {}
104  foreach d $dirs {
[e83ccac]105    lappend pkgsInfo [ list $d [ GetLocalPackageInfo $d ] ]
[5b6b63c]106  }
107  return $pkgsInfo
108}
109
[e83ccac]110proc ::TolPkg::GetLocalPackageInfo { p } {
111  set tolScript [ string map [ list %p $p ] {
112    Set TolPackage::Client::LocalInfo( "%p" );
113  } ]
114  return [ lindex [ toltcl::eval $tolScript -named 1 ] 1 ]
115}
116
[5b6b63c]117proc ::TolPkg::GetPackageInfoFromOZA { oza } {
118  puts "::TolPkg::GetPackageInfoFromOZA $oza"
119  set tolScript [ string map [ list "%O" $oza ] {
120    Set {
121      Set oza = Include( "%O" );
122      WriteLn( "%O" );
123      Set If( Grammar( oza[1] ) == "NameBlock", {
124        NameBlock pkg = oza[ 1 ];
125        Set If( And( ObjectExist( "Text", "pkg::_.autodoc.name" ),
126                     ObjectExist( "Text", "pkg::_.autodoc.brief" ),
127                     ObjectExist( "Text", "pkg::_.autodoc.description" ),
128                     ObjectExist( "Text", "pkg::_.autodoc.url" ),
129                     ObjectExist( "Real", "pkg::_.autodoc.version.high" ),
130                     ObjectExist( "Real", "pkg::_.autodoc.version.low"),
131                     ObjectExist( "Set",  "pkg::_.autodoc.authors" ),
132                     ObjectExist( "Text", "pkg::_.autodoc.minTolVersion" ) ), {
133                       Set aux = [[ Text name           = pkg::_.autodoc.name,
134                                    Text brief          = pkg::_.autodoc.brief,
135                                    Text description    = pkg::_.autodoc.description,
136                                    Text url            = pkg::_.autodoc.url,
137                                    Real version.high   = pkg::_.autodoc.version.high,
138                                    Real version.low    = pkg::_.autodoc.version.low,
139                                    Set dependencies    = pkg::_.autodoc.dependencies,
140                                    Set authors         = pkg::_.autodoc.authors,
141                                    Text versionControl = If( ObjectExist( "Text", "pkg::_.autodoc.versionControl" ),
142                                                              pkg::_.autodoc.versionControl, "" );
143                                    Text minTolVersion  = pkg::_.autodoc.minTolVersion,
144                                    Text maxTolVersion  = If( ObjectExist( "Text", "pkg::_.autodoc.maxTolVersion" ),
145                                                              pkg::_.autodoc.axTolVersion, "" ) ]];
146                       Text pkgName = pkg::_.autodoc.name << "." << pkg::_.autodoc.version.high
147                                      << "." << pkg::_.autodoc.version.low ;
148                       Set PutName( pkgName, aux )                       
149                     }, { WriteLn( "Empty 2" ), Copy( Empty )} ) }, { WriteLn( "Empty 1" ); Copy( Empty )}  )
150    };
151  } ]
152  #puts $tolScript
153  set result [ toltcl::eval $tolScript -named 1 ]
154  puts "::TolPkg::GetPackageInfoFromOZA END $oza"
155  return $result
156}
157
158
159proc ::TolPkg::GetRepositoryInfo { repo } {
160  set ask "${repo}?action=general_information"
161  set result [ toltcl::eval [ string map [ list %A $ask ] {
162    Set TolPackage::Client::GetRepositoryInfo( "%A" )
163  } ] ]
164  return [ lindex $result 0 ]
165}
166
[633537f]167proc ::TolPkg::AddRepository { url } {
168  set tolexpr [ string map [ list %u $url ] {
169    Real TolPackage::Client::AddRepository( "%u" );
170  } ]
171  toltcl::eval $tolexpr
172}
173
174proc ::TolPkg::ZipInstall { pkg.zip } {
175  puts "::TolPkg::ZipInstall ${pkg.zip}"
176  set tolexpr [ string map [ list %p ${pkg.zip} ] {
177    Real TolPackage::Client::LocalInstallPackage( "%p" )
178  } ]
179  return [ toltcl::eval $tolexpr ]
180}
181
182proc ::TolPkg::RemoteInstall { pkg repo } {
183  puts "::TolPkg::RemoteInstall $pkg $repo"
184  set tolexpr [ string map [ list %p $pkg %r $repo ] {
185    Real TolPackage::Client::RemoteInstall( "%r", "%p", 1 )
186  } ]
187  return [ toltcl::eval $tolexpr ]
188}
189
190proc ::TolPkg::ExportPackage { pkg dest } {
191  puts "::TolPkg::ExportPackage $pkg to $dest"
192  set tolexpr [ string map [ list %p $pkg %d $dest ] {
193    Real TolPackage::Client::LocalExportPackage( "%p", "%d/" )
194  } ]
195  return [ toltcl::eval $tolexpr ]
196}
197
198proc ::TolPkg::CheckPackagesToInstall { pkgs } {
199  set members {}
200  foreach p $pkgs {
201    lappend members \"${p}\"
202  }
203  set tolexpr [ string map [ list %s "\[\[ [ join $members , ] \]\]" ] {
204    Set TolPackage::Client::GetDeepDependencies.all.last( %s );
205  } ]
206  return [ lindex [ toltcl::eval $tolexpr ] 0 ]
207}
208
209proc ::TolPkg::GetUpgradeConfig { } {
210  set tolexpr {
211    Set {
212      [[
213        Real checkTOL = TolConfigManager::Config::Upgrading::TolVersion::CheckAllowed;
214        Real localPKG = TolConfigManager::Config::Upgrading::TolPackage::LocalOnly
215       ]]
216    }
217  }
218  return [ lindex [ toltcl::eval $tolexpr -named 1 ] 1 ]
219}
220
[5b6b63c]221proc ::TolPkg::GetKnownRepositories { } {
222  return [ lindex [ toltcl::eval \
223                        {Set TolConfigManager::Config::Upgrading::TolPackage::Repositories} ] 0 ]
224}
225
226proc ::TolPkg::GetPackagesInfo { } {
227  return [ lindex [ toltcl::eval { Set TolPackage::Client::_.packSyncInfo } ] 0 ]
228}
229
230proc ::TolPkg::test_00 { } {
231  GetRepositoryInfo http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php
232}
233
234proc ::TolPkg::test_01 { } {
235  set oza /home/jsperez/.tol/TolPackage/1.1/Client/DecoTools.1.8/DecoTools.1.8.oza
236  ::TolPkg::GetPackageInfoFromOZA $oza
237}
238
239proc ::TolPkg::test_02 { } {
240  return [ llength [ ::TolPkg::GetLocalPackages ] ]
241}
Note: See TracBrowser for help on using the repository browser.