[Soc-coordination] Leiningen & Clojure packaging - Report 0

Eugenio Cano-Manuel Mendoza eugeniocanom at gmail.com
Fri Jun 21 15:25:17 UTC 2013


Hello,

My name is Eugenio Cano-Manuel Mendoza. I'm currently working on improving
the packaging process of programs made with Clojure & Leiningen [1]. A
deliverable of this project is to provide a set of tools compatible with
debhelper that can make a working debian package out of upstream's tarball
with very little interaction. This is what I've been working on so far.

*Organization:*
I'm writing a blog[2] to keep track of the work I'm doing. In addition to
this, my mentor and co-mentors (Wolodja Wentland, Gergely Nagy, Paul
Tagliamonte) and I have agreed to meet all together every 2 weeks or so to
discuss progress and milestones. We are also using #debian-clojure and the
clojure packaging team mailing list to discuss ideas and problems that
arise during the realization of this project.

*What I've done so far:*
This project had a pre-application requirement that needed to be fulfilled
in order to have a glimpse of the challenges I would be facing. During the
application period I managed to read documentation regarding packaging
provided my by mentor. Learning during the application period saved me time
from the coding and community bonding periods, all this enabled me to start
setting up my working environment right away to begin hacking sooner.

I setup a github repository[3] to host all the code I was going to work on
but later migrated to git.debian.org and synced with another github
repo[4]. Please check these links if you're interested in the details. I've
made 106 commits to this project so far.

I've been working on the development of clojurehelper (that's the name for
now). After many prototypes of its components and a lot of discussion on
IRC and mailing list I've managed to put together a set of tools that work
in the same fashion of javahelper (in fact clojurehelper uses many of the
javatools scripts). As of today it can package simple clojure libraries
with only requiring the packager to input the description and the license
file. I've also packaged 2 dependencies of leiningen2 and I'm working on
another 2 libraries.

May 30 - June 6:
* Sent introductory email to pkg-clojure mailing list.
* Filled an ITP for the package quoin-clojure
* Wrote a parser for leiningen configuration files in Clojure as a
prototype.
* Wrote another parser in Python (actually hy).
* Wrote another parser in Python using pyclj.
* Decided to parse a maven pom file instead of the leiningen configuration
file.
* Created a skeleton of ln_makepkg (a script that comes with clojurehelper)
in python.

June 7 - June 14:
* Created a leiningen plugin to export project parameters to xml format
since pom files provide little information.
* Cleaned source code to comply with pep8.
* Inspected jh_depends (from the javatools package)
* Made the python project distributable through distutils.
* Made a debian package of ln_makepkg.
* Implemented argument parsing for ln_makepkg.
* Wrote unit tests for ln_makepkg.
* Packaged quoin-clojure and sent to DD for review.
* Refactored test base class to make it easier to add more tests.

June 15 - Today:
* A working lein2 debhelper sequence is created, seems to be working.
* Created tests for the whole debhelper sequence.
* Added more tools to clojurehelper, ln_clean, ln_builddocs, ln_build.
* Created a test that builds a debian package out of a tarball. Later
refactored to add more in the future.
* Packaged scout-clojure.
* Filled ITP for stencil-clojure.
* Currently making a debian package of the clojurehelper suite.

*Problems I've encountered:*
Most of my time was being spent on solving problems common to new Debian
packagers, debhelper, wnpp, and the whole process. I've also spend a lot of
time trying to figure out how to design clojurehelper properly. My mentors
have helped me taking the right decisions when it comes to adding features
to clojurehelper and I'm glad they've always been available when I needed
help.

*What I'll be working on:*
I want to finish packaging clojurehelper to start using it right away. This
will help me find bugs and provide with desirable features. I also want to
package stencil and tune clojurehelper to handle packages with
dependencies. I'm not expecting much from next week since I'll be taking my
final exams but hope to at least meet the goals mentioned.

I want to thank the community for helping me with this project, not only my
mentors but #debian-mentors, the java packaging team, and anyone who
contributed to the documentation of the tools involved directly and
indirectly.

Please send me any suggestion on improving clojurehelper and/or this
report. I'm on 24/7 on #debian-clojure. I'm subscribed to this mailing list
and pkg-clojure. You can also send me a PM to this email.

Don't forget to checkout my blog[1] if you want to know a little more on
how I've been developing clojurehelper.

Cheers,
Eugenio

[1]
http://wiki.debian.org/SummerOfCode2013/StudentApplications#Leiningen_.26_Clojure_packaging
[2]http://eugecm.wordpress.com/
[3]https://github.com/keidesu/ln_makepkg
[4]https://github.com/Debian/clojurehelper
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/soc-coordination/attachments/20130621/9b42196b/attachment-0001.html>


More information about the Soc-coordination mailing list