This document gives a bit more detail as to how akul works.

Given below is the working of each of the scripts in their sequence of events ...

Check (check.php) :
1. periodically check kernel.org servers (probably check hourly for the Finger Banner.
2. In case kernel.org is inaccessible, try a few other servers from its own list of secondary servers across the net.
3. In case an update patch is found, find the url for variants of this patch.
4. Call repack.php and pass on the url of the patch with the preferred compression format (bz2, gz, ...)


Repackage (repack.php) :
1. check sanity of the patch url.
2. convert patch to sc format.
3. update database with the patch information

Server (serve.php) :
1. Accepts the following information in POST format.
   a. In case it wants a whole set of patches combined together.
      i. from patch version
      ii. to patch version
      iii. architecture(s) required
      iv. filesystems(s) required
   b. In case it wants only a very specific part of a patch.
      i. parent-dir
      ii. sub-dir
      iii. source patch version
      iv. target patch version
   c. In case it wants a complicated list of patches, then it needs to send an array with the same sub-structure as in part 'b' above.
2. Accepts the request in GET format also, mainly for an easy human interface and debugging.

Get (KConfig / manual) :
1. The ui may vary considerably. This could be a web-page form, KConfig, or a hand-crafted request.
2. One could ofcourse request the patch via GET option by hand, but that would only support section 'a' of serve.php
3. Request by POST are given second priority (vis-a-vis) GET option but they are allowed far more customisability.
4. The target of course is to have a KConfig sub-option wherein one can easily select the directory to be updated from / to a specific version.
5. The Kconfig would get this patch as requested and (may) automatically update the kernel too.
6. If another option is enabled, a simple query for each patch selection could also be run to know the size of the patch which is going to be requested.

Advanced Get (KConfig) :
KConfig could be setup to automatically set to download and patch the kernel as requested.
1. For this, a one-time script needs to be run once, which puts a .sc file in each directory upto the second level.
2. The patches from then on, automatically update these .sc files which automatically denote the current version of the directory in question.