Working Details:

Step 1:
Convert standard Bz2 patch into a cbz2 patch.
what this step does is to bunzip the file, and separate out the diffs according to the directories.
create different patch files, according to these separations, and bzip them individually. create a
header with all the names/sizes of the bzippes patches created, and append them one after another
in a single file. this file is named a cbz2.
(This step is done ONCE, at the server side and is never allowed to be downloaded, infact not required
by the user. this forms the source of all the customized patches that are created by the script in step 2)

step2:
a perl script at the server accepts a few arguments:
beginning version : 2.5.1-test2 etc...
end version: 2.5.20 etc...
architecture: i386/ia64 etc..
and create a custom patch for the user for download.


step 3:
the user has to then run an uncompression script which then extracts them to a directory with *.diff
names (and the original directory names).
so therefore, a simple "cat *|patch -p1" would work.



Other points for those interested:

1. space taken by a cbz2 file is more than bz2 (ofcourse!) and quite less than a gzip of the same patch.
patch-2.5.5 (which linus included the whole ALSA chunk into the kernel)

4174 kb		patch-2.5.5.bz2
4243 kb		patch-2.5.5.cbz2

5308 kb		patch-2.5.5.gz

2. A pentium 120 with 32 Mb ram, can produce about 600-700 kb/second. Not too bad i guess. i am using
the BIG CGI module and no optimization at all. i think it can be worked upon to increase output speed.

3. Main aim is to make a provision in the Kconfig of linux kernel to allow automatic updation of
the kernel.

4. Another important point which hasnt been at all worked upon is that, those directories which are not
updated, need to be atleast updated with a marker stating which is the last updated version number (quite
like the individual file version number that subversion/bitkeeper does...) This can be acccomplished with
a simple .akul-version file, which has the latest version to which the directory was updated to. Still to
be worked upon at length. also to be taken care that a make mrproper or a make distclean shouldnt remove
such a file.

5. later a similar working for the whole linux kernel is to be done too. a script to convert a linux
kernel .bz2 file to a linux kernel.cbz2 is also ready, but needs good working to bring it to the web.
shouldnt be very difficult though.

6. next, the second generation of scripts should be able to handle different versions of a cbz2 format.
the current format is by default taken to be v1. 
v2 of the cbz2 file should be able to state textual details about the patch before everything else
(for e.g. the current/target version numbers that it would patch. arguments that the web form was passed.)

7. exceptions of cases wherein the acpi directory was up2date only uptill 2.5.20 and a new patch from
2.5.30-2.5.40 is applied, need to be taken care of.

8. any other suggestions are welcome!!!

vavilu
a.k.a. robins tharakan
robins@vsnl.com