Changeset d89e153 in tol


Ignore:
Timestamp:
Feb 23, 2011, 5:35:50 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
fef69e3
Parents:
9b57f60f
Message:

Fixes #1109

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

Location:
tol
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • tol/OIS/oisloader.cpp

    r9b57f60f rd89e153  
    11461146              BText package;
    11471147              Ensure(Read(package,set_));
    1148               BPackage::Load(package);
     1148              BPackage::Load(package,true);
    11491149            //x.AddRequiredPackage(package);
    11501150            }
  • tol/bparser/par.cpp

    r9b57f60f rd89e153  
    11931193    {
    11941194      BText package = scan_->NextArgument();
    1195       BPackage::Load(package);
     1195      BPackage::Load(package,true);
    11961196    }
    11971197
  • tol/lang/language.cpp

    r9b57f60f rd89e153  
    13801380
    13811381//--------------------------------------------------------------------
     1382  BText LocalLastCompatible(const BText& package)
     1383//--------------------------------------------------------------------
     1384{
     1385  BSyntaxObject* lcv = GraText()->EvaluateExpr(BText(
     1386    "Text TolPackage::Client::LocalLastCompatible("
     1387    "\"")+package+"\");");
     1388  if(!lcv) { return(""); }
     1389  BText package_version = Text(lcv);
     1390  if(package_version=="") { package_version = package; }
     1391  //Std(BText("\nTRACE BPackage::Load 2.2.1 package='")+package_version+"'");
     1392  //Std(BText("\nTRACE BPackage::Load 2.2.2 package_version='")+package_version+"'");
     1393  DESTROY(lcv);
     1394  return(package_version);
     1395};
     1396
     1397//--------------------------------------------------------------------
    13821398  BSyntaxObject* BPackage::Load(
    13831399    const BText& package_version_,
    … …  
    13891405//Std(BText("\nTRACE BPackage::Load 1 package_version='")+package_version+"'");
    13901406  int point = package_version.Find(".",1);
    1391   if(point>=0)
     1407  int point2 = package_version.Find(".",point+1);
     1408  if(point>=0 && point2>=0)
    13921409  {
    13931410    package = package_version.SubString(0,point-1);
    1394   //Std(BText("\nTRACE BPackage::Load 2.1 package='")+package+"'");
     1411  }
     1412  else if(point>=0 && point2<0)
     1413  {
     1414    package = package_version.SubString(0,point-1);
     1415    package_version = LocalLastCompatible(package_version);
     1416    point2 = package_version.Find(".",point+1);
    13951417  }
    13961418  else
    13971419  {
    13981420    package = package_version;
    1399     BSyntaxObject* lcv = GraText()->EvaluateExpr(BText(
    1400       "Text TolPackage::Client::LocalLastCompatible("
    1401       "\"")+package+"\");");
    1402     if(!lcv) { return(false); }
    1403     package_version = Text(lcv);
    1404     if(package_version=="") { package_version = package; }
    1405   //Std(BText("\nTRACE BPackage::Load 2.2.1 package='")+package_version+"'");
    1406   //Std(BText("\nTRACE BPackage::Load 2.2.2 package_version='")+package_version+"'");
    1407     DESTROY(lcv);
     1421    package_version = LocalLastCompatible(package);
    14081422  }
    14091423  BSyntaxObject* pkg = GraNameBlock()->FindOperand(package,false);
    1410   BText path = LocalPath(package_version);
     1424  BText path = (point2>=0)?LocalPath(package_version):"";
    14111425//Std(BText("\nTRACE BPackage::Load 3 path='")+path+"'");
    1412   BDir dirPath = path;
     1426  BDir dirPath(":::");
     1427  if(path.HasName()) { dirPath = path; }
    14131428
    14141429  bool ok = pkg!=NULL;
    … …  
    14221437  {
    14231438    ok=dirPath.Exist()!=0;
    1424     if(!ok)
     1439    if(!ok & path.HasName())
    14251440    {
    14261441      BDir zipPath = path+".zip";
    … …  
    14311446        zip.DirExtract("*",dirPath.Name());
    14321447        zip.Close();
    1433       }
    1434       ok=dirPath.Exist()!=0;
     1448        dirPath = path; 
     1449      }
     1450      ok = dirPath.Exist();
    14351451    }
    14361452  //Std(BText("\nTRACE BPackage::Load 4 ok=")+ok);
    1437     if(!ok)
     1453    if(!ok && retry)
    14381454    {
    14391455      ok = Install(package_version);
     1456      package_version = LocalLastCompatible(package_version);
    14401457    //Std(BText("\nTRACE BPackage::Load 5 ok=")+ok);
    1441       if(ok) { return(BPackage::Load(package_version_, false)); }
     1458      if(ok) { return(BPackage::Load(package_version, false)); }
    14421459    }
    14431460    if(ok)
    … …  
    14741491  {
    14751492  //Std(BText("\nTRACE BPackage::Load 12 dirPath='")+dirPath.Name()+"'");
     1493    if(path.HasName()) { dirPath = path; }
    14761494    if(!dirPath.Exist())
    14771495    {
  • tol/stdlib/general/TolPackage/client.tol

    r9b57f60f rd89e153  
    233233//////////////////////////////////////////////////////////////////////////////
    234234{
     235//WriteLn("TRACE [GetMinTolVersionForPackage] 1 package='"<<package+"'");
     236  If(!ChecktolProjectPing(?), "", {
     237//WriteLn("TRACE [GetMinTolVersionForPackage] 2");
     238  Set repositories =
     239    TolConfigManager::Config::Upgrading::TolPackage::Repositories;
     240  Real K = Card(repositories);
     241  Real k = 1;
     242  Text found = "";
     243//WriteLn("TRACE [GetMinTolVersionForPackage] 3 K="<<K);
     244  While(And(found=="", k<=K),
     245  {
     246  //WriteLn("TRACE [GetMinTolVersionForPackage] 4 repositories["<<k+"]="<<repositories[k]);
     247    Set pkgLst = GetRepositoryInfo(repositories[k]+"?"
     248      "action=versions&limit=1&"+
     249      "package="+package);
     250  //WriteLn("TRACE [GetMinTolVersionForPackage] 5 pkgInfo="<<pkgInfo);
     251  //WriteLn("TRACE [GetMinTolVersionForPackage] 6 pkgLst="<<pkgLst);
     252  //WriteLn("TRACE [GetMinTolVersionForPackage] 7 Card(pkgLst)="<<Card(pkgLst));
     253    Text If(Card(pkgLst)>0, found := pkgLst[1]->te_min_tol_version);
     254    Real k := k+1
     255  });
     256  found
     257})};
     258
     259//////////////////////////////////////////////////////////////////////////////
     260Text _.autodoc.member.RemoteFindRepository =
     261"Devuelve el repositorio al que pertenece un paquete dado de entre aquellos "
     262"repositorios dados de alta en : \n"
     263"  Set TolConfigManager::Config::Upgrading::TolPackage::Repositories\n"
     264"Si no se encuentra el paquete en ninguno de ellos se devuelve la cadena "
     265"vacía.";
     266Text RemoteFindRepository(Text package)
     267//////////////////////////////////////////////////////////////////////////////
     268{
    235269//WriteLn("TRACE [RemoteFindRepository] 1 package='"<<package+"'");
    236270  If(!ChecktolProjectPing(?), "", {
    … …  
    246280  //WriteLn("TRACE [RemoteFindRepository] 4 repositories["<<k+"]="<<repositories[k]);
    247281    Set pkgLst = GetRepositoryInfo(repositories[k]+"?"
    248       "action=versions&limit=1&"+
    249       "package="+package);
    250   //WriteLn("TRACE [RemoteFindRepository] 5 pkgInfo="<<pkgInfo);
    251   //WriteLn("TRACE [RemoteFindRepository] 6 pkgLst="<<pkgLst);
    252   //WriteLn("TRACE [RemoteFindRepository] 7 Card(pkgLst)="<<Card(pkgLst));
    253     Text If(Card(pkgLst)>0, found := pkgLst[1]->te_min_tol_version);
    254     Real k := k+1
    255   });
    256   found
    257 })};
    258 
    259 //////////////////////////////////////////////////////////////////////////////
    260 Text _.autodoc.member.RemoteFindRepository =
    261 "Devuelve el repositorio al que pertenece un paquete dado de entre aquellos "
    262 "repositorios dados de alta en : \n"
    263 "  Set TolConfigManager::Config::Upgrading::TolPackage::Repositories\n"
    264 "Si no se encuentra el paquete en ninguno de ellos se devuelve la cadena "
    265 "vacía.";
    266 Text RemoteFindRepository(Text package)
    267 //////////////////////////////////////////////////////////////////////////////
    268 {
    269 //WriteLn("TRACE [RemoteFindRepository] 1 package='"<<package+"'");
    270   If(!ChecktolProjectPing(?), "", {
    271 //WriteLn("TRACE [RemoteFindRepository] 2");
    272   Set repositories =
    273     TolConfigManager::Config::Upgrading::TolPackage::Repositories;
    274   Real K = Card(repositories);
    275   Real k = 1;
    276   Text found = "";
    277 //WriteLn("TRACE [RemoteFindRepository] 3 K="<<K);
    278   While(And(found=="", k<=K),
    279   {
    280   //WriteLn("TRACE [RemoteFindRepository] 4 repositories["<<k+"]="<<repositories[k]);
    281     Set pkgLst = GetRepositoryInfo(repositories[k]+"?"
    282282      "action=versions&limit=1&"+"package="+package+"&"+min_tol_version_cond);
    283   //WriteLn("TRACE [RemoteFindRepository] 5 pkgInfo="<<pkgInfo);
    284283  //WriteLn("TRACE [RemoteFindRepository] 6 pkgLst="<<pkgLst);
    285284  //WriteLn("TRACE [RemoteFindRepository] 7 Card(pkgLst)="<<Card(pkgLst));
    … …  
    324323  If(!ChecktolProjectPing(?), 0, {
    325324  Real OSDirMake(localRoot);
    326 //WriteLn("TRACE [RemoteInstallPackage] 1 repository='"<<repository+"'");
    327   Text package.version = package;
     325//WriteLn("TRACE [DownloadPackage] 1 repository='"<<repository+"'");
    328326  Real ok = True;
    329   Text If(TextFind(package,"."),
    330   {
    331     Text package := Tokenizer(package.version,".")[1]
    332   },
    333   {
    334     Set pkgLst = GetRepositoryInfo(repository+"?"
    335       "action=versions&limit=1&"+
    336       "package="+package+"&"+
    337       min_tol_version_cond);
    338     If(!Card(pkgLst),
    339     {
    340       Real ok := False;
    341       ""
    342     },
    343     {
    344       Text package.version := pkgLst[1]->co_name_version
    345     })
     327  Text package.orig = package;
     328  Set pkg.tok = Tokenizer(package,".");
     329  Real pkg.tok.num = Card(pkg.tok );
     330  Text package := pkg.tok[1];
     331  Text package.version = Case(
     332    pkg.tok.num==3, pkg.tok[1]+"."+pkg.tok[2]+"."+pkg.tok[3],
     333    pkg.tok.num==2, pkg.tok[1]+"."+pkg.tok[2],
     334    pkg.tok.num==1, pkg.tok[1]);
     335  Set pkgLst = GetRepositoryInfo(repository+"?"
     336    "action=versions&limit=1&"+
     337    "package="+package.version+"&"+
     338    min_tol_version_cond);
     339  Real ok := Card(pkgLst);
     340  Text If(ok,
     341  {
     342    Text package.version := pkgLst[1]->co_name_version
    346343  });
    347344  If(!ok, 0, {
    348 //WriteLn("TRACE [RemoteInstallPackage] 2 package='"<<package+"'");
    349 //WriteLn("TRACE [RemoteInstallPackage] 3 package.version='"<<package.version+"'");
     345//WriteLn("TRACE [DownloadPackage] 2.1 package.orig='"<<package.orig+"'");
     346//WriteLn("TRACE [DownloadPackage] 2.2 package='"<<package+"'");
     347//WriteLn("TRACE [DownloadPackage] 2.3 package.version='"<<package.version+"'");
    350348
    351349  Text pack = package.version+".zip";
    … …  
    359357    "format=base64&"+
    360358    "package="+package.version);
    361 //WriteLn("TRACE [RemoteInstallPackage] 4 encoded='"<<encoded+"'");
     359//WriteLn("TRACE [DownloadPackage] 3 encoded='"<<encoded+"'");
    362360  Real DecodeBase64ToFile(localPack, encoded);
    363361  If(!FileExist(localPack), False,
Note: See TracChangeset for help on using the changeset viewer.