[opensuse-project] [gsoc] osc2 client - summary of week 3 and 4
Hi, here's a small summary of the 3rd and 4th (coding) week . First of all I wasn't able to do lots of work in week 3 and 4 so I'm still working on the new build module for the osc2 library. The initial plan was to copy/reuse some of the existing modules from the (old) "osc" like the cpio [1] and packagequery modules. But I decided to refactor/rewrite cpio module for the following reasons: - "save" disc space: In our scenario we retrieve a cpio archive from the api (which contains binary packages for example). The old cpio module expects a filename in order to "unpack" the archive - that is the file has to be stored on disc first. Consequently approximately 2 * <archive size> of free disc space is needed. The new idea is that we pass a file-like object (in our case an object which inherits from "AbstractHTTPResponse") to the cpio module and unpack the archive "on the fly" (without storing the http response on disc first). - have testcases: The old cpio module has no testcases (because some time ago I didn't follow the TDD approach;) ). For nearly all modules in osc2 there exist testcases (white-box tests) thus it would be nice if we have some testcases for the cpio module, too (theoretically we could add some black-box tests (the current methods aren't really testable thus white-box tests aren't possible)). - have a nice pythonic interface: The new interface will look like this: from cpio import cpio_open # let "f" be a file-like object (for instance a http response) with cpio_open(fobj=f) as cpio_archive: for a_file in cpio_archive: # store file (with correct permissions etc.) in os.curdir a_file.write(os.curdir) # alternatively it's also possible to read some data (instead of # writing it to disc) via a_file.read(len) We will also support a plain filename in cpio_open. Currently the cpio module will only support the "new ascii" (ascii SVR4 no CRC) format and regular files (that's sufficient for our needs). But it will be possible to simply pass in a class for a different format (that is no code has to be altered in order to support a new format). Finally this will be finished by the end of this week. If you have any questions or suggestions please tell me:) Marcus [1] https://github.com/openSUSE/osc/blob/master/osc/util/cpio.py -- To unsubscribe, e-mail: opensuse-project+unsubscribe@opensuse.org To contact the owner, email: opensuse-project+owner@opensuse.org
participants (1)
-
Marcus Hüwe