Subject: Re: Bug in setup.exe 2.194.2.24
From: "Cliff Hones" <[email-masked]>
To: "Robert Collins" <[email-masked]>, <[email-masked]>
Date: Mon, 22 Apr 2002 13:55:41 +0100

Robert Collins wrote:
> So you are suggesting that in download mode it should not offer to
> upgrade any installed packages by default? Or that it should only offer
> upgrades for installed packages without cached files?

The latter (approx) .  I view it as offering downloads - not upgrades -
in download mode. (See below)

> I'll happily accept a (reasonable) patch for the second case, but the
> first case also seems counter-intuitive to me.
> ...
> I'd like to remove the re-download facility completely. If a package
> file is corrupt, delete the local copy and then run setup. This makes
> setup simpler, for little cost. Setup won't keep partial files anyway,
> so the only form of corruption has to be network transit problems, and
> GPG signing would solve that too, and allow setup to detect and remove
> corrupt packages automatically.

Ok - I'm prepared to be shot down in flames :-).  Here's what I'd
like to see setup do - and I hope this is intuitive and reasonably
compatible with current behaviour.  Apologies for the length...

First, "Download from Internet".

Assuming there's already a cygwin installation present, setup should
examine all packages installed and compare their versions with the
latest setup.ini files from the mirrors (downloading these first if
necessary).  Any installed packages with higher current versions
available should be set to be upgraded by default.  Dependencies
must be checked, and any other necessary packages should be
upgraded as necessary.  Other packages should be placed in the 'keep'
state.

The local directory should be scanned for required packages, and any
not present should be downloaded and placed in the local directory.
Assuming all downloads worked, the required uninstalls/installs
should be done.

[I think this is essentially what setup does now.]

If there's no Cygwin installation initially, setup should set
the base packages (only) plus dependencies for install.

Other complications/wbnif's:

   . If the user has previously uninstalled base packages or dependencies,
     should setup remember this, or forcibly select them for reinstallation?
   . setup should remember whether the user selected experimental
     packages, and offer to upgrade these to their latest test version.
   . Should setup downgrade packages (or at least flag a suggestion)
     if the setup.ini file indicates the current version is lower
     than the installed one?
   . There should be an option to show packages added to the distribution
     since the user made the previous (or original?) install, since he
     may not have made a conscious decision to exclude them from his
     installation.
   . If there are versions in the local directory which are not listed
     in the setup.ini files, should they be offered?  [Could be useful for
     someone who likes to keep his favourite old version which has worked
     for years, and for private packages.]

Next, "Install from local directory".

This should be very similar to the above.  No internet access should
be performed, so the current setup.ini files have to be trusted.
When working out what packages to upgrade by default, setup should
check that they are actually present in the local directory, and
if not, not offer them for upgrade by default.  If the user selects
any packages which are not present, or dependency checking introduces
non-present packages, setup should flag this and refuse to continue
until the user addresses the problem.

wbnif:

   . setup could flag new packages or packages which have a more
     recent version but which are not present in the local directory.

Finally, "Download from Internet".

New setup.ini files should be fetched from the mirror(s) if necessary.
The same processing as in "Install from Internet" should be carried out
to establish packages to upgrade.  Any already present in the local
directory should be changed to "keep".

I would also like a new option in this mode which effectively
says "ignore the current installation (if any)".  In this mode
the packages in the local directory, rather than those currently
installed, should be taken as the starting point.  So you
will be offered by default any upgrades to packages which have
previously been downloaded.

The user should be allowed more flexibility in this mode as to what gets
downloaded.  e.g. he should be allowed to deselect dependencies.

In all the above modes, the user should have a pick mechanism as
at present to adjust the default offerings.  In "download from
internet" and "install from internet" the offerings should be based
on the setup.ini files (possibly with older and extra local packages
included too).  In "Install from local directory" only the packages
actually present should be selectable.

There should also be an easy way to get a display of all possible
upgrades/additions.  I don't mean a way to ask for all packages
to be downloaded/installed - I'd rather have a list of packages
I haven't got so I can then go through and pick one or two to try.
Maybe that's already possible, but I haven't found out how to do it
yet.

Also, a "purge local directory" option would be wonderful.

Now I have a development environment set up I may take a look
to see what would be involved in implementing some of this
(though I'd imagine the setup experts would know better).

-- Cliff

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/