===== Enhancing FreeBSD's Libarchive ===== ===== About ===== [[http://people.freebsd.org/~kientzle/libarchive/|Libarchive]] is an archive library for %%FreeBSD%% developed by [[/TimKientzle|TimKientzle]]. This project's goal is to enhance it as far as possible. The original project description can be found on the [[http://code.google.com/soc/2008/freebsd/about.html|FreeBSD page]] at [[/SummerOfCode2008|Google Summer of Code 2008]]. ===== People ===== * **Mentor:** [[/TimKientzle|TimKientzle]] \\ * **Student:** [[/AnselmStrauss|AnselmStrauss]] ===== Status ===== ==== September 8 ==== It truly has been a long time I last made updates here ... GSOC finished, despite I reached only a few of my original goals. Well, work will continue, not under Google's lead, and on a free time basis. Most likely, this site won't be updated anymore. Check the source repositories for updates. ==== July 31 ==== Did some more features on the ZIP writer and testing. Consequently I also had to fix some bugs ... Now turning on the compression support and support for non-regular file entries. Also must keep an eye on the next goal, most likely the PAX frontend. ==== July 18 ==== Implemented a basic ZIP writer without compression support and CRC computation. Now I must definitely go for some testing ... Last week on Thursday 11th, there was also a meetup at Google Zurich. It was good to see some real faces behind the project, there were also some nice presentations and discussions. What a pity Google didn't let us have a look at their server room ... ;) ==== July 7 ==== Working on the ZIP writer and dealing with: * Collecting central directory structure over multiple entries, holding it in memory and appending it at the end of the archive. * Computing CRC sums over data streams. * Using file data descriptors (appended to file data) instead of the fields in the file header. Tired for now, tomorrow is another day ... ==== June 30 ==== I set up: * Eclipse + CDT to work with Libarchive * More P4 things I bought a PDF of "C in a Nutshell" to refresh my C programming skills and have a good reference. Also I made some exercises with GNU Autotools to understand it better. Also I had a lot to do with my master thesis, so I spend a lot of time there ... :\ ==== June 05 ==== This week coding also started for me :D ==== May 25 ==== Finally found some time again to work on my project. I setup the wiki pages, so now I'm almost ready to go. Our studies will finish May 30, one week after the official coding phase start. ===== Roadmap ===== ^ Week/Date ^ Google Phase ^ My Phase ^ | 1 (26.05.) | Coding I | P4 setup | | 2 | Coding I | Eclipse + Autotools | | 3 | Coding I | Eclipse + Autotools, Reading code | | 4 | Coding I | Reading code | | 5 | Coding I | Blackout (master thesis ... :o ) | | 6 | Coding I | Coding ZIP writer | | 7 (07.07.) | Midterm Evaluation | Coding ZIP writer | | 8 | Coding II | Testing ZIP writer | | 9 | Coding II | ZIP writer basic features | | 10 | Coding II | ZIP writer basic features | | 11 | Coding II | ZIP writer compression | | 12 | Coding II | Coding | | 13 (18.08.) | Final Evaluation | Coding, evaluation stuff | | 14 | Final Evaluation | Coding | | 15 (01.09.) | Code Submission | Submitting code | ===== Goals ===== ==== ZIP writer ==== ZIP reader is already there and the ZIP writer can lean it's code on the existing CPIO writer. Official [[http://www.pkware.com/documents/casestudies/APPNOTE.TXT|.ZIP File Format Specification]] is available from PKWARE. The [[http://www.info-zip.org/|Info-ZIP]] software specifies some of the extensions mentioned by PKWARE. ZIP features that are won't be covered by this project: * Header compression * Encryption * Multi-part archives ^ Task ^ Status ^ | Simple writer without any features | DONE | | Compression support | OPEN | | Central directory | DONE | | Tests | PARTIAL | | ZIP64 support | OPEN | | Correct CRCs | DONE | | Folder entry support | DONE | | Unix to DOS time conversion | DONE | | Storing permissions | DONE | ==== PAX frontend ==== [[http://www.opengroup.org/onlinepubs/009695399/utilities/pax.html|The Open Group Base Specifications Issue 6]] ==== ISO writer ==== Not started yet. ==== Sophisticated testing ==== Not started yet. ===== Todo ===== - ✔ Handle paper work with Google - ✔ Learn about P4 and setup repository - ✔ Setup initial wiki pages - ✔ Check in README and TODO file - ✔ Write intro mail to %%FreeBSD%% hackers - ✔ Decide where/how to post news - ✘ Look at bug [[http://www.freebsd.org/cgi/query-pr.cgi?pr=117909|117909]] Tim mentioned - ✔ Define more detailed goals - ✔ Add a source section - ✔ Change news into status section - ✔ Add a roadmap ===== Source Code ===== * [[http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libarchive/|FreeBSD CVS]] - Main source tree (%%FreeBSD%% specific) * [[http://p4web.freebsd.org/@md=d&cd=//depot/user/kientzle/&c=kbY@//depot/user/kientzle/libarchive-portable/|P4 portable version]] - Portable version by Tim * [[http://p4web.freebsd.org/@md=d&cd=//depot/projects/soc2008/&c=Peg@//depot/projects/soc2008/strauss_libarchive/|P4 project version]] - Actual project source code, branched from portable version ===== Resources ===== ==== Coding ==== * GNU [[https://web.archive.org/web/20111113073209/http://sourceware.org:80/automake/automake.html|automake (archive.org)]] and [[http://www.gnu.org/software/autoconf/manual/html_node/index.html|autoconf]] documentation * [[http://www.lrde.epita.fr/~adl/autotools.html|Autotools Tutorial]] * Good explanation of [[http://www.ibm.com/developerworks/aix/library/au-endianc/index.html?ca=drs-|endianness]] by IBM ==== SOC 2008 ==== * [[http://code.google.com/soc/2008/|Home]] * [[http://googlesummerofcode.blogspot.com/|Blog]] ==== FreeBSD ==== * [[http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/index.html|Developer Handbook]] * [[http://www.freebsd.org/cgi/query-pr.cgi|Bugs]] * [[http://www.freebsd.org/cgi/cvsweb.cgi/|FreeBSD sources]] * [[http://p4web.freebsd.org/|P4Web]] - Project source code ---- {{tag>Gsoc}}