On 4/11/2018 12:56 PM, Jon Turney wrote:
On 11/04/2018 00:14, Ken Brown wrote:
On 4/10/2018 2:12 PM, Yaakov Selkowitz wrote:
In order to speed up the adoption of the latest setup.exe, would it make
sense to ship it as a package?  Here is an initial draft of what this
might look like:

https://github.com/cygwinports/setup/blob/master/setup.cygport

I'm not sure upx packing setup here is a good idea, since it interferes with debuggability, and we will be compressing the package archive anyhow.

Note that the executable itself is version/release-numbered so that we
never have to deal with replacing a running executable (setup itself).

True.

Not sure that when the setup package is upgraded, setup will be able to remove itself, though.

I've just tested this, and in fact the running setup doesn't remove itself.

(Old setup-${VERSION}-${RELEASE}.exe lingering may be a price worth paying, though)

I think some users would find it confusing and annoying. Maybe the setup package could provide a perpetual postinstall script that tries to remove old versions.

I like the idea.  One thing to think about is how to deal with the situation in which a buggy version of setup fails to update itself. Maybe we should modify the existing warning that's issued when a newer version of setup is available.  It could say that setup should update itself, but it could also give a link to a script that does this manually in case something goes wrong.

The instruction that setup currently emits telling you to update setup won't make a lot of sense if setup is then going to update itself

I'm attaching a patch to setup that adds a new option, --no-version-warning, to suppress that warning. (The patch also slightly rewords the warning.) Two further patches, to setup.cygport and cygsetup.in, make the setup shortcuts and the cygsetup script use that option.

One other comment about the shortcuts and script: I don't think they should use the --local-package-dir option. By the time the shortcuts or script are first run, the user will have already run setup at least once and will have provided a local package directory. It could only cause confusion for us to change this.

Also, I guess ideally setup should update itself first, rather than at the same time as all other packages...

This would be a nice feature (possibly with an option to disable it, as Achim requested). But unless it can be done easily, I think we should go ahead with the setup package and save this for the future.

Ken

From 50575f3bef73e37e86662b4f1a975dca074effaf Mon Sep 17 00:00:00 2001
From: Ken Brown <[email protected]>
Date: Thu, 5 Jul 2018 11:22:20 -0400
Subject: [PATCH] Add --no-version-warning option

This suppresses the warning that a newer version of setup is
available.  It is intended to be used by shortcuts and scripts that
run /usr/bin/setup-<version>.exe (from the 'setup' package).

Also reword the warning so that it mentions
/usr/bin/setup-<version>.exe.
---
 IniDBBuilderPackage.cc | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc
index 48a5d4a..1cdae08 100644
--- a/IniDBBuilderPackage.cc
+++ b/IniDBBuilderPackage.cc
@@ -29,8 +29,12 @@
 #include "PackageSpecification.h"
 #include <algorithm>
 
+#include "getopt++/BoolOption.h"
+
 using namespace std;
 
+static BoolOption NoVersionWarningOption (false, '\0', "no-version-warning", 
"Suppress warning that a newer version of setup is available");
+
 IniDBBuilderPackage::IniDBBuilderPackage (IniParseFeedback const &aFeedback) :
 currentSpec (0), _feedback (aFeedback){}
 
@@ -51,13 +55,15 @@ IniDBBuilderPackage::buildVersion (const std::string& 
aVersion)
   version = aVersion;
   if (version.size())
     {
-      if (version_compare(setup_version, version) < 0)
+      if (version_compare(setup_version, version) < 0
+         && !NoVersionWarningOption)
        {
          char old_vers[256];
          snprintf (old_vers, sizeof old_vers,
            "The current ini file is from a newer version of setup-%s.exe. "
            "If you have any trouble installing, please download a fresh "
-           "version from https://cygwin.com/setup-%s.exe";,
+           "version from https://cygwin.com/setup-%s.exe, or use "
+           "/usr/bin/setup-<version>.exe, provided by the 'setup' package.",
            is_64bit ? "x86_64" : "x86",
            is_64bit ? "x86_64" : "x86");
          _feedback.warning(old_vers);
-- 
2.17.0

From 5a1b1c62ae1ae82604b0e64a510cbe1c9c8f1d79 Mon Sep 17 00:00:00 2001
From: Ken Brown <[email protected]>
Date: Thu, 5 Jul 2018 12:47:21 -0400
Subject: [PATCH] Use --no-version-warning in cygsetup script

---
 cygsetup.in | 1 +
 1 file changed, 1 insertion(+)
 mode change 100755 => 100644 cygsetup.in

diff --git a/cygsetup.in b/cygsetup.in
old mode 100755
new mode 100644
index c4b0adc..6bf271a
--- a/cygsetup.in
+++ b/cygsetup.in
@@ -92,6 +92,7 @@ cygsetup ()
     cygstart -- /bin/setup-@[email protected] \
        --arch ${arch/i6/x} \
        --no-shortcuts \
+       --no-version-warning \
        --root $(cygpath -w /) \
        --local-package-dir $(cygpath -w /var/cache/setup) \
        $args
-- 
2.17.0

From a1529ce5f71e7b9cafcb82f13fb6c6fcdb1a0d68 Mon Sep 17 00:00:00 2001
From: Ken Brown <[email protected]>
Date: Thu, 5 Jul 2018 12:39:37 -0400
Subject: [PATCH] Use --no-version-warning in shortcuts

---
 setup.cygport | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/setup.cygport b/setup.cygport
index c0f312b..ad2790b 100644
--- a/setup.cygport
+++ b/setup.cygport
@@ -35,11 +35,11 @@ src_install() {
 /usr/bin/mkdir -p "\$(/usr/bin/cygpath \$CYGWINFORALL -P)/Cygwin"
 /usr/bin/mkshortcut \$CYGWINFORALL -P -w /var/log \
   -n "Cygwin/Cygwin${ARCH_x86_64+64} Setup" \
-  -a "--local-package-dir \$(cygpath -w /var/cache/setup)" \
+  -a "--no-version-warning --local-package-dir \$(cygpath -w 
/var/cache/setup)" \
   /usr/bin/setup-${VERSION}-${RELEASE}.exe
 /usr/bin/mkshortcut \$CYGWINFORALL -P -w /var/log \
   -n "Cygwin/Update Cygwin${ARCH_x86_64+64}" \
-  -a "--no-shortcuts --package-manager --upgrade-also --local-package-dir 
\$(cygpath -w /var/cache/setup)" \
+  -a "--no-shortcuts --package-manager --upgrade-also --no-version-warning 
--local-package-dir \$(cygpath -w /var/cache/setup)" \
   /usr/bin/setup-${VERSION}-${RELEASE}.exe
 _EOF
        cat > ${D}/etc/preremove/setup.sh <<_EOF
-- 
2.17.0

Reply via email to