RFC: Allowing cygwin setup to patch up old versions

chris caj@cs.york.ac.uk
Thu Jul 31 12:09:00 GMT 2003


Hello,

I am sorry if this covers things already discussed on this list or some 
other list (I suspect it might), but a quick search through the archives 
failed to provide anything.

I tend (like I suspect many other people) to update my cygwin every 
couple of weeks. As cygwin by default keeps packages it downloads it 
would make sense to distribute patches to existing files.

As a tiny example:

emacs-21.2-11.tar.bzip2 : 8MB
emacs-21.2-12.tar.bzip2 : 8MB
patch: 177K

emacs-21.2-11-src.tar.bzip2 : 19MB
emacs-21.2-12-src.tar.bzip2 : 19MB
patch : 3K (!)

My plan (at the moment) for how the patches will work is as follows:
Each file: /dir1/dir2/file.tar.bz2
can have a patch def file, called /dir1/dir2/file.tar.bz2.patchlist

This will include a list of files there are patches from (with md5) and 
a list of all the patches that exist, and their size.

A simple algorithm will then take this list, a list of all copies of the 
package that are currently on the computer, and the package we want to 
reach, and see what the cheapest patching route is to get there (for 
those interested, this would be done by a simple application of 
dykstra's algorithm)

If this is cheaper than downloading the whole package, then one or more 
patch files are downloaded and then applied to get the new package.

Exactly where to store patches I haven't decided yet.

Patches will be a "privalige", not a "right". If it turns out that some 
large package has such a large update (or for example the optimisation 
level is changed on the binary package) that the patch is too large, 
then there will simply not be a patch.

As I would like to try to do something useful for the cygwin project, I 
am currently working on a proof-of-principle patcher that seems to be 
working well.

I would like to try to pull this into the main cygwin setup tree, and 
was wondering if there is any kind of document that specifies exactly 
how files will be set out on both the computer and the server, of if I 
should just parse the code and see where it says files live? :)

Any comments (even "Someone is already working on that" or "Go away and 
stop bothering us") much appresiated! :)

Chris



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list