Changeset 0db54a1 in tol


Ignore:
Timestamp:
Jan 11, 2012, 9:41:17 AM (15 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
455a6d5
Parents:
6b78409
Message:

refs #1191, limpiamos el paquete antes de instalar para que info.oza se actualice correctamente, se crea un backup que se restaura en caso de error

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tolbase/lib/toltk/tolpkg.tcl

    r6b78409 r0db54a1  
    23239 -- y2011m11d26h15i11s00.000
    242410 -- 1154572
     25}
     26
     27proc ::TolPkg::GetPkgDirectory { p } {
     28  set localRoot [ file normalize \
     29                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
     30  return [ file join $localRoot "Client" $p ]
     31}
     32
     33proc ::TolPkg::BackupPackage { p {delete 0}} {
     34  set path [ GetPkgDirectory $p ]
     35  if { [ file exists $path ] } {
     36    set bak "${path}.bak"
     37    set op [ expr { $delete ? "rename" : "copy" } ]
     38    puts "file $op -force $path $bak"
     39    return [ file $op -force $path $bak ]
     40  } else {
     41    return 0
     42  }
     43}
     44
     45proc ::TolPkg::RestoreBackup { p { delete 0 } } {
     46  set path [ GetPkgDirectory $p ]
     47  set bak "${path}.bak"
     48  if { [ file exists $bak ] } {
     49    set op [ expr { $delete ? "rename" : "copy" } ]
     50    return [ file $op -force $bak $path ]
     51  } else {
     52    return 0
     53  }
     54}
     55
     56proc ::TolPkg::DeleteBackup { p } {
     57  set path [ GetPkgDirectory $p ]
     58  set bak "${path}.bak"
     59  return [ file delete -force $bak ]
    2560}
    2661
    … …  
    182217proc ::TolPkg::RemoteInstall { pkg repo } {
    183218  puts "::TolPkg::RemoteInstall $pkg $repo"
     219  BackupPackage $pkg 1
    184220  set tolexpr [ string map [ list %p $pkg %r $repo ] {
    185221    Real TolPackage::Client::RemoteInstall( "%r", "%p", 1 )
    186222  } ]
    187   return [ toltcl::eval $tolexpr ]
     223  set result [ toltcl::eval $tolexpr ]
     224  if { [ string is boolean $result ] && $result } {
     225    DeleteBackup $pkg
     226  } else {
     227    RestoreBackup $pkg
     228  }
     229  return $result
    188230}
    189231
Note: See TracChangeset for help on using the changeset viewer.