Changeset 461


Ignore:
Timestamp:
Jun 24, 2008, 5:36:34 PM (16 years ago)
Author:
rybkin
Message:

See C.L. 362

Location:
CMT/HEAD
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/ChangeLog

    r460 r461  
     12008-06-24    <rybkin@lal.in2p3.fr> 362
     2       
     3        * source/cmt_use.h: In the Package class, declare get_version_file_name ()
     4        to return "version.cmt", and get_version () to retrieve the package version
     5        when structuring style used is `without_version_directory' by checking:
     6        1) the get_version_file_name () file if available (and readable)
     7        2) version statement in the package requirements file
     8        * source/cmt_use.cxx: Implement and systematically use the
     9        get_version_file_name (), and get_version () functions
     10        * source/cmt_parser.cxx: Systematically use the implemented functions
     11        * source/cmt_awk.cxx: idem
     12        * source/cmt_cvs.cxx: idem
     13       
    1142008-06-22    <rybkin@lal.in2p3.fr> 361
    215       
  • CMT/HEAD/mgr/cmt_dependencies.make

    r459 r461  
    11cmt_cxx_dependencies =  ../source/cmt.cxx   ../source/cmt_std.h   ../source/cmt_string.h   ../source/cmt_vector.h   ../source/cmt_parser.h   ../source/cmt_regexp.h   ../source/cmt_system.h   ../source/cmt.h
    2 cmt_awk_cxx_dependencies =  ../source/cmt_awk.cxx   ../source/cmt_std.h   ../source/cmt_string.h   ../source/cmt_regexp.h   ../source/cmt_awk.h   ../source/cmt_vector.h   ../source/cmt_system.h   ../source/cmt_log.h
     2cmt_awk_cxx_dependencies =  ../source/cmt_awk.cxx   ../source/cmt_std.h   ../source/cmt_string.h   ../source/cmt_regexp.h   ../source/cmt_awk.h   ../source/cmt_vector.h   ../source/cmt_system.h   ../source/cmt_log.h   ../source/cmt_map.h   ../source/cmt.h   ../source/cmt_parser.h   ../source/cmt_include.h   ../source/cmt_script.h   ../source/cmt_pattern.h   ../source/cmt_scope_section.h   ../source/cmt_use.h
    33cmt_branch_cxx_dependencies =  ../source/cmt_branch.cxx   ../source/cmt_std.h   ../source/cmt_string.h   ../source/cmt_vector.h   ../source/cmt_regexp.h   ../source/cmt_system.h   ../source/cmt.h   ../source/cmt_parser.h   ../source/cmt_branch.h   ../source/cmt_fragment.h   ../source/cmt_group.h   ../source/cmt_constituent.h   ../source/cmt_language.h   ../source/cmt_map.h   ../source/cmt_pattern.h   ../source/cmt_include.h   ../source/cmt_script.h   ../source/cmt_scope_section.h   ../source/cmt_use.h   ../source/cmt_tag.h   ../source/cmt_symbol.h   ../source/cmt_awk.h   ../source/cmt_project.h   ../source/cmt_cmtpath_pattern.h   ../source/cmt_database.h
    44cmt_constituent_cxx_dependencies =  ../source/cmt_constituent.cxx   ../source/cmt_std.h   ../source/cmt_string.h   ../source/cmt_vector.h   ../source/cmt_regexp.h   ../source/cmt_system.h   ../source/cmt.h   ../source/cmt_parser.h   ../source/cmt_fragment.h   ../source/cmt_group.h   ../source/cmt_constituent.h   ../source/cmt_language.h   ../source/cmt_awk.h   ../source/cmt_map.h   ../source/cmt_include.h   ../source/cmt_script.h   ../source/cmt_pattern.h   ../source/cmt_scope_section.h   ../source/cmt_use.h   ../source/cmt_deps_builder.h   ../source/cmt_generator.h   ../source/cmt_branch.h   ../source/cmt_tag.h   ../source/cmt_symbol.h   ../source/cmt_project.h   ../source/cmt_cmtpath_pattern.h   ../source/cmt_database.h   ../source/cmt_log.h
  • CMT/HEAD/source/cmt_awk.cxx

    r459 r461  
    1414#include "cmt_system.h"
    1515#include "cmt_log.h"
     16#include "cmt_use.h"
    1617
    1718class Parser
     
    697698          vreq += CmtSystem::file_separator ();
    698699          vreq += "cmt";
    699           vreq += CmtSystem::file_separator ();
    700           vreq += "version.cmt";
    701 
    702           if (CmtSystem::test_file (vreq))
     700          //      vreq += CmtSystem::file_separator ();
     701          //      vreq += "version.cmt";
     702
     703          //      if (CmtSystem::test_file (vreq))
     704          if (CmtSystem::test_file (vreq
     705                                    + CmtSystem::file_separator ()
     706                                    + Package::get_version_file_name ())
     707              )
    703708            {
    704               version.read (vreq);
    705               int pos;
    706               pos = version.find ('\n');
    707               if (pos != cmt_string::npos) version.erase (pos);
    708               pos = version.find ('\r');
    709               if (pos != cmt_string::npos) version.erase (pos);
    710 
     709              Package::get_version (version, vreq);
     710             
    711711              a.run (entry, version, path, true);
    712712              has_package = true;
     
    876876          if (CmtSystem::test_file (req))
    877877            {
    878               cmt_string req;
    879              
    880               req = name;
    881               req += CmtSystem::file_separator ();
    882               req += "version.cmt";
    883 
    884878              cmt_string version;
    885               if (CmtSystem::test_file (req))
     879              cmt_string v;
     880              if (Package::get_version (v, name))
    886881                {
    887                   version.read (req);
    888                   int pos;
    889                   pos = version.find ('\n');
    890                   if (pos != cmt_string::npos) version.erase (pos);
    891                   pos = version.find ('\r');
    892                   if (pos != cmt_string::npos) version.erase (pos);
     882                  version = v;
    893883                }
    894884              else
     
    896886                  version = "v*";
    897887                }
    898 
     888             
    899889              cout << package << " " << version << " " << path << endl;
    900890
  • CMT/HEAD/source/cmt_cvs.cxx

    r459 r461  
    19121912                cmt_string text = version;
    19131913                text += "\n";
    1914                 text.write ("version.cmt");
     1914                //              text.write ("version.cmt");
     1915                text.write (Package::get_version_file_name ());
    19151916              }
    19161917          }
  • CMT/HEAD/source/cmt_parser.cxx

    r460 r461  
    852852          break;
    853853        }
    854       version_file += CmtSystem::file_separator ();
    855       version_file += "version.cmt";
    856 
    857       if (CmtSystem::test_file (version_file))
     854      //      version_file += CmtSystem::file_separator ();
     855      //      version_file += "version.cmt";
     856
     857      //      if (CmtSystem::test_file (version_file))
     858      if (CmtSystem::test_file (version_file
     859                                + CmtSystem::file_separator ()
     860                                + Package::get_version_file_name ())
     861          )
    858862        {
    859863          //
     
    865869          CmtSystem::dirname (up_dir, Me.m_current_path);
    866870
     871          /*
    867872          if (Me.m_current_version.read (version_file))
    868873            {
     
    878883              Me.m_current_version = "v*";
    879884              CmtMessage::warning ("Could not read `" + version_file + "'."
     885                                   " Default version `" + Me.m_current_version + "'");
     886            }
     887          */
     888          cmt_string v;
     889          if (Package::get_version (v, version_file))
     890            {
     891              Me.m_current_version = v;
     892            }
     893          else
     894            {
     895              Me.m_current_version = "v*";
     896              CmtMessage::warning ("Structuring style used `without_version_directory'."
     897                                   " Could not determine version in `" + version_file + "'."
    880898                                   " Default version `" + Me.m_current_version + "'");
    881899            }
     
    949967                                       " Assuming it is package name");
    950968                }
     969              Me.m_current_package = up_branch;
     970              CmtSystem::dirname (up_dir, Me.m_current_path);
     971
     972              cmt_string v;
     973              if (Package::get_version (v, version_file))
     974                {
     975                  Me.m_current_version = v;
     976                }
     977              else
     978                {
    951979              // No version descriptor
    952980              // No version directory. The version is defaulted to v*
    953981             
    954               Me.m_current_package = up_branch;
    955               Me.m_current_version = "v*";
    956               CmtMessage::warning ("Structuring style used `without_version_directory'"
    957                                    ", `" + version_file + "' missing."
    958                                    " Default version `" + Me.m_current_version + "'");
    959               CmtSystem::dirname (up_dir, Me.m_current_path);
     982                  Me.m_current_version = "v*";
     983                  CmtMessage::warning ("Structuring style used `without_version_directory'."
     984                                       " Could not determine version in `" + version_file + "'."
     985                                       " Default version `" + Me.m_current_version + "'");
     986                }
    960987             
    961988              Me.m_current_style = no_version_style;
     
    28902917  if (!with_version_dir)
    28912918    {
    2892       ofstream f ("version.cmt");
     2919      //      ofstream f ("version.cmt");
     2920      ofstream f (Package::get_version_file_name ());
    28932921      if (f)
    28942922        {
     
    32373265      cmt_string v;
    32383266
    3239       v.read ("version.cmt");
     3267      //      v.read ("version.cmt");
     3268      v.read (Package::get_version_file_name ());
    32403269      if (v == version)
    32413270        {
     
    35573586  //  cerr << "Writing version file : " << version << endl;
    35583587
    3559   version.write ("version.cmt");
     3588  //  version.write ("version.cmt");
     3589  version.write (Package::get_version_file_name ());
    35603590}
    35613591
  • CMT/HEAD/source/cmt_use.cxx

    r459 r461  
    15401540      style = no_version_style;
    15411541
    1542       if (CmtSystem::test_file ("version.cmt"))
    1543         {
    1544           cmt_string v;
    1545 
    1546           v.read ("version.cmt");
    1547           int pos;
    1548           pos = v.find ('\n');
    1549           if (pos != cmt_string::npos) v.erase (pos);
    1550           pos = v.find ('\r');
    1551           if (pos != cmt_string::npos) v.erase (pos);
    1552 
     1542      cmt_string v;
     1543      if (Package::get_version (v))
     1544        {
    15531545          CompareStatus s = compare_versions (version, v);
    1554 
    15551546          if (Cmt::get_debug ())
    15561547            {
     
    42724263
    42734264
     4265//----------------------------------------------------------
     4266class VersionReader : public Awk
     4267{
     4268public:
     4269
     4270  VersionReader ()
     4271  {
     4272  }
     4273 
     4274  const cmt_string& get_version () const
     4275  {
     4276    return (m_version);
     4277  }
     4278 
     4279  void filter (const cmt_string& line)
     4280  {
     4281    CmtSystem::cmt_string_vector words;
     4282    CmtSystem::split (line, " \t", words);
     4283    if (words[0] == "version")
     4284      {
     4285        m_version = words[1];
     4286      }
     4287  }
     4288 
     4289private:
     4290  cmt_string m_version;
     4291};
     4292
     4293//----------------------------------------------------------
    42744294Package* Package::find (const cmt_string& name)
    42754295{
     
    42834303}
    42844304
     4305//----------------------------------------------------------
    42854306Package* Package::add (const cmt_string& name)
    42864307{
     
    43174338}
    43184339
     4340//----------------------------------------------------------
    43194341Package::PackageVector& Package::packages ()
    43204342{
     
    43254347}
    43264348
     4349//----------------------------------------------------------
    43274350Package::PackageMap& Package::package_map ()
    43284351{
     
    43334356}
    43344357
     4358//----------------------------------------------------------
    43354359void Package::clear_all ()
    43364360{
     
    43424366}
    43434367
     4368//----------------------------------------------------------
     4369bool Package::get_version (cmt_string& version, const cmt_string& path)
     4370{
     4371  cmt_string version_file = path;
     4372  version_file += CmtSystem::file_separator ();
     4373  version_file += get_version_file_name ();
     4374  if (CmtSystem::test_file (version_file))
     4375    {
     4376      cmt_string v;
     4377      if (v.read (version_file))
     4378        {
     4379          int pos;
     4380          pos = v.find ('\n');
     4381          if (pos != cmt_string::npos) v.erase (pos);
     4382          pos = v.find ('\r');
     4383          if (pos != cmt_string::npos) v.erase (pos);
     4384          version = v;
     4385          return true;
     4386        }
     4387      else
     4388        {
     4389          CmtMessage::warning ("Could not read `" + version_file + "'.");
     4390        }
     4391    }
     4392
     4393  version_file = path;
     4394  version_file += CmtSystem::file_separator ();
     4395  version_file += "requirements";
     4396  cmt_string text;
     4397  if (text.read (version_file))
     4398    {
     4399      VersionReader reader;
     4400      reader.run (text);
     4401      cmt_string v = reader.get_version ();
     4402      if (v != "")
     4403        {
     4404          version = v;
     4405          return true;
     4406        }
     4407    }
     4408  else
     4409    {
     4410      CmtMessage::warning ("Could not read `" + version_file + "'.");
     4411    }
     4412
     4413  return false;
     4414}
     4415
     4416//----------------------------------------------------------
     4417const cmt_string& Package::get_version_file_name ()
     4418{
     4419  static const cmt_string name = "version.cmt";
     4420
     4421  return (name);
     4422}
     4423
     4424//----------------------------------------------------------
    43444425Package::Package () : m_is_cmt (false)
    43454426{
     
    43504431}
    43514432
     4433//----------------------------------------------------------
    43524434Package::~Package ()
    43534435{
     
    43554437}
    43564438
     4439//----------------------------------------------------------
    43574440const cmt_string& Package::get_name () const
    43584441{
     
    43604443}
    43614444
     4445//----------------------------------------------------------
    43624446void Package::add_use (Use* use)
    43634447{
     
    43714455}
    43724456
     4457//----------------------------------------------------------
    43734458void Package::remove_use (Use* use)
    43744459{
     
    43964481}
    43974482
     4483//----------------------------------------------------------
    43984484Use::UsePtrVector& Package::get_uses ()
    43994485{
     
    44014487}
    44024488
     4489//----------------------------------------------------------
    44034490bool Package::is_cmt ()
    44044491{
     
    44064493}
    44074494
     4495//----------------------------------------------------------
    44084496static void show_packages ()
    44094497{
     
    44434531}
    44444532
     4533//----------------------------------------------------------
    44454534Project* Use::get_project ()
    44464535{   
  • CMT/HEAD/source/cmt_use.h

    r334 r461  
    235235  static void clear_all ();
    236236
     237  static bool get_version (cmt_string& version, const cmt_string& path = ".");
     238  static const cmt_string& get_version_file_name ();
     239
    237240public:
    238241
Note: See TracChangeset for help on using the changeset viewer.