Changeset 049dc06 in tol


Ignore:
Timestamp:
Nov 17, 2009, 9:07:05 AM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
e8e5f61
Parents:
dc4fc4b
Message:

Putting all code related to packages in an static class BPackage

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

Location:
tol
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • tol/OIS/oisloader.cpp

    rdc4fc4b r049dc06  
    10791079              BText package;
    10801080              Ensure(Read(package,set_));
    1081               LoadRequiredPackage(package);
     1081              BPackage::Load(package);
    10821082            //x.AddRequiredPackage(package);
    10831083            }
  • tol/bbasic/sys.cpp

    rdc4fc4b r049dc06  
    8181#  endif
    8282    BSys::MkDir(tolAppData_+"syslog", true);
    83     BSys::MkDir(tolAppData_+"OIS/Require/tol_pkg/"+TOLVersionShortName(), true);
     83    BSys::MkDir(tolAppData_+"OIS", true);
    8484    BSys::MkDir(tolAppData_+"tests_results",true);
    8585    tolAppData_ = GetStandardAbsolutePath(tolAppData_);
  • tol/bparser/par.cpp

    rdc4fc4b r049dc06  
    11581158    {
    11591159      BText package = scan_->NextArgument();
    1160       LoadRequiredPackage(package);
     1160      BPackage::Load(package);
    11611161    }
    11621162
  • tol/btol/bgrammar/nameblock.cpp

    rdc4fc4b r049dc06  
    102102  owner_    (NULL),
    103103  nonPrivateMembers_(0),
    104   requiredPackages_(NULL)
     104  requiredPackages_(NULL),
     105  doingRebuildFullNameDeep(false)
    105106{
    106107  SetEmptyKey(public_ ,NULL);
    … …  
    124125  owner_    (NULL),
    125126  nonPrivateMembers_(0),
    126   requiredPackages_(NULL)
     127  requiredPackages_(NULL),
     128  doingRebuildFullNameDeep(false)
    127129{
    128130  SetEmptyKey(public_ ,NULL);
    … …  
    146148  owner_    (NULL),
    147149  nonPrivateMembers_(0),
    148   requiredPackages_(NULL)
     150  requiredPackages_(NULL),
     151  doingRebuildFullNameDeep(false)
    149152{
    150153  short isAssigned = BFSMEM_Hndlr->IsAssigned(this,this->_bfsm_PageNum__);
    … …  
    10481051{
    10491052//Std(BText("\n")+"BNameBlock::SelectMembersDeep Exploring NameBlock "+Name());
     1053  if(doingRebuildFullNameDeep)
     1054  { return; }
     1055  doingRebuildFullNameDeep = true;
    10501056  BSyntaxObject* obj;
    10511057  BUserNameBlock* unb;
    … …  
    11031109    }
    11041110  }
     1111  doingRebuildFullNameDeep = false;
    11051112}
    11061113
  • tol/btol/bgrammar/tol_bnameblock.h

    rdc4fc4b r049dc06  
    8686  int level_;
    8787  int nonPrivateMembers_;
     88  bool doingRebuildFullNameDeep;
    8889public:
    8990  static bool Initialize();
  • tol/lang/language.cpp

    rdc4fc4b r049dc06  
    13021302}
    13031303
    1304 //--------------------------------------------------------------------
    1305   BSyntaxObject* LoadRequiredPackage(const BText& package, bool retry)
    1306 //--------------------------------------------------------------------
    1307 {
    1308   static BText help_ = I2(
    1309     "Read information about TOL packages on ",
    1310     "Lea información acerca de los paquetes TOL en ")+
    1311     "https://www.tol-project.org/wiki/TolPkg\n";
     1304BText BPackage::help_ = I2(
     1305  "Read information about TOL packages on ",
     1306  "Lea información acerca de los paquetes TOL en ")+
     1307  "https://www.tol-project.org/wiki/TolPkg\n";
     1308
     1309BText BPackage::localRoot_ =
     1310  BSys::TolAppData()+"OIS/Require/tol_pkg/"+
     1311  TOLVersionShortName()+"/";
     1312
     1313BText BPackage::urlRoot_ =
     1314  BText("http://packages.tol-project.org/tol_pkg/")+
     1315  TOLVersionShortName()+"/";
     1316
     1317//--------------------------------------------------------------------
     1318  BText BPackage::LocalPath(const BText& package)
     1319//--------------------------------------------------------------------
     1320{
     1321  BText path = localRoot_+package+".oza";
     1322  return(path);
     1323}
     1324
     1325//--------------------------------------------------------------------
     1326  BText BPackage::Url(const BText& package)
     1327//--------------------------------------------------------------------
     1328{
     1329  BText url = urlRoot_+package+".oza";
     1330  return(url); 
     1331}
     1332
     1333//--------------------------------------------------------------------
     1334  bool BPackage::CleanLocal(const BText& package)
     1335//--------------------------------------------------------------------
     1336{
     1337  return(BSys::Remove(LocalPath(package))); 
     1338}
     1339
     1340//--------------------------------------------------------------------
     1341  bool BPackage::Install(const BText& package)
     1342//--------------------------------------------------------------------
     1343{
     1344  BText path = LocalPath(package);
     1345  BText url = Url(package);
     1346  BSys::MkDir(localRoot_,true);
     1347  BText order = BText("wget ")+
     1348    url+" "+
     1349    "-O\""+ReplaceSlash(path)+"\"";
     1350  Std(I2("Installing required package ",
     1351         "Instalando el paquete requerido ")+package+"\n"+order+"\n");
     1352  #ifdef UNIX
     1353  system(order);
     1354  #else
     1355  BSys::WinSystem(order,0,true);
     1356  #endif
     1357  BDir dir = path;
     1358  bool ok = true;
     1359  if(!dir.Exist() || !dir.IsFile() || !dir.Bytes())
     1360  {
     1361    ok = false;
     1362    Error(I2("Cannot install empty package ",
     1363             "No se puede instalar el paquete vacío ")+
     1364          package+"\n"+help_);
     1365  }
     1366  return(ok); 
     1367}
     1368
     1369//--------------------------------------------------------------------
     1370  BSyntaxObject* BPackage::Load(const BText& package, bool retry)
     1371//--------------------------------------------------------------------
     1372{
    13121373  BSyntaxObject* pkg = GraNameBlock()->FindOperand(package,false);
    1313   BText path = BSys::TolAppData()+"OIS/Require/tol_pkg/"+
    1314     TOLVersionShortName()+"/"+package+".oza";
     1374  bool ok = pkg!=NULL;
     1375  BText path = LocalPath(package);
    13151376  BDir dir = path;
    1316   BText url = BText("http://packages.tol-project.org/tol_pkg/")+
    1317         TOLVersionShortName()+"/"+package+".oza";
    1318   if(!pkg)
     1377  if(!ok)
    13191378  {
    13201379    if(!dir.Exist())
    13211380    {
    1322  
    1323       BText order = BText("wget ")+
    1324         url+" "+
    1325         "-O\""+ReplaceSlash(path)+"\"";
    1326       Std(I2("Installing required package ",
    1327              "Instalando el paquete requerido ")+package+"\n"+order+"\n");
    1328       #ifdef UNIX
    1329       system(order);
    1330       #else
    1331       BSys::WinSystem(order,0,true);
    1332       #endif
    1333       dir = path;
    1334     }
    1335     if(dir.Exist() && dir.IsFile())
    1336     {
    1337       if(!dir.Bytes())
    1338       {
    1339         Error(I2("Cannot install empty package ",
    1340                  "No se puede instalar el paquete vacío ")+
    1341               package+"\n"+help_);
    1342       }
    1343       else
    1344       {   
    1345         int oldLevel = BGrammar::Level();
    1346         BGrammar::PutLevel(0);
    1347         BSyntaxObject* aux = BOisLoader::LoadFull(path);
    1348         if(aux && (aux->Grammar()==GraSet()))
    1349         {
    1350           BSet& set = Set(aux);
    1351           if((set.Card()==1)&&(set[1]->Grammar()==GraNameBlock()))
    1352           {
    1353             pkg = set[1];
    1354             pkg->IncNRefs();
    1355             pkg->IncNRefs();
    1356           }
     1381      ok = Install(package);
     1382    }
     1383    if(ok)
     1384    {
     1385      int oldLevel = BGrammar::Level();
     1386      BGrammar::PutLevel(0);
     1387      BSyntaxObject* aux = BOisLoader::LoadFull(path);
     1388      if(aux && (aux->Grammar()==GraSet()))
     1389      {
     1390        BSet& set = Set(aux);
     1391        if((set.Card()==1)&&(set[1]->Grammar()==GraNameBlock()))
     1392        {
     1393          pkg = set[1];
     1394          pkg->IncNRefs();
     1395          pkg->IncNRefs();
     1396          BNameBlock::AddGlobalRequiredPackage(package);
    13571397        }
    1358         BGrammar::PutLevel(oldLevel);
    1359       }
     1398      }     
     1399      BGrammar::PutLevel(oldLevel);
     1400      ok = pkg!=NULL;
    13601401    }
    13611402  }
    1362   BText ok = I2("Loaded","Ha sido cargado");
     1403  BText load = I2("Loaded","Ha sido cargado");
    13631404  BText help = "";
    1364   if(!pkg)
    1365   {
     1405  if(!ok)
     1406  {
     1407    BText path = LocalPath(package);
     1408    BText url = Url(package);
    13661409    if(dir.Exist())
    13671410    {
    … …  
    13761419                 "y será reinstalado desde ")+
    13771420              url);
    1378         return(LoadRequiredPackage(package, false));
     1421        return(Load(package, false));
    13791422      }
    13801423      else
    … …  
    13881431      } 
    13891432    }
    1390     ok = I2("NOT loaded","No ha sido cargado");
     1433    load = I2("NOT loaded","No ha sido cargado");
    13911434    help = help_;
    13921435  }
    1393   Std(ok+I2(" package ", " el paquete ")+package+"\n"+help);
     1436  Std(load+I2(" package ", " el paquete ")+package+"\n"+help);
    13941437  if(pkg)
    13951438  {
    1396     BNameBlock::AddGlobalRequiredPackage(package);
    13971439    BUserNameBlock* nbBuilding = BNameBlock::Building();
    13981440    if(nbBuilding)
    … …  
    14031445  return(pkg);
    14041446}
     1447
  • tol/lang/tol_blanguag.h

    rdc4fc4b r049dc06  
    7070TOL_API void StopFlagOff();
    7171TOL_API bool StopFlag();
    72 TOL_API BSyntaxObject* LoadRequiredPackage(const BText& package, bool retry=false);
     72
     73//--------------------------------------------------------------------
     74class TOL_API BPackage
     75//--------------------------------------------------------------------
     76{
     77private:
     78  static BText help_;
     79  static BText localRoot_;
     80  static BText urlRoot_;
     81public:
     82  static BText LocalPath(const BText& package);
     83  static BText Url(const BText& package);
     84  static bool CleanLocal(const BText& package);
     85  static bool Install(const BText& package);
     86  static bool Upgrade(const BText& package);
     87  static BSyntaxObject* Load(const BText& package, bool retry=false);
     88};
    7389
    7490BDate TsrFirstDate(BSyntaxObject* obj);
Note: See TracChangeset for help on using the changeset viewer.