Fork me on GitHub

GPyPi2 — Google Summer of Code week #4

under Gentoo, Python, Portage, English, Gsoc, Gpypi2

Greetings, following is the weekly update for gpypi2 project. It's main purpose is to generate ebuilds from Python Package Index. Quick links to project info:

I'm more than happy to announce first pre-alpha prototype. Intended goal is to make people start using the tool and reporting back their critics.

Install gpypi2

$ sudo pip install


$ sudo easy_install

Create an ebuild

$ sudo gpypi2 create flask

 * Generating ebuild: Flask 0.4
 * Your ebuild is here: /usr/local/portage/dev-python/flask/flask-0.4.ebuild
 * Dependency needed: Werkzeug
 * Dependency needed: Jinja2
 * Generating ebuild: Werkzeug 0.6.2
 * Your ebuild is here: /usr/local/portage/dev-python/werkzeug/werkzeug-0.6.2.ebuild
 * Generating ebuild: Jinja2 2.5
 * Your ebuild is here: /usr/local/portage/dev-python/jinja2/jinja2-2.5.ebuild
 * Dependency needed: Babel
 * Generating ebuild: Babel 0.9.5
 * Your ebuild is here: /usr/local/portage/dev-python/babel/babel-0.9.5.ebuild

NOTE: ebuilds will probably not function yet, features are yet to be completed/added. Report bugs to `issue tracker <>`_.

Previous week (15-21 June)

Main goal of previous week was to get closer to first prototype. Done.

Task: First snippet of command line interface

Put enough together to assemble ebuilds from command line. I think
many issues may pop up, and lots of bugs shall be fixed. I'm currently
mostly doing stuff from my head, with not much practise whatsoever.

Mostly, we should get a result of better test coverage (currrently about

The only component left untouched is the configuration. I would like to
touch this topic after all my exams are over, leaving me time and

Command line interface was added, test coverage is up to 60%. Lots of small fixes were done. As a bonus, I added portage output syntax colors.

Task: get_dependencies - another refactor to enamer

Title says it all. Also handling of multiple version operators should be

Example: foobar>=0.5&& foobar<0.6

should resolve in <0.6 blocker and >=0.5 requirement.

Multiple operators on version dependencies are handled as blockers, implemented in tip. However get_dependencies was not refactored, since I still might be adding functionality. Not really necessary for now.

Upcoming week (22-28 June)

Task: Use SrcUriNamer

gpypi2.enamer.SrcUriNamer is awaiting for quite 2 weeks now
to be finally used.

It's basically factory that generates SRC_URI and HOMEPAGE
according to mirror provider.
A lot of additional refactoring will be needed to Enamer to
use this utility instead of current guessing/parsing.

Task: Fix bugs reported by users

Lot of bugs are going to pop up; fix bugs, write tests and
add documentation.

Task: Increase test coverage

I'm still not satisfied with test coverage.
I'll try to increase it a bit more.
It's 10 days week of exams on my university, soon I will be able to put
in more effort in implementing features.

Cheers, Domen