[PATCH] make setup mirror list more like web page not just urls
Ken Brown
kbrown@cornell.edu
Mon Nov 20 23:02:00 GMT 2017
On 11/20/2017 5:59 PM, Ken Brown wrote:
> On 11/20/2017 4:30 PM, Brian Inglis wrote:
>> On 2017-11-17 06:53, Jon Turney wrote:
>> On 11/17/2017 8:48 AM, Ken Brown wrote:
>>> On 15/11/2017 21:35, Brian Inglis wrote:
>>
>> Thanks for your comments, I understand all your points, and agree with
>> them.
>> I merged the posts and responses as they addressed the same issues.
>> I also applied Ken's setup patch and rejigged mine where required.
>>
>> KB> Ken Brown
>> JT> Jon Turney
>>
>> KB> I think this is a good idea in principle, but it still needs some
>> work.
>>
>> JT> use a grid control to present this information.
>>
>> Don't think I want to learn that much about Windows controls!
>> The width of the longest fields in each column would need to adjust
>> the grid
>> and dialogue box widths, and Add button position, dynamically, which I
>> did
>> manually, and the internal blank space may be a bit harder to scan for
>> users
>> who are interested only in their geographic region, country, or territory
>> - these are pretty well aligned as strings.
>>
>> KB> Adding the protocol to the key instead of the full url isn't
>> enough to
>> KB> guarantee uniqueness of the key.
>> KB> Users can add their own sites for which that fails.
>> KB> Also, you shouldn't be relying on the servername field being
>> filled in.
>> KB> For example, the function SiteSetting::registerSavedSite() explicitly
>> KB> constructs a site 'tempSite' that has an empty servername.
>>
>> JT> This code needs to handle manually added URLs with non-FQDNs.
>> JT> - - url...'s going to need fixing.
>>
>> If host name provided, use as servername, or default to localhost.
>>
>> If at least two domain components:
>> if CC TLD, use as area in uppercase, or
>> if gTLD, use as area with init cap;
>> if 2-3 char TLD and 2-3 char 2nd level domain, may be subTLD, so if
>> 3rd level
>> domain exists and does not start with (or contain?) "cygwin", "ftp",
>> "mirror",
>> "www", add space plus 2-3 char 2nd level domain with init cap to area.
>> Use next level domain as location with init cap and uppercase after
>> any "-".
>> Otherwise default area to Local, and use servername as location with
>> init cap.
>> This adhoc approach seems to work well enough and avoids having to
>> drag in and
>> process the rules in the Public Suffix List (libpsl5 and
>> publicsuffix-list-dafsa).
>>
>> Examples:
>>
>> Input   ->
>> Â Â Â Â List
>> Â Â Â Â Displayed
>> Â Â Â Â Key
>>
>> http://mirror.cpsc.ucalgary.ca/mirror/cygwin.com       ->
>> http://mirror.cpsc.ucalgary.ca/mirror/cygwin.com/;mirror.cpsc.ucalgary.ca;CA;Ucalgary
>>
>> CA - Ucalgary - http://mirror.cpsc.ucalgary.ca/mirror/cygwin.com
>> CA Ucalgary ca ucalgary cpsc mirror
>> http://mirror.cpsc.ucalgary.ca/mirror/cygwin.com/
>>
>> [cyg]file://server/c$/usr/local/cygwin/var/cache/setup/packages   ->
>> [cyg]file://server/c$/usr/local/cygwin/var/cache/setup/packages/;server;Local;Server
>>
>> Local - Server -
>> file://server/c$/usr/local/cygwin/var/cache/setup/packages
>> Local Server server
>> file://server/c$/usr/local/cygwin/var/cache/setup/packages/
>>
>> cygfile:///var/cache/setup/packages       ->
>> cygfile:///var/cache/setup/packages/;localhost;Local;Localhost
>> Local - Localhost - cygfile://var/cache/setup/packages
>> Local Localhost localhost cygfile://var/cache/setup/packages/
>>
>> file:///c|/usr/local/cygwin/var/cache/setup/packages       ->
>> file:///c|/usr/local/cygwin/var/cache/setup/packages/;localhost;Local;Localhost
>>
>> Local - Localhost - file:///c|/usr/local/cygwin/var/cache/setup/packages
>> Local Localhost localhost
>> file:///c|/usr/local/cygwin/var/cache/setup/packages/
>>
>> Cygwin file:// does not appear to use /// or support anything but
>> local files,
>> so should always be treated as localhost; or does it support servers,
>> but they
>> can be treated as if directories under Windows, so we need to do a
>> server or
>> directory check, or that check is done at a lower level?
>>
>> JT> you can also just add a path.
>>
>> If UNC path with server, use as above, but include share name in display,
>> otherwise default as above.
>>
>> Examples:
>>
>> \\server\c$\usr\local\cygwin\var\cache\setup\packages       ->
>> \\server\c$\usr\local\cygwin\var\cache\setup\packages/;server;Local;Server
>>
>> Local - Server - \\server\c$
>> Local Server server
>> \\server\c$\usr\local\cygwin\var\cache\setup\packages/
>>
>> c:\usr\local\cygwin\var\cache\setup\packages           ->
>> c:\usr\local\cygwin\var\cache\setup\packages/;localhost;Local;Localhost
>> Local - Localhost - c:\usr\local\cygwin\var\cache\setup\packages
>> Local Localhost localhost c:\usr\local\cygwin\var\cache\setup\packages/
>>
>> Where are the cached sites stashed - setup keeps showing my old test
>> entries?
>>
>> JT> if you add two URLs with the same protocol/host, they aren't
>> distinguishable
>>
>> Check for and eliminate duplicates after sort if same site_list fields.
>> Handled by KB patch.
>> Note on flag added by that patch - would is_current, is_good, or
>> is_known be a
>> better reflection of what that flag means?
>> Should we add ==(string) to compare only the url member?
>> Should we add a constructor(string,is_official) to refactor string to
>> site
>> conversions, and the url additions?
>>
>> KB> If the saved url corresponds to a site in the list, I think setup
>> should
>> KB> recognize this rather than listing the same site again as " - - url".
>>
>> JT> If the URL matches one in the list, that item should be selected.
>>
>> Check for URL match with site list and use match as site:
>> added for tempSite in RegisterSavedSites and newsite on Add;
>> required as key now includes area and location, not just URL.
>> Could we add a check to a string contructor to return only a reference
>> to an
>> existing entry, if the url matches, to refactor the above changes?
>>
>> JT> Store area and location so we can populate those fields if it
>> doesn't.
>>
>> See above.
>>
>> JT> Please, please use git-format-patch in future.
>>
>> I can't tell from looking, does it differ from diff output, and is
>> there a
>> reason to use git-format-patch for review?
>> I use diffs for feedback until it DTRT.
>> I can manage one commit and one format-patch on a good day.
>> I should just stick to using what Tortoise Git supports.
>> My record with git includes a lot of rm -rf and re-clone, as the
>> files, trees,
>> and indices get out of whack when I forget some incantation and try to
>> fix it!
>> Very brittle and unfriendly - if it's going to bork itself, just don't
>> do that!
>> I never had a single problem with CVS or Hg in many years ;^>
>>
>> JT> The patch also has some spurious changes to the mode of the
>> manifest files.
>>
>> Realized I shouldn't tidy up unnecessary x modes under git control -
>> habit
>> - gets me into trouble and I learn new things - checked out masters.
>
> Hi Brian,
>
> The issue of recognizing a URL that's already in the list is not fixed.
> Here's what I tried:
>
> I ran setup with the last mirror (as stored in /etc/setup/setup.rc)
> being http://mirrors.kernel.org/sourceware/cygwin/. The resulting
> mirror list display contained the following, highlighted:
>
> Â Org - Kernel - http://mirrors.kernel.org
>
> So setup didn't recognize that
> http://mirrors.kernel.org/sourceware/cygwin/ was already in the list,
> displayed as
>
> Â United States - California - http://mirrors.kernel.org
>
> Also, I don't like the fake 'area' and 'location' fields for user-added
> URLs. For example, "Org" and "Kernel" are startling in the display
> above and add no information to the plain URL. Another example is my
> own personal repository, http://sanibeltranquility.com/cygwin, which
> displays as
>
> Â Com - Sanibeltranquility - http://sanibeltranquility.com
>
> I would rather see the area and location left blank, or perhaps replaced
> by "Unknown". A third alternative would be to replace "Area - Location"
> by "User-added" or something similar.
One other thing I just noticed: If I cancel the installation while the
mirror list is displayed, the wrong URL(s) is/are written into
/etc/setup/setup.rc under "last-mirror". I don't recall this ever
happening before, but maybe I just never noticed.
Ken
More information about the Cygwin-apps
mailing list