[Soc-coordination] Debdelta APT Integration - Report 1

Ishan Jayawardena udeshike at gmail.com
Fri Jun 3 16:54:53 UTC 2011


Hi,

My project is integrating debdelta natively to APT. I added my project
proposal to the Debian wiki [1], and there is also a wiki page created
by my mentor in the Ubuntu wiki[2], Michael Vogt, which describes the
design and the implementation plan in detail.

I spent the community boding period to learn the background knowledge
needed for the project. I have been updating Michael regularly and
he's guiding me through my work. First, I refreshed my knowledge about
debdelta by reading its new documentation[3]. Then, I started studying
the design and the internals of APT by reading and debugging its code.
My goal was to find out the functionality of apt when it executes a
download/update process and the classes/functions responsible for it
so that I can do the initial integration and test it. I concentrated
on the fetcher and the line based communication protocol from APT to
the helper methods such as http, file etc. Then I added the new
method/debdelta method and tested it with a simple shell script. The
shell script runs the debdelta method with a .deb and a .debdelta as
the input and verify the resulting deb. To get an idea about how to
write the debdelta method, I studied the existing rred implementation.
This work is related to the first stage mentioned in [2], and
currently I am writing the code to move the resulting deb after
patching from /var/cache/apt/archives/partial to
/var/cache/apt/archives.

Before I started the development, I set up my development environment.
I configured a separate directory as the root for my development
version of APT and created a local repository with sample .deb and
.debdelta files and added an entry for it in the sources.list file to
make APT work in a sandbox environment to keep my original system
intact. I looked into the test/integration/framework script to learn
how to set up a local archive for testing. My APT branch is available
at [4] and I am planning to update it each time I complete a
considerable milestone in the development.

My next plan is to write the required subclasses for pkgAcquire class
that can fetch/handle debdelta files and debdelta index files and
adding suitable functions(such as custom600Headers()) to them to work
with pkgAcquire::Worker::QueueItem() function. The classes that I am
planning to add are,
class pkgAcqDebdeltas : public pkgAcquire::Item {} for
fetching/handling the debdelta files.
class pkgAcqDebdeltaIndex : public pkgAcquire::Item {} for handling
the index file of the debdelta files.

[1] http://wiki.debian.org/SummerOfCode2011/AptDebdeltaIntegration/IshanJayawardena
[2] https://wiki.ubuntu.com/DebdeltaAptIntegration
[3] http://debdelta.debian.net/html/index.html
[4] https://code.launchpad.net/~udeshike/apt/apt-ishan
-- 
Regards,
Ishan Jayawardena.



More information about the Soc-coordination mailing list