}
}
+const std::string
+IniDBBuilderPackage::buildMinimumVersion (const std::string& minimum)
+{
+ if (version_compare(setup_version, minimum) < 0)
+ {
+ char min_vers[256];
+ snprintf (min_vers, sizeof(min_vers),
+ "The current ini file requires at least version %s of setup.\n"
+ "Please download a newer version from http://www.cygwin.com/setup-%s.exe",
+ minimum.c_str(),
+ is_64bit ? "x86_64" : "x86");
+ return min_vers;
+ }
+ return "";
+}
+
void
IniDBBuilderPackage::buildPackage (const std::string& _name)
{
void buildTimestamp (const std::string& );
void buildVersion (const std::string& );
+ const std::string buildMinimumVersion(const std::string &);
void buildPackage (const std::string& );
void buildPackageVersion (const std::string& );
void buildPackageSDesc (const std::string& );
"setup-timestamp:" return SETUP_TIMESTAMP;
"setup-version:" return SETUP_VERSION;
+"setup-minimum-version:" return SETUP_MINIMUM_VERSION;
"arch:" return ARCH;
+
"release:" return RELEASE;
"Package:" return PACKAGENAME;
[vV]"ersion:" return PACKAGEVERSION;
extern int yylineno;
%}
-%token STRING
-%token SETUP_TIMESTAMP SETUP_VERSION PACKAGEVERSION INSTALL SOURCE SDESC LDESC
+%token STRING
+%token SETUP_TIMESTAMP
+%token SETUP_VERSION
+%token SETUP_MINIMUM_VERSION
+%token PACKAGEVERSION
+%token INSTALL
+%token SOURCE
+%token SDESC
+%token LDESC
%token REPLACE_VERSIONS
%token CATEGORY DEPENDS REQUIRES
%token T_PREV T_CURR T_TEST T_OTHER
setup_headers: /* empty */
| setup_headers header
;
-
+
header /* non-empty */
: SETUP_TIMESTAMP STRING { iniBuilder->buildTimestamp ($2); } NL
| SETUP_VERSION STRING { iniBuilder->buildVersion ($2); } NL
| RELEASE STRING { iniBuilder->set_release ($2); } NL
- | ARCH STRING { iniBuilder->set_arch ($2); } NL
+ | ARCH STRING { iniBuilder->set_arch ($2); } NL
+ | SETUP_MINIMUM_VERSION STRING { std::string e = iniBuilder->buildMinimumVersion ($2); if (!e.empty()) { yyerror(e); } } NL
;
packages: /* empty */