Changeset e83ccac in tol


Ignore:
Timestamp:
Dec 22, 2011, 4:53:49 PM (15 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
e4c69c1
Parents:
6232734
Message:

refs 1191

  • Se lee la información de los paquetes instalados desde info.oza.
  • Se adapta el interfaz a la nueva estructura de información
  • El estado de los paquetes se muestra dependiendo de la información sincronizada con el servidor "SyncInfo"
  • Se añaden opciones para importar/exportar los archivos SyncInfo

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

Location:
tolbase/lib/toltk
Files:
2 edited

Legend:

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

    r6232734 re83ccac  
    4040  set localRoot [ file normalize \
    4141                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
    42   set ozaSyncInfo [ file join $localRoot "Client/PackSyncInfo.oza" ]
    43   set tolScript [ string map [ list "%O" $ozaSyncInfo ] {
     42  set oza [ file join $localRoot "Client/PackSyncInfo.oza" ]
     43  if { ![ file exists $oza ] || ![ file readable $oza ] } {
     44    return {}
     45  }
     46  set tolScript [ string map [ list "%O" $oza ] {
    4447    Set { Ois.Load( "%O" )[1] }
    4548  } ]
    … …  
    7881  set localRoot [ file normalize \
    7982                      [ toltcl::eval { Text TolPackage::_.localRoot } ] ]
    80   set ozaSyncInfo [ file join $localRoot "Client/VersSyncInfo.oza" ]
    81   set tolScript [ string map [ list "%O" $ozaSyncInfo ] {
     83  set oza [ file join $localRoot "Client/VersSyncInfo.oza" ]
     84  if { ![ file exists $oza ] || ![ file readable $oza ] } {
     85    return {}
     86  }
     87  set tolScript [ string map [ list "%O" $oza ] {
    8288    Set { Ois.Load( "%O" )[1] }
    8389  } ]
    … …  
    109115  set pkgsInfo {}
    110116  foreach d $dirs {
    111     set check [ file join $clientRoot $d ${d}.oza ]
    112     if { [ file exists $check ] } {
    113       lappend pkgsInfo [ GetPackageInfoFromOZA $check ]
    114     }
     117    lappend pkgsInfo [ list $d [ GetLocalPackageInfo $d ] ]
    115118  }
    116119  return $pkgsInfo
     120}
     121
     122proc ::TolPkg::GetLocalPackageInfo { p } {
     123  set tolScript [ string map [ list %p $p ] {
     124    Set TolPackage::Client::LocalInfo( "%p" );
     125  } ]
     126  return [ lindex [ toltcl::eval $tolScript -named 1 ] 1 ]
    117127}
    118128
  • tolbase/lib/toltk/tolpkg_gui.tcl

    r6232734 re83ccac  
    1313  variable urlmap
    1414 
    15   variable localPackageInfo
     15  variable packSyncInfo
     16  variable versSyncInfo
    1617  variable localVersionInfo
     18  variable localMostRecent
     19
    1720  variable nodesInfo
    18 
    19   variable localSortedNames
    2021  variable treeParents
    2122
    … …  
    631632}
    632633
     634proc ::TolPkgGUI::ReadPackSyncInfo { } {
     635  variable packSyncInfo
     636
     637  array unset packSyncInfo
     638  foreach p [ ::TolPkg::GetPkgSyncInfo ] {
     639    array set packSyncInfo $p
     640  }
     641}
     642
     643proc ::TolPkgGUI::ReadVersSyncInfo { } {
     644  variable versSyncInfo
     645
     646  array unset versSyncInfo
     647  foreach p [ ::TolPkg::GetVersSyncInfo ] {
     648    array set versSyncInfo $p
     649  }
     650}
     651
     652proc ::TolPkgGUI::ReadLocalVersionInfo { } {
     653  variable localVersionInfo
     654
     655  array unset localVersionInfo
     656  foreach pv [ ::TolPkg::GetLocalPackages ] {
     657    array set localVersionInfo $pv
     658  }
     659}
     660
     661proc ::TolPkgGUI::GetPkgNode { T repo p } {
     662  variable treeParents
     663  variable nodesInfo
     664  variable packSyncInfo
     665
     666  if { [ info exists treeParents($p) ] } {
     667    return treeParents($p)
     668  }
     669  if { ![ info exists treeParents($repo) ] } {
     670    set treeParents($repo) [ $T insert [ list [ list database_1_16 $repo ] "" ] \
     671                                    -at end -relative root \
     672                                    -button auto ]
     673    set nodesInfo($treeParents($repo),type) repo
     674  }
     675  if { [ info exists packSyncInfo($p) ] } {
     676    array set packSync $packSyncInfo($p)
     677    set lastlocal $packSync(lastlocal)
     678    set lastremote $packSync(lastremote)
     679    if { $lastlocal eq "" } {
     680      set img "package_down_16"
     681      set nodeStatus new
     682      set statusLabel "new ($lastremote)"
     683    } else {
     684      set idx [ CmpVersion $lastremote $lastlocal ]
     685      if { $idx <= 0 } {
     686        # could be -1 (because of date error)
     687        set img "cdr_tick_16"
     688        set nodeStatus ok
     689        set statusLabel "ok"
     690      } else {
     691        puts "$lastremote > $lastlocal"
     692        set img "software_update_16"
     693        set nodeStatus upgrade
     694        set statusLabel "upgrade ($lastremote)"
     695      }
     696    }
     697  } else {
     698    set img ""
     699    set nodeStatus unknown
     700    set statusLabel "unknown"
     701 }
     702  set treeParents($p) [ $T insert [ list [ list $img $p ] [ list $statusLabel ] ] \
     703                            -at end -relative $treeParents($repo) \
     704                            -button auto ]
     705  set nodesInfo($treeParents($p),type) pkg
     706  set nodesInfo($treeParents($p),status) $nodeStatus
     707}
     708
    633709proc ::TolPkgGUI::FillTreeInfo { T } {
    634   variable localPackageInfo
     710  variable packSyncInfo
     711  variable versSyncInfo
    635712  variable localVersionInfo
    636713  variable treeParents
    637714  variable nodesInfo
     715  variable localMostRecent
     716
     717  array unset treeParents
     718  array unset nodesInfo
     719  ReadPackSyncInfo
     720  ReadVersSyncInfo
     721  ReadLocalVersionInfo
    638722
    639723  $T configure -table no -filter yes -columns {
    640724    { {image text} -tags NAME -label "Name" }
    641   }
    642 
    643   foreach p [ ::TolPkg::GetPkgSyncInfo ] {
    644     array set localPackageInfo $p
    645   }
    646   array unset treeParents
    647   array unset nodesInfo
     725    { {text} -tags STATUS -label "Status" }
     726  }
     727
    648728  # insert package information
    649   foreach p [ array names localPackageInfo ] {
    650     array set pkg $localPackageInfo($p)
    651     set pkgRepo [ expr { [ string range $pkg(url) end-13 end ] eq "repository.php" ?
    652                          $pkg(url) : "$pkg(url)repository.php" } ]
    653     if { ![ info exists treeParents($p) ] } {
    654       if { ![ info exists treeParents($pkgRepo) ] } {
    655         set treeParents($pkgRepo) [ $T insert [ list [ list database_1_16 $pkgRepo ] ] \
    656                                         -at end -relative root \
    657                                         -button auto ]
    658         set nodesInfo($treeParents($pkgRepo),type) repo
    659       }
    660       set lastremote $pkg(lastremote)
    661       set lastlocal $pkg(lastlocal)
    662       if { $lastlocal eq "" } {
     729  foreach p [ lsort [ array names packSyncInfo ] ] {
     730    array unset pkg
     731    array set pkg $packSyncInfo($p)
     732    set url $pkg(url)
     733    set pkgRepo [ expr { [ string range $url end-13 end ] eq "repository.php" ?
     734                         $url : "${url}repository.php" } ]
     735    GetPkgNode $T $pkgRepo $p
     736  }
     737 
     738  set localVersionNames [ lsort -decreasing -command ::TolPkgGUI::CmpVersion \
     739                              [ array names localVersionInfo ] ]
     740
     741  array unset localMostRecent
     742  # insert version information
     743  foreach pv $localVersionNames {
     744    array unset pkg
     745    array set pkg $localVersionInfo($pv)
     746    set pkgRoot [ lindex [ split $pv . ] 0 ]
     747    set url $pkg(_.autodoc.url)
     748    set pkgRepo [ expr { [ string range $url end-13 end ] eq "repository.php" ?
     749                         $url : "${url}repository.php" } ]
     750    GetPkgNode $T $pkgRepo $pkgRoot
     751
     752    if { ![ info exists localMostRecent($pkgRoot) ] } {
     753      # will be used in contextual menu
     754      set localMostRecent($pkgRoot) $pv
     755    }
     756    if { [ info exists versSyncInfo($pv) ] } {
     757      array set versSync $versSyncInfo($pv)
     758      set dateremote $versSync(dateremote)
     759      set datelocal $versSync(datelocal)
     760      if { $datelocal eq "TheBegin" } {
    663761        set img "package_down_16"
    664762        set nodeStatus new
     763        set statusLabel "new"
    665764      } else {
    666         set idx [ CmpVersion $lastremote $lastlocal ]
     765        set idx [ string compare $dateremote $datelocal ]
    667766        if { $idx <= 0 } {
    668767          # could be -1 (because of date error)
    669768          set img "cdr_tick_16"
    670769          set nodeStatus ok
     770          set statusLabel "ok"
    671771        } else {
    672772          set img "software_update_16"
    673           set nodeStatus upgrade
     773          set nodeStatus update
     774          set statusLabel "outdated"
    674775        }
    675776      }
    676       set treeParents($p) [ $T insert [ list [ list $img $p ] ] \
    677                                 -at end -relative $treeParents($pkgRepo) \
    678                                 -button auto ]
    679       set nodesInfo($treeParents($p),type) pkg
    680       set nodesInfo($treeParents($p),status) $nodeStatus
    681     }
    682   }
    683   foreach pv [ ::TolPkg::GetVersSyncInfo ] {
    684     array set localVersionInfo $pv
    685   }
    686   set localVersionNames [ lsort -decreasing -command ::TolPkgGUI::CmpVersion \
    687                               [ array names localVersionInfo ] ]
    688   # insert version information
    689   array unset pkg
    690   foreach pv $localVersionNames {
    691     array set pkg $localVersionInfo($pv)
    692     set pkgRoot $pkg(name)
    693     set pkgRepo [ expr { [ string range $pkg(url) end-13 end ] eq "repository.php" ?
    694                          $pkg(url) : "$pkg(url)repository.php" } ]
    695     if { ![ info exists treeParents($pkgRoot) ] } {
    696       puts "package root '$pkgRoot' must be already created, creating ..."
    697       if { ![ info exists treeParents($pkgRepo) ] } {
    698         puts "repository root '$pkgRepo' must be already created, creating ..."
    699         set treeParents($pkgRepo) [ $T insert [ list [ list database_1_16 $pkgRepo ] ] \
    700                                         -at end -relative root -button auto ]
    701         set nodesInfo($treeParents($pkgRepo),type) repo
    702       }
    703       set treeParents($pkgRoot) [ $T insert [ list [ list {} $pkgRoot ] ] \
    704                                       -at end -relative $treeParents($pkgRepo) \
    705                                       -button auto ]
    706       set nodesInfo($treeParents($pkgRoot),type) pkg
    707     }
    708     set dateremote $pkg(dateremote)
    709     set datelocal $pkg(datelocal)
    710     if { $datelocal eq "TheBegin" } {
    711       set img "package_down_16"
    712       set nodeStatus new
    713777    } else {
    714       set idx [ string compare $dateremote $datelocal ]
    715       if { $idx <= 0 } {
    716         # could be -1 (because of date error)
    717         set img "cdr_tick_16"
    718         set nodeStatus ok
    719       } else {
    720         set img "software_update_16"
    721         set nodeStatus update
    722       }
    723     }
    724     set nid [ $T insert [ list [ list $img $pv ] ] \
     778      set img ""
     779      set nodeStatus unknown
     780    }
     781    set nid [ $T insert [ list [ list $img $pv ] [ list $statusLabel ] ] \
    725782                  -at end -relative $treeParents($pkgRoot) -button auto ]
    726783    set nodesInfo($nid,type) pkgver
    727784    set nodesInfo($nid,status) $nodeStatus
    728     foreach d $pkg(dependencies) {
    729       set nid [ $T insert [ list [ list back_to_ou_16 $d ] ] \
     785    foreach {{} d} $pkg(_.autodoc.dependencies) {
     786      set _nid [ $T insert [ list [ list back_to_ou_16 $d ] ] \
    730787                    -at end -relative $nid -button no ]
    731       set nodesInfo($nid,type) pkgdep
     788      set nodesInfo($_nid,type) pkgdep
    732789    }
    733790  }
    … …  
    856913proc ::TolPkgGUI::PostContextMenu { T w } {
    857914  variable nodesInfo
    858   variable localPackageInfo
     915  variable packSyncInfo
     916  variable versSyncInfo
    859917  variable localVersionInfo
     918  variable localMostRecent
    860919
    861920  $w delete 0 end
    … …  
    868927    lappend selectionInfo($nodesInfo($nid,type)) $nid
    869928  }
    870   $w add command  -label "[ mc {Add New} ]..." \
     929  $w add command  -label "[ mc {Add New Repository} ]..." \
    871930      -command ::TolPkgGUI::AddNewRepository
    872931  set lenRepo [ llength $selectionInfo(repo) ]
    … …  
    902961    set pkg [ $T item text $nid 0 ]
    903962    array unset pkgInfo
    904     array set pkgInfo $localPackageInfo($pkg)
     963    if { [ info exists packSyncInfo($pkg) ] } {
     964      array set pkgInfo $packSyncInfo($pkg)
     965    } else {
     966      set pkgInfo(lastremote) $localMostRecent($pkg)
     967    }
    905968    switch -exact $nodesInfo($nid,status) {
    906969      "new" {
    … …  
    911974      }
    912975      "ok" {
     976      }
     977      "unknown" {
    913978      }
    914979      default {
    … …  
    9811046  $w add command -label [ mc "Export all" ] \
    9821047      -command [ list ::TolPkgGUI::ExportPackageVersion ]
     1048  # SyncInfo import/export
     1049  $w add separator
     1050  $w add command -label [ mc "Import SyncInfo" ]... \
     1051      -command [ list ::TolPkgGUI::ImportSyncInfo ]
     1052  $w add command -label [ mc "Export SyncInfo" ]... \
     1053      -command [ list ::TolPkgGUI::ExportSyncInfo ]
     1054 
    9831055}
    9841056
    … …  
    9901062
    9911063proc ::TolPkgGUI::SyncServers { } {
     1064  ::TolPkg::UpdateRepositoryInfo
    9921065}
    9931066
    … …  
    10041077}
    10051078
     1079proc ::TolPkgGUI::ImportSyncInfo { } {
     1080}
     1081
     1082proc ::TolPkgGUI::ExportSyncInfo { } {
     1083}
     1084
     1085##
     1086# Export packages --
     1087#
     1088# p == "" then the last installed version of every package is
     1089# exported,
     1090#
     1091# [ llength $p ]>0 then all specified package is exported, if some
     1092# packages is not installed then it is requested from the remote
     1093# repository.
     1094#
    10061095proc ::TolPkgGUI::ExportPackageVersion { {p ""} } {
     1096 
    10071097}
    10081098
Note: See TracChangeset for help on using the changeset viewer.