This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFC: Allowing cygwin setup to patch up old versions


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]