]> cygwin.com Git - cygwin-apps/setup.git/commitdiff
* IniDBBuilder.h (buildMessage): Define for base class.
authorChristopher Faylor <me@cgf.cx>
Sun, 13 Dec 2009 19:23:43 +0000 (19:23 +0000)
committerChristopher Faylor <me@cgf.cx>
Sun, 13 Dec 2009 19:23:43 +0000 (19:23 +0000)
* IniDBBuilderPackage.cc (IniDBBuilderPackage::buildMessage): Define.
* IniDBBuilderPackage.h (IniDBBuilderPackage::buildMessage): Declare.
* PickPackageLine.cc: Pass pointer to package to "pick" throughout, where
appropriate.
* PickView.cc: Ditto.
* install.cc: Ditto.
* package_meta.cc: Ditto.
* prereq.cc: Ditto.
* package_version.cc: Ditto.
(packageversion::pick): Add pkg pointer as second argument.  Display message
where appropriate.
* package_version.h (packageversion::pick): Add pkg pointer as second argument.
* package_meta.h (packagemeta::mesage): Define.
(packagemeta::set_message): Define.
* inilex.ll: Properly return MESSAGE token.
* iniparse.yy: Handle message: keyword.

14 files changed:
ChangeLog
IniDBBuilder.h
IniDBBuilderPackage.cc
IniDBBuilderPackage.h
PickPackageLine.cc
PickView.cc
inilex.ll
iniparse.yy
install.cc
package_meta.cc
package_meta.h
package_version.cc
package_version.h
prereq.cc

index f89843400164c20146dbc4af80895f2515db2f39..7f6348ae7cbefe5e9a7f6d54456960b1d7d3d7b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2009-12-13  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * IniDBBuilder.h (buildMessage): Define for base class.
+       * IniDBBuilderPackage.cc (IniDBBuilderPackage::buildMessage): Define.
+       * IniDBBuilderPackage.h (IniDBBuilderPackage::buildMessage): Declare.
+       * PickPackageLine.cc: Pass pointer to package to "pick" throughout,
+       where appropriate.
+       * PickView.cc: Ditto.
+       * install.cc: Ditto.
+       * package_meta.cc: Ditto.
+       * prereq.cc: Ditto.
+       * package_version.cc: Ditto.
+       (packageversion::pick): Add pkg pointer as second argument.  Display
+       message where appropriate.
+       * package_version.h (packageversion::pick): Add pkg pointer as second
+       argument.
+       * package_meta.h (packagemeta::mesage): Define.
+       (packagemeta::set_message): Define.
+       * inilex.ll: Properly return MESSAGE token.
+       * iniparse.yy: Handle message: keyword.
+
 2009-12-08  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        * localdir.cc (offer_to_create): New function.
index c69f338d81f0878e7e6da37850a66f4a17f03e63..d9996299820d902d647e1f4337a47fdcbd290815 100644 (file)
@@ -57,6 +57,7 @@ public:
   virtual void buildPackageListOrNode (const std::string& ) = 0;
   virtual void buildPackageListOperator (PackageSpecification::_operators const &) = 0;
   virtual void buildPackageListOperatorVersion (const std::string& ) = 0;
+  virtual void buildMessage (const std::string&, const std::string&) = 0;
 
   unsigned int timestamp;
   std::string version;
index 288cd80242735650a6a399d7262299df7a746ade..70de988f93005f53e1fe2cca00fe7e88f5a01d3f 100644 (file)
@@ -576,3 +576,9 @@ IniDBBuilderPackage::setSourceSize (packagesource &src, const std::string& size)
   if (!src.size)
     src.size = atoi(size.c_str());
 }
+
+void
+IniDBBuilderPackage::buildMessage (const std::string& message_id, const std::string& message)
+{
+  cp->set_message (message_id, message);
+}
index 851b4b065dbf04d79135d8569254612fd1ebd89b..3795df7c940f02462852cf0531e8f32b001ca666 100644 (file)
@@ -58,7 +58,8 @@ public:
   virtual void buildBeginProvides ();
   virtual void buildBeginBuildDepends ();
   virtual void buildBeginBinary ();
-  virtual void buildDescription (const std::string& );
+  virtual void buildDescription (const std::string&);
+  virtual void buildMessage (const std::string&, const std::string&);
   virtual void buildSourceName (const std::string& );
   virtual void buildSourceNameVersion (const std::string& );
   virtual void buildPackageListAndNode ();
index 081178904743f9b7181da629ff3957be6187df16..432f6a6138d3e6458cdf1fcfda895b4d71e066ad 100644 (file)
@@ -126,11 +126,11 @@ PickPackageLine::click (int const myrow, int const ClickedRow, int const x)
   if (pkg.desired.accessible ()
       && x >= theView.headers[theView.bintick_col].x - HMARGIN / 2
       && x <= theView.headers[theView.bintick_col + 1].x - HMARGIN / 2)
-    pkg.desired.pick(!pkg.desired.picked());
+    pkg.desired.pick(!pkg.desired.picked(), &pkg);
   if (pkg.desired.sourcePackage ().accessible ()
       && x >= theView.headers[theView.srctick_col].x - HMARGIN / 2
       && x <= theView.headers[theView.srctick_col + 1].x - HMARGIN / 2)
-    pkg.desired.sourcePackage().pick(!pkg.desired.sourcePackage().picked());
+    pkg.desired.sourcePackage().pick(!pkg.desired.sourcePackage().picked(), NULL);
 
   if (x >= theView.headers[theView.new_col].x - HMARGIN / 2
       && x <= theView.headers[theView.new_col + 1].x - HMARGIN / 2)
index 22c649b4fe28c9204dd660fc2aa46d681751220e..aa2ca33f300673dc121f1861b6e97f906d92080b 100644 (file)
@@ -976,7 +976,7 @@ PickView::defaultTrust (trusts trust)
           pkg.desired = pkg.trustp (trust);
           if (pkg.desired)
             pkg.desired.pick (pkg.desired.accessible() && 
-                                  pkg.desired != pkg.installed);
+                                  pkg.desired != pkg.installed, &pkg);
         }
       else
         pkg.desired = packageversion ();
index e58df0e4a9fba6a1998da0142a6c808ea05eb041..bd86633f900033bc82fbdea9d258eedc3a6c8f42 100644 (file)
--- a/inilex.ll
+++ b/inilex.ll
@@ -75,6 +75,7 @@ STR   [!a-zA-Z0-9_./:\+-]+
 "source:"              return SOURCE;
 "sdesc:"               return SDESC;
 "ldesc:"               return LDESC;
+"message:"             return MESSAGE;
 "Description:"         BEGIN (descriptionstate); return DESCTAG;
 "Size:"                        return FILESIZE;
 "MD5sum:"              return MD5LINE;
index 8b82c2f9fb6b3e06b897addc53beab0120c85af4..c8332ffaf9e5e6f947ab1c7a51a4e594168996e1 100644 (file)
@@ -50,6 +50,7 @@ void add_correct_version();
 %token OPENBRACE CLOSEBRACE EQUAL GT LT GTEQUAL LTEQUAL 
 %token OPENSQUARE CLOSESQUARE
 %token BINARYPACKAGE BUILDDEPENDS STANDARDSVERSION FORMAT DIRECTORY FILES
+%token MESSAGE
 
 %%
 
@@ -118,6 +119,7 @@ singleitem /* non-empty */
  | REPLACES { iniBuilder->buildBeginReplaces(); }       versionedpackagelist NL
  | BUILDDEPENDS { iniBuilder->buildBeginBuildDepends(); } versionedpackagelist NL
  | FILES NL SourceFilesList
+ | MESSAGE STRING STRING NL    { iniBuilder->buildMessage ($2, $3); }
  | DESCTAG mlinedesc
  | error                       { yyerror (std::string("unrecognized line ") 
                                          + stringify(yylineno)
index 4605d39e80e94abe49864c3c53965ad66dbbd3bc..d9a3f554280f8d931c1860358c484460d2f2304b 100644 (file)
@@ -568,7 +568,7 @@ do_install_thread (HINSTANCE h, HWND owner)
       catch (Exception *e)
       {
         if (yesno (owner, IDS_SKIP_PACKAGE, e->what()) == IDYES)
-          pkg.desired.pick (false);
+          pkg.desired.pick (false, &pkg);
       }
       if (pkg.desired.picked())
       {
@@ -586,7 +586,7 @@ do_install_thread (HINSTANCE h, HWND owner)
       catch (Exception *e)
       {
         if (yesno (owner, IDS_SKIP_PACKAGE, e->what()) == IDYES)
-          pkg.desired.sourcePackage ().pick (false);
+          pkg.desired.sourcePackage ().pick (false, &pkg);
       }
       if (pkg.desired.sourcePackage().picked())
       {
index 9942b22a6547442ec59fa80a8a817ae2fb9bdceb..afe09cb5d227e0e0a37c8c3508c0d896e1d83d53 100644 (file)
@@ -428,8 +428,8 @@ packagemeta::set_action (packageversion const &default_version)
       desired = installed;
       if (desired)
        {
-         desired.pick (false);
-         desired.sourcePackage().pick (false);
+         desired.pick (false, NULL);
+         desired.sourcePackage().pick (false, NULL);
        }
       return;
     }
@@ -448,9 +448,9 @@ packagemeta::set_action (packageversion const &default_version)
       if (desired)
        {
          if (desired.accessible())
-           desired.pick (true);
+           desired.pick (true, this);
          else
-           desired.sourcePackage().pick (true);
+           desired.sourcePackage().pick (true, NULL);
          return;
        }
     }
@@ -462,8 +462,8 @@ packagemeta::set_action (packageversion const &default_version)
     {
       /* source only this file */
       desired = installed;
-      desired.pick (false);
-      desired.sourcePackage().pick (true);
+      desired.pick (false, NULL);
+      desired.sourcePackage().pick (true, NULL);
       return;
     }
   /* are we currently on source only or on the radio button but not installed */
@@ -477,8 +477,8 @@ packagemeta::set_action (packageversion const &default_version)
       if (i != versions.end())
        {
          desired = *i;
-         desired.pick (desired.accessible());
-         desired.sourcePackage ().pick (false);
+         desired.pick (desired.accessible(), this);
+         desired.sourcePackage ().pick (false, NULL);
        }
       else
        desired = packageversion ();
@@ -501,9 +501,9 @@ packagemeta::set_action (packageversion const &default_version)
            {
              desired = *i;
              if (desired.sourcePackage().accessible ())
-               desired.sourcePackage ().pick (sourceticked);
+               desired.sourcePackage ().pick (sourceticked, NULL);
              else
-               desired.sourcePackage ().pick (false);
+               desired.sourcePackage ().pick (false, NULL);
              return;
            }
        }
@@ -545,8 +545,8 @@ packagemeta::set_action (_actions action, packageversion const &default_version)
          desired = default_version;
          if (desired)
            {
-             desired.pick (desired != installed);
-             desired.sourcePackage ().pick (false);
+             desired.pick (desired != installed, this);
+             desired.sourcePackage ().pick (false, NULL);
            }
        }
       else
@@ -561,18 +561,18 @@ packagemeta::set_action (_actions action, packageversion const &default_version)
          if (desired != installed)
            if (desired.accessible ())
              {
-               desired.pick (true);
-               desired.sourcePackage ().pick (false);
+               desired.pick (true, this);
+               desired.sourcePackage ().pick (false, NULL);
              }
            else
              {
-               desired.pick (false);
-               desired.sourcePackage ().pick (true);
+               desired.pick (false, NULL);
+               desired.sourcePackage ().pick (true, NULL);
              }
          else
            {
-             desired.pick (false);
-             desired.sourcePackage ().pick (false);
+             desired.pick (false, NULL);
+             desired.sourcePackage ().pick (false, NULL);
            }
        }
       return;
@@ -582,8 +582,8 @@ packagemeta::set_action (_actions action, packageversion const &default_version)
       desired = installed;
       if (desired)
        {
-         desired.pick (true);
-         desired.sourcePackage ().pick (false);
+         desired.pick (true, this);
+         desired.sourcePackage ().pick (false, NULL);
        }
     }
   else if (action == Uninstall_action)
index e3d0ca787b3ab3ae494e0aa31439e1aaa5aff91f..209d243530c49460de93efdb5ab2c1c62fafe437 100644 (file)
@@ -24,6 +24,7 @@ class category;
 #include <set>
 #include "PackageTrust.h"
 #include "package_version.h"
+#include "package_message.h"
 
 typedef std::pair<const std::string, std::vector<packagemeta *> > Category;
 
@@ -85,6 +86,10 @@ public:
   // explicit separation for generic programming.
   int set_requirements (trusts deftrust) 
     { return set_requirements (deftrust, 0); }
+  void set_message (const std::string& message_id, const std::string& message_string)
+  {
+    message.set (message_id, message_string);
+  }
 
   std::string action_caption () const;
   packageversion trustp (trusts const t) const
@@ -138,6 +143,8 @@ public:
    */
   std::string priority;
 
+  packagemessage message;
+
   /* can one or more versions be installed? */
   bool accessible () const;
   bool sourceAccessible() const;
index f562ae32f0d899d8b6475c3c1c1676671b0f8eb8..18ac505c05382baa9bac26d39f612ea62c60c5c5 100644 (file)
@@ -283,9 +283,11 @@ packageversion::picked () const
 }
 
 void 
-packageversion::pick (bool aBool)
+packageversion::pick (bool aBool, packagemeta *pkg)
 {
   data->pick(aBool);
+  if (pkg && aBool)
+    pkg->message.display ();
 }
 
 void
@@ -392,8 +394,8 @@ select (trusts deftrust, size_t depth, packagemeta *required,
   bool sourceticked = required->desired.sourcePackage ().picked();
   /* install this version */
   required->desired = aVersion;
-  required->desired.pick (required->installed != required->desired);
-  required->desired.sourcePackage ().pick (sourceticked);
+  required->desired.pick (required->installed != required->desired, required);
+  required->desired.sourcePackage ().pick (sourceticked, NULL);
   /* does this requirement have requirements? */
   return required->set_requirements (deftrust, depth + 1);
 }
index c8d8215439676061ef15f28b7aa853229fa0561c..26a286e3d5570808ee0c5d6e5f3dae5447ab1b66 100644 (file)
@@ -77,6 +77,7 @@ package_type_t;
    */
 
 class _packageversion;
+class packagemeta;
 
 /* This class has pointer semantics 
    Specifically: a=b does not alter the value of *a.
@@ -122,7 +123,7 @@ public:
   const std::vector <std::vector <PackageSpecification *> *> *depends() const; 
 
   bool picked() const;   /* true if this version is to be installed */
-  void pick(bool); /* trigger an install/reinsall */
+  void pick(bool, packagemeta *); /* trigger an install/reinsall */
 
   void uninstall ();
   /* invariant: never null */
index 83dd743ca76d259fa812b3d41335bc85cf89bc7e..2465e4ac07140f0f4037d5e7e82140ba37c308f0 100644 (file)
--- a/prereq.cc
+++ b/prereq.cc
@@ -229,18 +229,18 @@ PrereqChecker::selectMissing ()
     {
       packageversion vers = i->first->trustp (theTrust);
       i->first->desired = vers;
-      vers.sourcePackage ().pick (false);
+      vers.sourcePackage ().pick (false, NULL);
       
       if (vers == i->first->installed)
         {
-          vers.pick (false);
+          vers.pick (false, NULL);
           log (LOG_PLAIN) << "Adding required dependency " << i->first->name <<
                ": Selecting already-installed version " <<
                i->first->installed.Canonical_version () << "." << endLog;
         }
       else
         {
-          vers.pick (vers.accessible ());
+          vers.pick (vers.accessible (), i->first);
           log (LOG_PLAIN) << "Adding required dependency " << i->first->name <<
               ": Selecting version " << vers.Canonical_version () <<
               " for installation." << endLog;
This page took 0.060562 seconds and 5 git commands to generate.