RFC: setup package in Base

Jon Turney jon.turney@dronecode.org.uk
Sat Jul 7 12:40:00 GMT 2018


On 06/07/2018 15:05, Jon Turney wrote:
> On 06/07/2018 14:51, Jon Turney wrote:
>> Thanks for the patch.
>>
>> The version is checked (again), at ini.cc:404
>>
>> I've never understood why we have this twice.
>>
>> (I think the idea might be that first we are checking the setup 
>> version as a proxy for the setup.ini format version, to warn if there 
>> might be problems parsing it.  The second time we are checking the 
>> setup version to see if an upgrade of setup is possible)
> 
> Ah, so now we have setup-minimum-version, checking setup-version: in the 
> ini parser should probably be removed (or disabled when 
> setup-minimum-version: is present?)

Like so:

-------------- next part --------------
From 0955c7b05bdb50ae180e9ab5f9bfb3c8489a0242 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbrown@cornell.edu>
Date: Thu, 5 Jul 2018 11:22:20 -0400
Subject: [PATCH setup 1/2] Add --no-version-check option

This suppresses the warning that a newer version of setup is available.

This is intended to be used by shortcuts and scripts that run setup in a
'setup' package.

This would also suppress any future auto-update feature.
---
 ini.cc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ini.cc b/ini.cc
index 7afeba2..78684a7 100644
--- a/ini.cc
+++ b/ini.cc
@@ -62,6 +62,7 @@ IniList setup_ext_list (setup_exts,
 			setup_exts + (sizeof(setup_exts) / sizeof(*setup_exts)));
 
 static BoolOption NoVerifyOption (false, 'X', "no-verify", "Don't verify setup.ini signatures");
+static BoolOption NoVersionCheckOption (false, '\0', "no-version-check", "Suppress checking if a newer version of setup is available");
 
 extern int yyparse ();
 
@@ -401,7 +402,8 @@ do_ini_thread (HINSTANCE h, HWND owner)
        setup_version);
   if (ini_setup_version.size ())
     {
-      if (version_compare (setup_version, ini_setup_version) < 0)
+      if ((version_compare (setup_version, ini_setup_version) < 0)
+          && !NoVersionCheckOption)
 	note (owner, IDS_OLD_SETUP_VERSION, setup_version,
 	      ini_setup_version.c_str ());
     }
-- 
2.17.0

-------------- next part --------------
From 7e82fb4f179155da810101133ab7189f93ed52d4 Mon Sep 17 00:00:00 2001
From: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri, 6 Jul 2018 17:45:42 +0100
Subject: [PATCH setup 2/2] If setup-minium-version: was checked, don't check
 setup-version:

Don't check setup-version: to warn about potential setup.ini parsing
problems if a setup-minimum-version: is specified.
---
 IniDBBuilderPackage.cc | 11 ++++++++++-
 IniDBBuilderPackage.h  |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc
index 48a5d4a..87a0058 100644
--- a/IniDBBuilderPackage.cc
+++ b/IniDBBuilderPackage.cc
@@ -32,7 +32,7 @@
 using namespace std;
 
 IniDBBuilderPackage::IniDBBuilderPackage (IniParseFeedback const &aFeedback) :
-currentSpec (0), _feedback (aFeedback){}
+  currentSpec (0), _feedback (aFeedback), minimum_version_checked(FALSE) {}
 
 IniDBBuilderPackage::~IniDBBuilderPackage()
 {
@@ -48,6 +48,14 @@ IniDBBuilderPackage::buildTimestamp (const std::string& time)
 void
 IniDBBuilderPackage::buildVersion (const std::string& aVersion)
 {
+  /* We shouldn't need to warn about potential setup.ini parse problems if we
+     exceed the version in setup-minimum-version: (we will still advise about a
+     possible setup upgrade in do_ini_thread()).  If we don't exceed
+     setup-minimum-version:, we've already encountered a fatal error, so no need
+     to warn as well. */
+  if (minimum_version_checked)
+    return;
+
   version = aVersion;
   if (version.size())
     {
@@ -68,6 +76,7 @@ IniDBBuilderPackage::buildVersion (const std::string& aVersion)
 const std::string
 IniDBBuilderPackage::buildMinimumVersion (const std::string& minimum)
 {
+  minimum_version_checked = TRUE;
   if (version_compare(setup_version, minimum) < 0)
     {
       char min_vers[256];
diff --git a/IniDBBuilderPackage.h b/IniDBBuilderPackage.h
index 79a864e..e5d3662 100644
--- a/IniDBBuilderPackage.h
+++ b/IniDBBuilderPackage.h
@@ -91,6 +91,7 @@ private:
   std::set <std::string> replace_versions;
 
   IniParseFeedback const &_feedback;
+  bool minimum_version_checked;
 };
 
 #endif /* SETUP_INIDBBUILDERPACKAGE_H */
-- 
2.17.0



More information about the Cygwin-apps mailing list