Sunday, July 1, 2012

Modular Calibre SlackBuild

I have been using Calibre and Eric Hameleers has been so generous in providing SlackBuild script to build Calibre and all of it's dependencies in one huge package. This method is the best way to have Calibre installed when you are using Slackware 13.37 or previous version.

Things changed a little bit when -Current moves on by introducing Python 2.7.3 which is the main component to build Calibre. In fact, one of the reason why Eric make the SlackBuild build all the dependencies into one single package is due to the fact that Slackware 13.37 and previosly shipped Python 2.6, which doesn't met Calibre minimum requirement.

Now, since Slackware-Current has included Python 2.7, we don't have to compile Python 2.7 again, but instead, we should build all the dependencies again and again in order to build Calibre because the pre-build packages are no longer works in -Current. That would be a waste of time. I'm thinking of how to make this process much faster and efficient?

So, as the first step, i grab all the dependencies packages from SBo project, upgraded it to the latest version and push it to my SlackHacks repository. Please read the below notes about the requirements needed to compile Calibre.

Next, i simplified Eric's SlackBuild script by removing all the lines which are no longer used in order to compile Calibre and testing it on my machine. The modified SlackBuild has been pushed to the SlackHacks repository as well. The results is magnificent. The compile time is less than 1 minute on my machine. I tried to use time command to measure the time to compile and here's the result:
real    0m37.468s
user   0m33.792s
sys     0m2.176s

Here are the requirements to compile Calibre in modular way:
- Python 2.7.x (Available in -Current)
- pil (Available in -Current)
- icu4c
- podofo
- BeautifulSoup
- dnspython
- pysetuptools
- python-cssutils
- lxml
- python-dateutil
- mechanize
- pycrypto

Enjoy the Calibre SlackBuild and give credits to Eric Hameleers for his initial work on Calibre