* 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-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.
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;
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);
+}
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 ();
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)
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 ();
"source:" return SOURCE;
"sdesc:" return SDESC;
"ldesc:" return LDESC;
+"message:" return MESSAGE;
"Description:" BEGIN (descriptionstate); return DESCTAG;
"Size:" return FILESIZE;
"MD5sum:" return MD5LINE;
%token OPENBRACE CLOSEBRACE EQUAL GT LT GTEQUAL LTEQUAL
%token OPENSQUARE CLOSESQUARE
%token BINARYPACKAGE BUILDDEPENDS STANDARDSVERSION FORMAT DIRECTORY FILES
+%token MESSAGE
%%
| 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)
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())
{
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())
{
desired = installed;
if (desired)
{
- desired.pick (false);
- desired.sourcePackage().pick (false);
+ desired.pick (false, NULL);
+ desired.sourcePackage().pick (false, NULL);
}
return;
}
if (desired)
{
if (desired.accessible())
- desired.pick (true);
+ desired.pick (true, this);
else
- desired.sourcePackage().pick (true);
+ desired.sourcePackage().pick (true, NULL);
return;
}
}
{
/* 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 */
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 ();
{
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;
}
}
desired = default_version;
if (desired)
{
- desired.pick (desired != installed);
- desired.sourcePackage ().pick (false);
+ desired.pick (desired != installed, this);
+ desired.sourcePackage ().pick (false, NULL);
}
}
else
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;
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)
#include <set>
#include "PackageTrust.h"
#include "package_version.h"
+#include "package_message.h"
typedef std::pair<const std::string, std::vector<packagemeta *> > Category;
// 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
*/
std::string priority;
+ packagemessage message;
+
/* can one or more versions be installed? */
bool accessible () const;
bool sourceAccessible() const;
}
void
-packageversion::pick (bool aBool)
+packageversion::pick (bool aBool, packagemeta *pkg)
{
data->pick(aBool);
+ if (pkg && aBool)
+ pkg->message.display ();
}
void
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);
}
*/
class _packageversion;
+class packagemeta;
/* This class has pointer semantics
Specifically: a=b does not alter the value of *a.
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 */
{
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;