<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

<title type="text" xml:lang="en"></title>
<link type="application/atom+xml" href="http://copyninja.info/atom/" rel="self"/>
  <link type="text/html" href="http://copyninja.info" rel="alternate"/>
<updated>2013-05-05T05:21:59-07:00</updated>
<id>http://copyninja.info</id>
<author>
<name>Vasudeva Kamath</name>
</author>
<rights>Copyright (c) 2012, Vasudeva Kamath; all rights reserved.</rights>


<entry>
<title>CDBS Packaging: package relationship management</title>
<link href="http://copyninja.info/2013/05/cdbs_packaging%3A_package_relationship_management.html"/>
<updated>2013-05-05T05:19:45-07:00</updated>
<id>http://copyninja.info/2013/05/cdbs_packaging:_package_relationship_management</id>
<content type="html">&lt;p&gt;(It took me a while to come up with new CDBS packaging series post not
because I stopped using CDBS just because I was procrastinating myself
as busy)&lt;/p&gt;

&lt;p&gt;This is the second post in the CDBS packaging series. In this series
I'm going to talk about package relationship management.&lt;/p&gt;

&lt;p&gt;The better example where this feature is useful is packages where
build-depends and run-time dependencies overlap. Most of the Perl
modules which have test suites have build-depend and run-time
dependency intersection. So let me take example of a Perl module.&lt;/p&gt;

&lt;p&gt;First lets see control file of a Perl package which is not using CDBS
and then let me explain how CDBS can help you improve the situation. I
choose &lt;em&gt;libxml-libxml-perl&lt;/em&gt; lets see part of control file which includes
&lt;em&gt;Build-Depends Depends Suggests Recommends&lt;/em&gt;.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;control&quot;&gt;&lt;span class=&quot;k&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;libxml-libxml-perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Maintainer&lt;/span&gt;: Debian Perl Group &lt;span class=&quot;gs&quot;&gt;&amp;lt;pkg-perl-maintainers@lists.alioth.debian.org&amp;gt;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Uploaders&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Jonathan Yu &amp;lt;jawnsy@cpan.org&amp;gt;,&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt; gregor herrmann &amp;lt;gregoa@debian.org&amp;gt;,&lt;/span&gt;
&lt;span class=&quot;err&quot;&gt; Chris Butler &amp;lt;chrisb@debian.org&amp;gt;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Section&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Priority&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;optional&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Build-Depends&lt;/span&gt;: &lt;span class=&quot;nf&quot;&gt;perl&lt;/span&gt; (&lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;5.12&lt;/span&gt;),
 &lt;span class=&quot;nf&quot;&gt;debhelper&lt;/span&gt; (&lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;9.20120312&lt;/span&gt;),
 &lt;span class=&quot;nf&quot;&gt;libtest-pod-perl&lt;/span&gt;,
 &lt;span class=&quot;nf&quot;&gt;libxml2-dev&lt;/span&gt;,
 &lt;span class=&quot;nf&quot;&gt;libxml-namespacesupport-perl&lt;/span&gt;,
 &lt;span class=&quot;nf&quot;&gt;libxml-sax-perl&lt;/span&gt;,
 &lt;span class=&quot;nf&quot;&gt;zlib1g-dev&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Standards-Version&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;3.9.4&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Vcs-Browser&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libxml-libxml-perl.git&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Vcs-Git&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;git://anonscm.debian.org/pkg-perl/packages/libxml-libxml-perl.git&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Homepage&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;https://metacpan.org/release/XML-LibXML/&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;Package&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;libxml-libxml-perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Architecture&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;any&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Depends&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;$&lt;/span&gt;{&lt;span class=&quot;ni&quot;&gt;shlibs:Depends&lt;/span&gt;}, &lt;span class=&quot;o&quot;&gt;$&lt;/span&gt;{&lt;span class=&quot;ni&quot;&gt;misc:Depends&lt;/span&gt;}, &lt;span class=&quot;o&quot;&gt;$&lt;/span&gt;{&lt;span class=&quot;ni&quot;&gt;perl:Depends&lt;/span&gt;},
 &lt;span class=&quot;nf&quot;&gt;libxml-namespacesupport-perl&lt;/span&gt;,
 &lt;span class=&quot;nf&quot;&gt;libxml-sax-perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Breaks&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;libxml-libxml-common-perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Replaces&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;libxml-libxml-common-perl&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;gs&quot;&gt;: Perl interface to the libxml2 library&lt;/span&gt;
 XML::LibXML is a Perl interface to the GNOME libxml2 library, which provides
 interfaces for parsing and manipulating XML files. This module allows Perl
 programmers to make use of the highly capable validating XML parser and the
 high performance Document Object Model (DOM) implementation. Additionally, it
 supports using the XML Path Language (XPath) to find and extract information.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So 2 packages are both in Build-Depends and Depends field&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;libsax-xml-perl&lt;/li&gt;
&lt;li&gt;libxml-namespacesupport-perl&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;So in this situation there is a possibility that we miss to add one or
both of these packages into Depends field, I'm not saying we will
surely miss but we might after all we are all human beings.&lt;/p&gt;

&lt;p&gt;So how can we improve the situation using CDBS? Let me go through step
by step on what we need to do.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a file called control.in with same above contents but slight
modification in Build-Depends and Depends section. I will display
the diff below to avoid re-pasting entire file again and again.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;udiff&quot;&gt;&lt;span class=&quot;gd&quot;&gt;--- debian/control      2013-04-28 23:08:11.930082600 +0530&lt;/span&gt;
&lt;span class=&quot;gi&quot;&gt;+++ debian/control.in   2013-05-04 20:51:18.849680419 +0530&lt;/span&gt;
&lt;span class=&quot;gu&quot;&gt;@@ -5,13 +5,7 @@&lt;/span&gt;
  Chris Butler &amp;lt;chrisb@debian.org&amp;gt;
 Section: perl
 Priority: optional
&lt;span class=&quot;gd&quot;&gt;-Build-Depends: perl (&amp;gt;= 5.12),&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- debhelper (&amp;gt;= 9.20120312),&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- libtest-pod-perl,&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- libxml2-dev,&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- libxml-namespacesupport-perl,&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- libxml-sax-perl,&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- zlib1g-dev&lt;/span&gt;
&lt;span class=&quot;gi&quot;&gt;+Build-Depends: @cdbs@&lt;/span&gt;
 Standards-Version: 3.9.4
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libxml-libxml-perl.git
 Vcs-Git: git://anonscm.debian.org/pkg-perl/packages/libxml-libxml-perl.git
&lt;span class=&quot;gu&quot;&gt;@@ -20,8 +14,7 @@&lt;/span&gt;
 Package: libxml-libxml-perl
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends},
&lt;span class=&quot;gd&quot;&gt;- libxml-namespacesupport-perl,&lt;/span&gt;
&lt;span class=&quot;gd&quot;&gt;- libxml-sax-perl&lt;/span&gt;
&lt;span class=&quot;gi&quot;&gt;+ ${cdbs:Depends}&lt;/span&gt;
 Breaks: libxml-libxml-common-perl
 Replaces: libxml-libxml-common-perl
 Description: Perl interface to the libxml2 library
&lt;span class=&quot;gu&quot;&gt;@@ -30,4 +23,3 @@&lt;/span&gt;
  programmers to make use of the highly capable validating XML parser and the
  high performance Document Object Model (DOM) implementation. Additionally, it
  supports using the XML Path Language (XPath) to find and extract information.
&lt;span class=&quot;gd&quot;&gt;-&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Next we need to have something like below in the rule files&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;make&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/make -f&lt;/span&gt;

&lt;span class=&quot;cp&quot;&gt;include /usr/share/cdbs/1/rules/debhelper.mk&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;include /usr/share/cdbs/1/rules/utils.mk&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;include /usr/share/cdbs/1/rules/upstream-tarball.mk&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;include /usr/share/cdbs/1/class/perl-makemaker.mk&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;pkg&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;DEB_SOURCE_PACKAGE&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;deps&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; libxml-libxml-perl libxml-sax-perl
&lt;span class=&quot;nv&quot;&gt;deps-test&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; libtest-pod-perl

&lt;span class=&quot;nv&quot;&gt;CDBS_BUILD_DEPENDS&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt;, &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;deps&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;, &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;deps-test&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;CDBS_BUILD_DEPENDS&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt;, zlib1g-dev, libxml2-dev, perl &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&amp;gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; 5.12&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;err&quot;&gt;CDBS_DEPENDS_&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;pkg&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; , &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;deps&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So basically we moved all Build-Depends and Depends to rules file. The
common ones are placed in deps variable and assigned to both
Build-Depends and Depends. CDBS uses following variables for package
relationship management.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CDBS_BUILD_DEPENDS: This variable helps you manage Build-Depends
field and all you need to do is in your control.in files
Build-Depends field put place holder @cdbs@&lt;/li&gt;
&lt;li&gt;CDBS_DEPENDS: This field can be used to manage Depends field of
binary package for each binary package you need to have one
CDBS_DEPENDS_pkgname variable with depends assigned to it. And in
your control.in append ${cdbs:Depends} to Depends field.&lt;/li&gt;
&lt;li&gt;CDBS_PROVIDES, CDBS_BREAKS, CDBS_RECOMMENDS, CDBS_PREDEPENDS,
CDBS_SUGGESTS, CDBS_REPLACES: all these does the job what you think
it does :-).&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Other than CDBS_BUILD_DEPENDS all other variables work using substvars
i.e. CDBS will put the respective substitutions in &lt;em&gt;pkgname.substvars&lt;/em&gt;
file which will be used during deb creation to replace things in
control file.&lt;/p&gt;

&lt;p&gt;So to make CDBS generate new control file run the below command&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;DEB_MAINTAINER_MODE=1 fakeroot debian/rules debian/control&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Basically this command needs to be executed before starting build
process if you miss your changes will not be reflected into
&lt;em&gt;debian/control&lt;/em&gt;. Additionally this feature is Maintainer Mode helper
tool because Debian policy prohibits change of debian/control during
&lt;strong&gt;normal&lt;/strong&gt; package build.&lt;/p&gt;

&lt;p&gt;So what is the benefit of using this feature of CDBS? I've listed some
of them which I felt are obvious.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When there is intersection in Build-Depends and Depends this
feature from CDBS is helpful. As I shown above put all intersecting
dependencies in common variable and appropriately assign them
wherever it is required. Thus we can avoid possible missing of some
of run-time dependencies due to human error.&lt;/li&gt;
&lt;li&gt;It is also possible that newer version of package requires specific
version of some package (mostly libraries) and we updated build
dependencies but we might forget to do the same in Depends, by
using this feature we can make sure we will not miss such minute
details.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;One last thing I want to point out is if you are NMUing a CDBS package&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;NMUs need not (but are encouraged to) make special use of these tools.
In particular, the debian/control.in file can be completely ignored.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Before closing down the post, If you find some mistake in the post
please let me know either through comments or through the
&lt;a href=&quot;http://scr.im/vasudev&quot;&gt;email&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Soon I will be back with new CDBS recipes till then cya.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Tribute to Beloved Teacher</title>
<link href="http://copyninja.info/2013/04/tribute_to_beloved_teacher.html"/>
<updated>2013-04-27T22:05:53-07:00</updated>
<id>http://copyninja.info/2013/04/tribute_to_beloved_teacher</id>
<content type="html">&lt;p&gt;Today I'm writing this blog with saddened heart. My mentor and a best
friend Dr.&lt;a href=&quot;https://twitter.com/ashok567&quot;&gt;Ashokkumar&lt;/a&gt; is no more. He
died yesterday after fighing with Lymph Node cancer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ashokkumar&lt;/em&gt; or &lt;em&gt;Ashok sir&lt;/em&gt; that is how we all students used to
 address him, was a Professor in Information Science Engineering in
 NMAM Institue of Technology and recently transferred to Computer
 Science Engineering Departement. My last meeting him with him was
 last year December during which he was looking every bit okay other
 than he had knee pain because of which he couldn't walk freely. But I
 never imagined that it will be my last meeting with him.&lt;/p&gt;

&lt;p&gt; Ashok sir was also behind the FLOSS event that took place in NMAM
 Institute of Technology including MiniDebconf 2011 which saw 2 of the
 foreign DD's Christian Perrier and Jonas Smedegaard.&lt;/p&gt;

&lt;p&gt; It was because of his first organized FLOSS event which I volunteered
 called &lt;em&gt;Linux Habba&lt;/em&gt; I entered into the FLOSS world. This means its
 because of him that I started my FLOSS world journey and reached to
 my current level. Also it was because of his motivation I started
 writing this blog which I continue till this day.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I whole heartedly thank Ashok sir for teaching me guiding me and
motivating me during my difficult times. You will always be
remembered through out my life. May your soul Rest In Peace.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Here are the 2 pics of Ashok sir taken during Minidebconf (Credits:
Christian Perrier and Kartik Mistry)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://gallery.debconf.org/d/57541-2/DSC00837.JPG&quot; alt=&quot;Ashokkumar with Jonas and Me&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://lh4.googleusercontent.com/-H5w-Wtp5Eeg/Tq97DNyxZPI/AAAAAAAACqE/gXBldGSJmZw/w762-h508/IMG_6267.JPG&quot; alt=&quot;Ashokkumar during inaugaration of MiniDebconf with Christian and Kartik on stage&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Good bye Sir :-(&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Handling C++ symbols that vary across architectures</title>
<link href="http://copyninja.info/2013/04/replacing_symbols_which_vary_over_different_architecture_using_script.html"/>
<updated>2013-04-14T06:15:25-07:00</updated>
<id>http://copyninja.info/2013/04/replacing_symbols_which_vary_over_different_architecture_using_script</id>
<content type="html">&lt;h2&gt;Disclaimer&lt;/h2&gt;

&lt;p&gt;I'm no symbol expert and dealing with symbol files for first time from
the time I started packaging. What I did here is depending on some
suggestions I got in #debian-mentors.&lt;/p&gt;

&lt;p&gt;If you think what I did was wrong please enlighten me :-).&lt;/p&gt;

&lt;h2&gt;Problem&lt;/h2&gt;

&lt;p&gt;Recently 2 of my library packages &lt;em&gt;pugixml&lt;/em&gt; and &lt;em&gt;ctpp2&lt;/em&gt; got accepted
into Debian archive and when buildd tried to build them on remaining
architectures other than one for which I uploaded (amd64) builds
failed. This was expected as symbols file which I generated was for
amd64. As usual I got 2 serious bug reports
&lt;a href=&quot;http://bugs.debian.org/704718&quot;&gt;#704718&lt;/a&gt; and
&lt;a href=&quot;http://bugs.debian.org/705135&quot;&gt;#705135&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Solution&lt;/h2&gt;

&lt;p&gt;First I was not sure how to handle this. I read article on symbols
files handling by rra [1] and tried to use pkgkde-symbolshelper tool
only to quickly figure out that I need to use pkgkde_symbolshelper
addon for dh sequencer. But this was not possible for me as I was
using CDBS for packaging.&lt;/p&gt;

&lt;p&gt;I did a quick chat on #debian-mentors and some one suggested me to tag
symbols which vary across architecture with (c++) tag. First I was not
sure but after reading dpkg-gensymbols man page understood that I need
to replace the entire mangled symbols lines with de-mangled version
tagged with (c++) in the beginning.&lt;/p&gt;

&lt;p&gt;But this was hectic job searching for each deleted symbols and
replacing it. So I thought of writing a script to do the job and after
struggling for 3 days (yeah I was bit dumb that I didn't read manual
date: &quot;2013-04-14 18:39:20 +0530&quot;
&lt;em&gt;pugixml&lt;/em&gt; and &lt;em&gt;ctpp2&lt;/em&gt; package using it, which is now waiting for Jonas
for uploading it.&lt;/p&gt;

&lt;p&gt;Here is the script&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;sh&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; +x

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$# &lt;/span&gt;-lt 3 &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;Usage: $0 failed_buildlogs_directory symbols_file package_version&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;exit &lt;/span&gt;2
&lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;    &lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;BUILD_LOG_DIRECTORY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;SYMBOLS_FILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$2&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;PACKAGE_VERSION&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$3&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;VERSION_TO_REPLACE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot; $PACKAGE_VERSION\&amp;quot;&amp;quot;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;LOGFILE in &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;ls &lt;span class=&quot;nv&quot;&gt;$BUILD_LOG_DIRECTORY&lt;/span&gt;/*.build&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;    for &lt;/span&gt;i in &lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;grep &lt;span class=&quot;s1&quot;&gt;&amp;#39;^-\s_Z&amp;#39;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$LOGFILE&lt;/span&gt; | perl -pe &lt;span class=&quot;s1&quot;&gt;&amp;#39;s/-//g;&amp;#39;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;        if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$PACKAGE_VERSION&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;;&lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;            continue&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;        fi&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;demangled_version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$PACKAGE_VERSION&lt;/span&gt; | c++filt&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;tagged_version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;(c++)&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;demangled_version&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$VERSION_TO_REPLACE&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;\&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$PACKAGE_VERSION&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;escaped_tagged_version&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$tagged_version&lt;/span&gt; | sed &lt;span class=&quot;s1&quot;&gt;&amp;#39;s/\&amp;amp;/\\\&amp;amp;/&amp;#39;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
        sed -i &lt;span class=&quot;s2&quot;&gt;&amp;quot;s#$i $PACKAGE_VERSION#$escaped_tagged_version#&amp;quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$SYMBOLS_FILE&lt;/span&gt;
   &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So basically to make this work we need all buildlogs to be downloaded
from buildd's again this was easy thanks to rra for developing
&lt;em&gt;pkgkde-getbuildlogs&lt;/em&gt; :-).&lt;/p&gt;

&lt;p&gt;Once you have build logs directory run the above script as follows&lt;/p&gt;

&lt;pre&gt;
cppsymbol_replace.sh path_to_buildlogs path_to_symbol_file upstream_version
&lt;/pre&gt;


&lt;p&gt;After replacing symbols I tried to build package on i386 chroot and
build passed successfully but lintian told me that there are symbols
which have Debian version appended to it and this might lead to
date: &quot;2013-04-14 18:42:42 +0530&quot;
back to mentors :-).&lt;/p&gt;

&lt;p&gt;It is this time I really understood concept of mangled names generated
by compiler and why it vary across the architecture ;-).&lt;/p&gt;

&lt;p&gt;This time some one by nick &lt;em&gt;pochu&lt;/em&gt; suggested me to pass option -v with
package version to dpkg-gensymbols to make it generate symbols with
package version and not Debian version.&lt;/p&gt;

&lt;p&gt;The following probably needs to be done if package uses dh sequencer
but I'm not sure as I've not tested it. If wrong please correct me.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;make&quot;&gt;&lt;span class=&quot;nf&quot;&gt;override_dh_makeshlibs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
    dh_makeshlibs -- -v&lt;span class=&quot;nv&quot;&gt;$PACKAGEVERION&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;#package version needs to be either extracted using parsechangelog or manually fed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;If you are using CDBS this is pretty simple. Just add following to rules&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;make&quot;&gt;&lt;span class=&quot;err&quot;&gt;DEB_DH_MAKESHLIBS_ARGS_&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;pkgname&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; +&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; -- -v&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;DEB_UPSTREAM_VERSION&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I noticed that when I provide (c++) tagged de-mangled name
dpkg-gensymbols simply replaces it with proper mangled name but the
deletion doesn't trigger an error in dpkg-gensymbols.&lt;/p&gt;

&lt;p&gt;This script me allowed to replace 128 symbols which were very tricky
and long with de-mangled and tagged version in ctpp2, so I hope it
should work across different packages without any problem. Only silly
mistake I did was occurrence of &amp;amp; symbol in function making sed go mad
which I took one full day to debug :facepalm:.&lt;/p&gt;

&lt;p&gt;So that's it folks, if you see something wrong in what I did please
let me know through the comments.&lt;/p&gt;

&lt;p&gt;[1] &lt;a href=&quot;http://www.eyrie.org/~eagle/journal/2012-01/008.html&quot;&gt;http://www.eyrie.org/~eagle/journal/2012-01/008.html&lt;/a&gt;&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Multi-Arch lintian check for font packages</title>
<link href="http://copyninja.info/2013/03/multi-arch_lintian_check_for_font_packages.html"/>
<updated>2013-03-08T07:14:50-08:00</updated>
<id>http://copyninja.info/2013/03/multi-arch_lintian_check_for_font_packages</id>
<content type="html">&lt;p&gt;I've provided a new patch &lt;a href=&quot;http://bugs.debian.org/701061&quot;&gt;#701061&lt;/a&gt; for
lintian to warn about font packages that are not marked as &lt;em&gt;Multi-Arch
foreign or allowed&lt;/em&gt;. Its already included in the lintian by &lt;em&gt;Neils
Thykier&lt;/em&gt; and will be part of version
&lt;em&gt;2.5.12&lt;/em&gt;. The following tag has been implemented&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;font-package-not-multi-arch-foreign
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A Bit of History for this implementation is as follows:&lt;/p&gt;

&lt;p&gt;We got a bug report on one of the fonts in pkg-fonts team that its not
been installed in i386 architecture on a amd64 multi-arch system
&lt;a href=&quot;http://bugs.debian.org/694864&quot;&gt;#694864&lt;/a&gt;. We were first confused but
&lt;a href=&quot;http://debian-administration.org/users/dkg&quot;&gt;Daniel Kahn Gillmor&lt;/a&gt;
&lt;a href=&quot;http://lists.alioth.debian.org/pipermail/pkg-fonts-devel/2012-December/011392.html&quot;&gt;pointed&lt;/a&gt;
that we indeed need to mark all font packages as Multi-Arch
foreign. He proposed that we should write a lintian check for this
which I volunteered to do and then forgot!. Recently I was checking my
QA page and landed into Ubuntu's page of my package where I saw they
were patching imported font package and marking them as Multi-Arch:
foreign and I suddenly remembered my promise! and this patch was the
result of same enlightenment :-).&lt;/p&gt;

&lt;p&gt;Since there is huge number of font packages maintained by pkg-fonts
devel we targeted this for Jessie release.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Here by I request all font package maintainers to consider marking
their packages as Multi-Arch foreign. I also request people to join us
on pkg-fonts-devel and help us doing this for all font packages
maintained by the team, we really lack people in the team.&lt;/p&gt;&lt;/blockquote&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>CDBS Packaging : copyright file support</title>
<link href="http://copyninja.info/2013/02/cdbs_packaging_%3A_copyright_file_support.html"/>
<updated>2013-02-11T01:57:49-08:00</updated>
<id>http://copyninja.info/2013/02/cdbs_packaging_:_copyright_file_support</id>
<content type="html">&lt;p&gt;One of the thing CDBS provides is support for verifying / generating
&lt;em&gt;debian/copyright&lt;/em&gt; file. This feature will be help full if new files
show up in newer releases. It can also be helpful to generate the
first version of copyright file. But don't blindly follow this
feature, you need to cross verify the things it generates.&lt;/p&gt;

&lt;p&gt;To use this feature add the following line to your &lt;em&gt;debian/rules&lt;/em&gt; file
first&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;make&quot;&gt;&lt;span class=&quot;cp&quot;&gt;include /usr/share/cdbs/1/rules/utils.mk &lt;/span&gt;
 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Now create a file called &lt;em&gt;debian/copyright_hints&lt;/em&gt; using touch command&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;touch debian/copyright_hints
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now run the following command to allow CDBS to do its magic and
generate a new file called &lt;em&gt;debian/copyright_newhints&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;DEB_MAINTAINER_MODE=1 fakeroot debian/rules build
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As you see we set the variable &lt;code&gt;DEB_MAINTAINER_MODE&lt;/code&gt; which means this
is feature to help the maintainer rather than targeted for automatic
builds. So if there is no new things added to the new release you
should see something like this in the build log.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Scanning upstream source for new/changed copyright notices...


licensecheck -c '.*' -r --copyright -i '^debian/(changelog|copyright(|_hints|_newhints))' -l '99999' * | /usr/lib/cdbs/licensecheck2dep5 &amp;gt; debian/co$
yright_newhints
19 combinations of copyright and licensing found.
No new copyright notices found - assuming no news is good news...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In case there are new files added you should get output similar to below&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Scanning upstream source for new/changed copyright notices...

licensecheck -c '.*' -r --copyright -i '^debian/(changelog|copyright(|_hints|_newhints))' -l '99999' * | /usr/lib/cdbs/licensecheck2dep5 &amp;gt; debian/co$
yright_newhints
0 combinations of copyright and licensing found.

Format: http://www.debian.org/doc/packaging-manuals/…
Upstream-Name: FIXME
Upstream-Contact: FIXME
Source: FIXME
Disclaimer: Autogenerated by CDBS

...

To fix the situation please do the following:
  1) Fully compare debian/copyright_hints with debian/copyright_newhints
  2) Update debian/copyright as needed
  3) Replace debian/copyright_hints with debian/copyright_newhints
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So as the last 3 points says you need to compare your
&lt;em&gt;copyright_hints&lt;/em&gt; and the newly generated file by CDBS
&lt;em&gt;copyright_newhints&lt;/em&gt; for difference and update the debian/copyright as
required and replace the existing &lt;em&gt;debian/copyright_hints&lt;/em&gt; with
&lt;em&gt;debian/copyright_newhints&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Tips&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;This feature can be used to generate the copyright file for the
first time you need a copyright file with only debian/* copyright in
it.&lt;/li&gt;
&lt;li&gt;If you are using it to generate copyright file for the first time
be sure to cross verify the things mentioned in the file than just
blindly copy pasting.&lt;/li&gt;
&lt;li&gt;If there are binary files like images are involved in your project
be sure to clean up those from your copyright_hints before trying to
build the package. Because of too much of binary cruft in any files
means dpkg-source will be angry at you :-).&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Last but not the least, I know CDBS provides some really cool features
which we will explore with next few posts but always keep in mind this
quote by Jonas. (Of course don't ask me to prove that Jonas did say it
as there is no pgp signature of him with quote to verify ;-) )&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;CDBS is tool to help packagers and does not involve any magic.&lt;/p&gt;&lt;/blockquote&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>New Series of Posts on CDBS packaging</title>
<link href="http://copyninja.info/2013/02/new_series_of_posts_on_cdbs_packaging.html"/>
<updated>2013-02-10T23:47:31-08:00</updated>
<id>http://copyninja.info/2013/02/new_series_of_posts_on_cdbs_packaging</id>
<content type="html">&lt;p&gt;Well this is just an introductory post to set of posts I'm going to
write down here on my blog. Idea is to improve the documentation of
CDBS but I still don't have any idea on how I can patch the existing
documentation, but in the mean time I'm learning new tricks from Jonas
which I want to document some where so I thought my blog would be a
good place as whole blog is in markdown format and its the same format
me and Jonas agreed to convert the existing CDBS documentation.&lt;/p&gt;

&lt;p&gt;So this blog will act as a documentation and these post will be then
altered modified and put back into a proper CDBS documentation later.&lt;/p&gt;

&lt;p&gt;&lt;strike&gt;
I know many people don't like CDBS and most of it because there is no
proper documentation, so I'm trying to improve the situation so sit
back and enjoy the upcoming posts :-).
&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;OK I was sloppy in giving theory on what others think about the CDBS
thanks to &lt;a href=&quot;http://www.hands.com/~phil/&quot;&gt;Phill Hands&lt;/a&gt; and Jonas for
enlightening me. So with these series I'm just trying to explain CDBS
features with real examples and examples how you can tame nasty
packaging beasts with CDBS easily.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Multi-Arch based Cross-Compilation</title>
<link href="http://copyninja.info/2013/01/multi-arch_based_cross-compilation.html"/>
<updated>2013-01-26T07:37:26-08:00</updated>
<id>http://copyninja.info/2013/01/multi-arch_based_cross-compilation</id>
<content type="html">&lt;h2&gt;Disclaimer:&lt;/h2&gt;

&lt;p&gt;I'm not cross-compile expert or have done cross-compilation before
this post is not comparison between normal cross compilation and
multi-arch based cross compilation, this post is purely about how I
achieved cross compilation using Multi-Arch feature introduced by
Debian.&lt;/p&gt;

&lt;h2&gt;Problem&lt;/h2&gt;

&lt;p&gt;Get a OS ready for the raspberry-pi computer I purchased recently. No
I don't want to use Raspbian even though it claims as Debian itself. I
want a clean armel based OS with only components what I require. This
is also sort of experiment to improve
&lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/boxer.git;a=summary&quot;&gt;boxer&lt;/a&gt;
by adding rpi support to it. (Even though Jonas considers rpi as swamp ;-) )&lt;/p&gt;

&lt;p&gt;Components need to be compiled:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;u-boot&lt;/li&gt;
&lt;li&gt;Linux Kernel&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Architecture: armel&lt;/p&gt;

&lt;h2&gt;Solution:&lt;/h2&gt;

&lt;p&gt;The first thing to do is to add the required foreign architecture in
my case &lt;em&gt;armel&lt;/em&gt;, this can be done using below command.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dpkg --add-architecture armel
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then update package list with whatever package management utility, in
my case I used aptitude. But before doing that we need to add a
repository which provides us GCC cross compiler with gnueabi
support. Yes it is not yet in Debian main and with my discussion with
Jonas what I understood is since Wheezy is first of a kind with
multi-arch capability we can expect cross compiler tool only from
Jessie.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb http://emdebian.org/~thibg/repo/ sid main
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This repository is by emdebian contributor not completely sure about
his name but he hangs in #emdebian with nick ThibG. According to Jonas
repository is bit old but its working where as latest repository from
wookey is broken, though this was told a couple of week back and I
don't know about current status.&lt;/p&gt;

&lt;p&gt;Now run &lt;em&gt;aptitude update&lt;/em&gt; to get package list refreshed after adding
the new repo. Once done we need to install &lt;em&gt;gcc-4.7-arm-linux-gnueabi&lt;/em&gt;
, run the following command and I suggest you use aptitude because it
will help you resolve dependency mess easily. When dependency
suggestion is given for first time try pressing &lt;em&gt;e&lt;/em&gt; to enter full
screen aptitude and navigate through the solution provided using &lt;em&gt;.&lt;/em&gt;
and &lt;em&gt;,&lt;/em&gt; and select appropriate solution using &lt;em&gt;!&lt;/em&gt;. Then press &lt;em&gt;g&lt;/em&gt; to
install the package.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;aptitude install gcc-4.7-arm-linux-gnueabi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This scenario showed me real power of the aptitude which till then I
was thinking as nutcase :-).&lt;/p&gt;

&lt;p&gt;The above package installs all the cross compilation tools required
beginning with prefix &lt;em&gt;arm-linux-gnueabi-&lt;/em&gt; but it doesn't create a
required symlink /usr/bin/arm-linux-gnueabi-gcc pointing to
/usr/bin/arm-linux-gnueabi-gcc-4.7 which is required by all tools for
cross compiling, add an alternative using following commands to fix
the issue in the package tools&lt;strike&gt; just create this symlink
manually&lt;/strike&gt; and you should have GNU cross compiler ready on your
system for [armel](http://wiki.debian.org/ArmEabiPort architecture.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;http://emdebian.org/~zumbi&quot;&gt;zumbi&lt;/a&gt; for pointing out the write way to fix the package&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo update-alternatives --install /usr/bin/arm-linux-gnueabi-gcc arm-linux-gnueabi-gcc /usr/bin/arm-linux-gnueabi-gcc-4.7 46 
           --slave /usr/bin/arm-linux-gnueabi-g++ arm-linux-gnueabi-g++ /usr/bin/arm-linux-gnueabi-g++-4.7 
           --slave /usr/bin/arm-linux-gnueabi-gcov arm-linux-gnueabi-gcov /usr/bin/arm-linux-gnueabi-gcov-4.7
           --slave /usr/bin/arm-linux-gnueabi-gfortran arm-linux-gnueabi-gfortran /usr/bin/arm-linux-gnueabi-gfortran-4.7
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now to cross compile all you need to do is&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;export CROSS_COMPILE=arm-linux-gnueabi-
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once this package lands to Debian main, cross compiling will be way
more easier.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Note to Self: Telling apt to download specific architecture information only</title>
<link href="http://copyninja.info/2012/12/note_to_self%3A_telling_apt_to_download_specific_architecture_package.html"/>
<updated>2012-12-27T07:02:17-08:00</updated>
<id>http://copyninja.info/2012/12/note_to_self:_telling_apt_to_download_specific_architecture_package</id>
<content type="html">&lt;p&gt;If you have enabled multi-arch enabled in your system and one of the
third party repository you use in /etc/apt/sources.list is not
providing the foreign arch you have selected then fear not just do the
below for that particular repository line.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb [arch=arch1] uri distribution component
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In my case mozilla.debian.net doesn't provide binary-armel hence I just did this&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb [arch=amd64] http://localhost:9999/mdn experimental iceweasel-aurora
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and apt stopped complaining about missing foreign arch. Well this is
present in man page of sources.list but I just wrote here so I can
find it easily next time :-).&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 17/23 - 112012</title>
<link href="http://copyninja.info/2012/11/weekly_log_-_17112012.html"/>
<updated>2012-11-19T07:07:30-08:00</updated>
<id>http://copyninja.info/2012/11/weekly_log_-_17112012</id>
<content type="html">&lt;p&gt;The last week was quite productive as I was on vacation and at home town but sadly I
couldn't complete this post so again merging the work with this week but this week ain't
much productive as I was tired from journey back and didn't get enough time to recover.
So here it goes.&lt;/p&gt;

&lt;h2&gt;Debian Related&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I did a little more fine tuning of friendica package to enable http://localhost/friendica
on installation and shipped virtual host configuration for Apache and Nginx which user
can simply copy to setup a proper friendica instance. I'm not sure if this is right to do
or not but Drupal package does this but only it doesn't enable it during installation and
leaves it up to user to create required symlink to enable http://localhost/drupal7. Well this
is my first time in packaging webapp so I'm all open for suggestions&lt;/li&gt;
&lt;li&gt;Helped Tobias Diekershoff prepare and upload the friendica package to mentors and file RFS bug.
We got bug number &lt;a href=&quot;http://bugs.debian.org/693504&quot;&gt;#693504&lt;/a&gt; and now we are looking for sponsors,
if you are a DD reading this post and interested in federated social networking and can sponsor
us it would be great :-)&lt;/li&gt;
&lt;li&gt;Started learning CDBS and converted the Kiwix package to CDBS. I'm glad that Jonas is helping me
out when I'm struck some where. Also kiwix is now updated to latest version 0.9~rc2 and I need
to do some more fine tuning before asking for upload from Jonas.&lt;/li&gt;
&lt;li&gt;I started helping Jonas to put up CDBS documentation. He suggested me to take over the documentation
from duckcorp and then merge other documentation in CDBS git tree. As of now I only managed to
separate out the chapters from docbook to markdown format. The conversion was done using &lt;em&gt;pandoc&lt;/em&gt;
but code formatting in docbook was not proper I guess so after conversion it needed some manual
intervention in fixing and formatting code blocks. The repository for CDBS doc is &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/cdbs-doc.git;a=summary&quot;&gt;here&lt;/a&gt;
and as of now doesn't contain any new things.&lt;/li&gt;
&lt;li&gt;Converted one more of my font package fonts-gubbi to CDBS format but I'm now facing a issue that
CDBS is including docs inside the generated udeb which is not right, I already posted the question
on how to handle this to &lt;em&gt;build-common-hackers&lt;/em&gt; and waiting for Jonas to reply back.&lt;/li&gt;
&lt;li&gt;I claimed the ITP &lt;a href=&quot;http://bugs.debian.org/651600&quot;&gt;#651600&lt;/a&gt; on Roboto fonts from Android OS. After
a short discussion with Fabian on pkg-fonts-devel I agreed to merge it with existing &lt;em&gt;fonts-droid&lt;/em&gt; and
renamed the source package to &lt;em&gt;fonts-android&lt;/em&gt; which now builds &lt;em&gt;fonts-droid&lt;/em&gt; and &lt;em&gt;fonts-roboto&lt;/em&gt;. Package
is ready but I'm still seeing if I can fix any bugs on &lt;em&gt;fonts-droid&lt;/em&gt; before asking for a upload.&lt;/li&gt;
&lt;li&gt;Wrote a simple script which was derived from droid fonts package from Fedora to get the android fonts
from the upstream repository automatically. Enabled this in get-orig-source target for fonts-android.
Since cloning a more than 600M repository is PITA I have a local copy of fonts-android and use it to
create new release of fonts-android. Additionally I should say script is not well tested ;-)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;suckless-tools&lt;/em&gt; has entered into Debian Experimental thanks to Jakub Wilk for a very nice review of
the package which went in a long thread of more than 50 mails in debian-mentors. The package itself
closed a shit load of bugs, but after upload I noticed there are still some pending bugs which I missed
from adding to changelog. So I closed &lt;strike&gt;&lt;a href=&quot;http://bugs.debian.org/606148&quot;&gt;#606148&lt;/a&gt;&lt;/strike&gt; and
&lt;strike&gt;&lt;a href=&quot;http://bugs.debian.org/689199&quot;&gt;#689199&lt;/a&gt;&lt;/strike&gt;. Still there are 2 more bugs which seems
like fixed in newer version but I need to confirm before closing them, thus making suckless-tools
a bug free package.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Upstream Related&lt;/h2&gt;

&lt;p&gt;I raised a pull request &lt;a href=&quot;https://github.com/aravindavk/Gubbi/pull/8&quot;&gt;#8&lt;/a&gt; on Gubbi fixing the Makefile
to more organized and introducing xz compression in it. Additionally I removed distribution specific
stuffs from Makefile and made it generic.&lt;/p&gt;

&lt;p&gt;That's all for the two weeks. This week there will be &lt;a href=&quot;http://foss.in&quot;&gt;foss.in&lt;/a&gt; and we will be having
some Debian specific mini conference, including some Debian basics to newbies and some bug squashing
if any :-). So more to report next week, till then Cya.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 27/3 - 112012</title>
<link href="http://copyninja.info/2012/11/weekly_log_-_20121110.html"/>
<updated>2012-11-11T00:04:52-08:00</updated>
<id>http://copyninja.info/2012/11/weekly_log_-_20121110</id>
<content type="html">&lt;p&gt;OK I became again lazy to log my works and combined 2 weeks again :-).
Most of my work is for Debian for this 2 weeks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More reviews from Jakub on suckless-tools and more fixing :-). This time Jakub
identified that ssid is not at all different the setsid from utils-linux package
which resulted in me writing to Anselm Garbe of suckless project, who told that
first reason for writing ssid was setsid code during that time[1] which really does
suck. He agreed to obsolete the ssid project after some clarifications.&lt;/li&gt;
&lt;li&gt;After mail to Conor Lane Smith upstream author of sprop and then writing to Anselm,
sprop now has finally is placed under dl.suckless.org/tools which means I don't need
to refer to Mercurial tip anymore.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;fonts-deva-extra&lt;/em&gt; is no more containing the &lt;em&gt;Gargi&lt;/em&gt; and &lt;em&gt;Sarai&lt;/em&gt; fonts as both fonts
have got upstream and now will be part of &lt;em&gt;fonts-gargi&lt;/em&gt; and &lt;em&gt;fonts-sarai&lt;/em&gt;. I'm now
reviewing fonts-gargi which is being packaged by  Jishnu. To be frank I'm loving the
review process ;-).&lt;/li&gt;
&lt;li&gt;After a while I again worked on friendica package for Debian and after fixing a stupid
mistake by me I released a version of package for testing as I run my friendica on my
laptop itself. I did try piuparts for testing but couldn't get it working. After testing
I got positive feedback from the fellow friendicans [2][3]. Note that [2] will be available
only if my laptop is online :-). Now I need to try and automate installation of webserver
confs I know might not be good idea but my idea is making friendica installation on Freedombox
without any hassle. Of course suggestions are welcome :-) package source is at [4]&lt;/li&gt;
&lt;li&gt;I got a grave bug filed on suckless-tools &lt;a href=&quot;http://bugs.debian.org/692737&quot;&gt;#692737&lt;/a&gt; which
of course can't be taken as security hole directly in fact it was a feature of slock which
later got  modified later by user patches. After talking with person who filed bug who actually
said he is not interested in getting it for Wheezy I reduced severity to important. To be
frank this feature is part of 39 version of suckless-tools but change is too much to include
it in Wheezy and I was not interested in making another version of suckless-tools I already
made 38-2 for wheezy fixing important bug, filed by Jakub.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This week was bit hectic I couldn't dedicate much time for any programming. This week I'm on vacation
and will get more time to work on FLOSS and other coding stuffs. Only that I'm on slow network
connection :-). Ok cya next week (hopefully)&lt;/p&gt;

&lt;p&gt;PS: My last weekly log never showed up in planet.d.o not sure what happened may be because I
played with feed generating jekyll scripts. Hope this will show up in planet.d.o&lt;/p&gt;

&lt;p&gt;[1] http://code.metager.de/source/xref/linux/utils/util-linux/sys-utils/setsid.c &lt;br/&gt;
[2] http://vasudev.homelinux.net/display/copyninja/34241 &lt;br/&gt;
[3] https://kakste.com/display/beardyunixer/974150 &lt;br/&gt;
[4] anonscm.debian.org/gitweb/?p=collab-maint/friendica.git;a=summary &lt;br/&gt;&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 20/27-102012</title>
<link href="http://copyninja.info/2012/10/weekly_log_-_20102012.html"/>
<updated>2012-10-14T10:31:58-07:00</updated>
<id>http://copyninja.info/2012/10/weekly_log_-_20102012</id>
<content type="html">&lt;p&gt;This week decided to write the log from the beginning of the week itself as
I don't want to miss any tasks done. So here comes the list. Also I merged 2 weeks
log together not because I didn't do much but recently I was being bit lazy :-P&lt;/p&gt;

&lt;h2&gt;Debian Related&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Some more fixes done to suckless-tools 38 version as per comments
from Jakub Wilk&lt;/li&gt;
&lt;li&gt;After some poking from Intrigeri (my AM) I finally placed the new
38-2 related stuffs in Wheezy branch of suckless-tools.git which
I originally prepared for 39 version&lt;/li&gt;
&lt;li&gt;After few minor fixes Jakub Wilk has uploaded 38-2 and thus I kill
one more RC bug for wheeze &lt;a href=&quot;http://bugs.debian.org/685611&quot;&gt;&lt;strike&gt;#685611&lt;/strike&gt;&lt;/a&gt;. Well my AM has given me clue that
more RC bugs might be coming my way as part of NM process and I'm waiting :-)&lt;/li&gt;
&lt;li&gt;More clarifications on my answers on Philosophy and Procedures - 1
were sent back and I need to give some more again ;-). Will do that probably
on Sunday&lt;/li&gt;
&lt;li&gt;Fixed issues in installing fontconfig files in font packages &lt;em&gt;fonts-beng-extra&lt;/em&gt;
and &lt;em&gt;fonts-smc&lt;/em&gt; no bugs were filed though. fonts-smc can't be uploaded to unstable
for sure as it contains a udeb (fonts-mlym-udeb). Kartik told he will discuss
with release-team about fonts-beng-extra but I guess he forgot ;-).&lt;/li&gt;
&lt;li&gt;Helped new guys to learn Debian packaging on #debian-diaspora, initiative started by
Praveen Arimbrathodiyil who actually taught me the packaging. Idea is to package Diaspora.
Even though I'm not much interested in Diaspora I'm helping there as Praveen is my good
friend and mentor and in a way I want to increase contributors to Debian.&lt;/li&gt;
&lt;li&gt;Started working on suckless-tools 39 fixed few minor issues now seeing a hardening issue
which I need to fix before each can be safely uploaded to experimental.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Python Based&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fixed the Unicode comparison issue in the charmap.py from the soundex Python
module. Basically when both side of &lt;em&gt;==&lt;/em&gt; operator are not of Unicode type the
Python considers them to be unequal even if they are equal. Well this is the
encoding pain in Python versions less than 3. Now this is handled in 0.3 version
of soundex.&lt;/li&gt;
&lt;li&gt;Spellchecker module is now having Marathi language support but it doesn't seems
to be working fine so 0.3 version is not yet completely done.&lt;/li&gt;
&lt;li&gt;Guess Language module from SILPA is now separate module and is uploaded to pypi,
though its integration with SILPA rewritten in Flask is pending.&lt;/li&gt;
&lt;li&gt;Replaced the pyxmpp2 module used in the dictionary bot to sleekxmpp as it already
supports XEP's which I plan to use in the bot&lt;/li&gt;
&lt;li&gt;Fine tuned  the parsing and returning logic of dictionary-bot and integrated language
guessing support.&lt;/li&gt;
&lt;li&gt;Inspired by Jonas's coding on smsg I also modified the code so that if needed it
can be easily packaged and also can be tested without need to actually installing it.&lt;/li&gt;
&lt;li&gt;Added logging functionality to the dictionary bot but yet to log actual data from the
bot so that can be analysed later&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Few more details on dictionary-bot needs to be sorted out to make it production ready
and I'm not getting enough time to do so. May be I should write down TODO's some where
so I won't loose track of it.&lt;/p&gt;

&lt;h2&gt;Perl Based&lt;/h2&gt;

&lt;p&gt;Not much tasks were done on Perl but I managed to help Jonas to sort out an important issue
which was a show stopper for using smsg in the performance he is attending in Zurich. Below
are tasks done&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moved the Jabber.pm code which was using &lt;em&gt;AnyEvent::XMPP::Client&lt;/em&gt; to Client.pm which inherits
from Jabber.pm, basically idea is create one ore class Connection which uses &lt;em&gt;AnyEvent::XMPP::Connection&lt;/em&gt;
which can be used to connect send message and disconnect. Did you see &lt;em&gt;inherit&lt;/em&gt; don't be surprised
thanks to Jonas I had to learn bit about Moo :-)&lt;/li&gt;
&lt;li&gt;Slightly modified HttpSend.pm command to send the message to Jabber chat room, this was the
show stopper for smsg. And after this fix Jonas happily used it in his theatre performance in
Zurich.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Wildfire Liberation&lt;/h2&gt;

&lt;p&gt;I struggled almost 3 days to get my HTC Wildfire liberated from HTC stock OS. I got to know about
&lt;a href=&quot;http://htcdev.com&quot;&gt;HTC Developers Site&lt;/a&gt; with which HTC officially allows the unlocking the bootloader.
After unlocking I was not sure on how to get ClockworkMod Recovery in my device and get root the
tools mentioned in different places, &lt;em&gt;revolutionary&lt;/em&gt; and &lt;em&gt;unrevoked&lt;/em&gt; were not happy with my new
HBOOT version 1.02.0000 after struggling a bit I managed to manually download the ClockworkMod
for Wildfire from this &lt;a href=&quot;http://downloads.unrevoked.com/recoveries/cwm-4.0.1.4-buzz.img&quot;&gt;site&lt;/a&gt; but then
again I was afraid of bricking my phone. But thanks to &lt;a href=&quot;https://twitter.com/jishnu7&quot;&gt;Jishnu's&lt;/a&gt; timely advice I managed to flash
my device and install CM7. Now I enjoy my 2 year old Wildfire!&lt;/p&gt;

&lt;p&gt;For those who want to flash their Wildfire with HBOOT version 1.02.0000 please follow the &lt;strong&gt;Method via HTC website&lt;/strong&gt; section
&lt;a href=&quot;http://wiki.cyanogenmod.com/wiki/HTC_Wildfire:_Full_Update_Guide&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Misc&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Met Kartik on 20th wanted to have a mini BSP but we got lost in talking as we met after one year&lt;/li&gt;
&lt;li&gt;Watched few bunch of movie. This week was bit short as in between the week 3 holidays came due
to festivals.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Well that is it for the 2 weeks hopefully I will see ya on next week :-) or next to next if I merge
my weekly logs again ;-). Till then Cya.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 06/13-102012</title>
<link href="http://copyninja.info/2012/10/weekly_log_-_20121013.html"/>
<updated>2012-10-13T09:48:48-07:00</updated>
<id>http://copyninja.info/2012/10/weekly_log_-_20121013</id>
<content type="html">&lt;h2&gt;Update for 06/10/2012&lt;/h2&gt;

&lt;p&gt;Well I had not written the weekly work log for the last week that
is because the week was short (oh yeah thanks to all these bandhs
our week got fluctuated and to be frank the week was only 4 days
long) and second was my lazyness. Here goes the update
 * After a long discussion with &lt;a href=&quot;http://aravindavk.in&quot;&gt;Aravinda&lt;/a&gt; on
   &quot;why productivity is reducing these days.&quot; We concluded the social
   network is eating up most of time. So decision was made and I closed
   all pinned tabs for Twitter Gmail Identi.ca and Friendica on my browser
 * After the above resolution I finished almost 4 chapters of &lt;em&gt;Moder Perl&lt;/em&gt;
   within 2 hours!. Indeed Social networks kill the productivity.&lt;/p&gt;

&lt;h2&gt;Update for 13/10/2012&lt;/h2&gt;

&lt;p&gt;I've really fallen in love with computerised bots, thanks to the wonderful
KGB bot :-). So majority of my work on this week is on bots.&lt;/p&gt;

&lt;h4&gt;Jabber Dictionary Redesign&lt;/h4&gt;

&lt;p&gt;After thinking for a while I decided to re-write the &lt;a href=&quot;http://copyninja.info/2010/11/a-jabber-dictionary-bot-for-kannada.html&quot;&gt;dictionary bot&lt;/a&gt;
which when release got an overwhelming response as see in the comments of
above link. Few reason for re-write&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generalise the bot framework so single bot can handle multiple languages&lt;/li&gt;
&lt;li&gt;Improve the data collection on bot side&lt;/li&gt;
&lt;li&gt;Current code base was not very well organised and trying to add more feature it had become messy.&lt;/li&gt;
&lt;li&gt;Provide XEP support to help in data collections&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Few changes which are already implemented include&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;New code is now using &lt;em&gt;pyxmpp2&lt;/em&gt; library instead of GPLed &lt;em&gt;xmppy&lt;/em&gt; used by current
code.&lt;/li&gt;
&lt;li&gt;Implemented XEP-0071 extension to properly format the meaning display by the bot&lt;/li&gt;
&lt;li&gt;Current implementation was displaying all words in one set without distinguishing
between adjectives,verbs proverbs etc. even though wiktionary displays meaning based
on this. New implementation gives out meaning in same format as it is displayed on
wiktionary.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Things remaining todo&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Separating wiktionary parsing logic from bot code by providing some sort of intermediate
interface between bot and wiktionary parsers.&lt;/li&gt;
&lt;li&gt;Adding more language wiktionary parsers and teaching the bot to become multilingual :-)&lt;/li&gt;
&lt;li&gt;Integrating XEP-0004 (Data Forms) for taking the meaning input from user. Current code
requires user to enter data in particular format&lt;/li&gt;
&lt;/ol&gt;


&lt;h4&gt;suckless-tools fix for Wheezy&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Jakub Wilk&lt;/em&gt; suggested me to prepare a minimal version of suckless-tools for Wheezy which includes
a patch to the bug &lt;a href=&quot;http://bugs.debian.org/685611&quot;&gt;#685611&lt;/a&gt;. And few minor changes which involve
taking over the package and fixes in copyright file other than above mentioned bug. Hopefully
release-team will be okay with these changes. I'm waiting for the upload to file an unblock-request.&lt;/p&gt;

&lt;p&gt;I did face a problem I was halfway through wit suckless-tools_39-1 when Jakub asked me about this
change and current repository was fresh one prepared for 39-1 and didn't have history for 38 version.
First I thought of preparing separate repository for 38 version which was not an correct option,
but I even couldn't play with current repository. So finally I renamed current version of repository
to suckless-tools-39.git on collab-maint and prepared fresh repository suckless-tools.git basing
it on 38-1 version.&lt;/p&gt;

&lt;p&gt;From 39 version suckless-tools will be following 3.0 (quilt) source format and will not be working
with git-buildpackage as the tool can't handle multi-tarball packages. Yes every tool involved in
the package will have separate tarball from 39.&lt;/p&gt;

&lt;h4&gt;More work on Bots&lt;/h4&gt;

&lt;p&gt;Well today I again worked on Jabber bot, but not the dictionary bot. This time its an SMS Gateway
bot for &lt;em&gt;Jonas Smedegard&lt;/em&gt; and the coding was done in Perl. Thanks to jonas I finally could apply
what I learnt in Perl. Code may not be very elegant but it works :-).&lt;/p&gt;

&lt;p&gt;And after hacking one full day in Perl now I'm not feeling very much interested to go back and
hack on my own Python based dictionary bot :-). But I will anyway.&lt;/p&gt;

&lt;h4&gt;Misc&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;fonts-kalapi has been uploaded to &lt;em&gt;unstable&lt;/em&gt; by Kartik finally :-). Only sad part is he couldn't
use the home grown dh-make-font for this purpose.&lt;/li&gt;
&lt;li&gt;Finally Kartik is here in Bangalore and I'm just waiting when I can meet him.&lt;/li&gt;
&lt;li&gt;I ordered a RaspberryPi once it comes some hacking will be done on boxer again :-)&lt;/li&gt;
&lt;li&gt;Watched couple of &lt;em&gt;Star Wars&lt;/em&gt; movie :-) (Still have 4 left)&lt;/li&gt;
&lt;li&gt;Expendables 2 movie is in watch list after this post.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;So that's it folks. Quite longish post hope you are not bored reading it :-). Well time for movie
C'ya all with next weeks log.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 01102012</title>
<link href="http://copyninja.info/2012/10/weekly_log_-_01102012.html"/>
<updated>2012-10-01T09:15:02-07:00</updated>
<id>http://copyninja.info/2012/10/weekly_log_-_01102012</id>
<content type="html">&lt;p&gt;Well this weeks log comes bit late as my week got extended till today ;-).
I had working day at office on Saturday and Sunday due to 2nd Quarter end
and instead today is declared as compensatory holiday and tomorrow any how
is &lt;a href=&quot;https://en.wikipedia.org/wiki/Gandhi_Jayanti&quot;&gt;Gandhi Jayanti&lt;/a&gt;. So here
it goes.&lt;/p&gt;

&lt;h2&gt;Debian Related&lt;/h2&gt;

&lt;p&gt;Most of my work this week was done for Debian-IN team&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrated the KGB bot for Debian-IN team repository. Thanks to &lt;em&gt;gregoa&lt;/em&gt;
&lt;em&gt;Tincho&lt;/em&gt; and &lt;em&gt;dam&lt;/em&gt; for extending helping hand in getting it configured&lt;/li&gt;
&lt;li&gt;Updated the &lt;em&gt;setup-repository&lt;/em&gt; to install a proper post-receive hook when
creating new repositories.&lt;/li&gt;
&lt;li&gt;Copied the &lt;em&gt;set-git-hook&lt;/em&gt; from pkg-ruby-extras team and modified it slightly
to install post-receive hook for KGB integration for already existing repository.
With this script I fixed few of the packages to use KGB which I own. Waiting
for Kartik to fix remaining repositories as he is the &lt;em&gt;DD&lt;/em&gt; for our team :-)&lt;/li&gt;
&lt;li&gt;Configured my personal instance of KGB which now stands in Debian-IN's channel
(#debian-in). But bot is named RAW (Research and Analysis Wing) equivalaent
of KGB and CIA in India :-P&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Well most of this weeks work involved KGB ;-)&lt;/p&gt;

&lt;h2&gt;Personal Works&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Attended the PyconIndia-2012 on Saturday, Got a NFC card :-) which I can't
use as my phone is not NFC capable. Only handful of talks were nice rest were
all newbie like talk which even lacked proper presentation skills hence didn't
attend on second day. Looks like quality of conference in India is decreasing.&lt;/li&gt;
&lt;li&gt;Finally completed answering all questions on &lt;em&gt;Philosophy and Procedures - 1&lt;/em&gt; part
of NM process :-). Phew it took me more time than I expected. Waiting for my AM's
comment. Hopefully I will get next bunch of questions soon :-)&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Misc&lt;/h2&gt;

&lt;p&gt;Played &lt;em&gt;Cricket&lt;/em&gt; after very long time (Guess after 10 long years). Well it was not
official match or anything it was just another &lt;em&gt;Gully Cricket&lt;/em&gt;. After the match it
came to mind that I need regular physical workout :-P.&lt;/p&gt;

&lt;p&gt;Well that's it Cya till next week :-)&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Weekly Log - 22092012</title>
<link href="http://copyninja.info/2012/09/weekly_log_-_22092012.html"/>
<updated>2012-09-22T09:57:31-07:00</updated>
<id>http://copyninja.info/2012/09/weekly_log_-_22092012</id>
<content type="html">&lt;p&gt;After thinking a while I thought I should record my weekly FLOSS work and
I'm starting by this week. This week I'm on vacation and in home town so
I could give bit more time for my FLOSS activity. So here it goes this weeks
work&lt;/p&gt;

&lt;h2&gt;Bug Squashing&lt;/h2&gt;

&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;Fixed a RC bug filed on Debian-IN team &lt;strike&gt;&lt;a href=&quot;http://bugs.debian.org/687176&quot;&gt;687176&lt;/a&gt;&lt;/strike&gt;
thanks to the timely patch from Kartik&lt;/li&gt;&lt;/li&gt;
&lt;li&gt;Filed an &lt;em&gt;important&lt;/em&gt; bug on fonts-taml which was missing a dependency on fonts-samyak-taml and
fixed it myself :-) &lt;strike&gt;&lt;a href=&quot;http://bugs.debian.org/687806&quot;&gt;687806&lt;/a&gt;&lt;/strike&gt;&lt;/li&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Both these packages are uploaded to &lt;em&gt;unstable&lt;/em&gt; first RC bug was related to Debian Installer hence was
unblocked before we could file unblock-request. Kartik filed an unblock-request and &lt;em&gt;adsb&lt;/em&gt; unblocked
it happily and both the packages landed in unstable.&lt;/p&gt;

&lt;h2&gt;New Packages&lt;/h2&gt;

&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;fonts-lohit-taml-classical is a new font for Tamil community developed by Lohit projects I don't
know much about font itself but I cleared a wnpp bug with this package &lt;strike&gt;&lt;a href=&quot;http://bugs.debian.org/681655&quot;&gt;681655&lt;/a&gt;&lt;/strike&gt;&lt;/li&gt;
&lt;li&gt;fonts-teluguvijayam is new package containing 3 Telugu fonts which is released by Department of
Information and Technology Andhra Pradesh. This package is pending upload and will clear wnpp
bug &lt;a href=&quot;http://bugs.debian.org/669238&quot;&gt;669238&lt;/a&gt; and is a pending upload.&lt;/li&gt;
&lt;li&gt;I finally cleared all review comments by jwilk on surf package and now 0.5 version of surf is in
experimental.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Both these packages will be backported once Wheezy freezes. One pending wnpp is left on Debian-IN
which I've left for Kartik to finish ;-).&lt;/p&gt;

&lt;h2&gt;Font Package Helper&lt;/h2&gt;

&lt;p&gt;I bumped version on &lt;em&gt;dh-make-font&lt;/em&gt;[1] to 0.3 now it accepts upstream URL with -u, --upstream switch
this will be placed in Homepage: field of control file and in Source: field of copyright file. Probably
I need to think of introducing xz compression to original source tarball where upstream is not
giving any tarball and probably rewrite it using Perl so it can get included dh-make package. Already
a bug filed to get it included in dh-make package &lt;a href=&quot;http://bugs.debian.org/658154&quot;&gt;658154&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;[1] http://anonscm.debian.org/gitweb/?p=debian-in/dh-make-font.git;a=summary&lt;/p&gt;

&lt;h2&gt;Misc and Learnings&lt;/h2&gt;

&lt;br/&gt;


&lt;ul&gt;
&lt;li&gt;Helped Jonas to fix a minor issue in boxer. I still have to figure out one issue on boxer and
add ramfs support to boxer. If you see boxer commit log you can find a few &lt;em&gt;Thanks to Vasudev Kamath&lt;/em&gt;
but I still didn't commit anything directly which is now in my TODO :-)&lt;/li&gt;
&lt;li&gt;Started learning Perl from &lt;em&gt;Moder Perl&lt;/em&gt; &lt;a href=&quot;http://www.onyxneon.com/books/modern_perl/index.html&quot;&gt;book&lt;/a&gt; thanks
to Jaldhar for pointing this book for me.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Well that is it for this week. Hopefully I will have new stuffs to put up here for the next week, till then Cya.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Logging issue with Flask</title>
<link href="http://copyninja.info/2012/08/logging_issue_with_flask.html"/>
<updated>2012-08-06T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/08/logging_issue_with_flask</id>
<content type="html">&lt;p&gt;While enabling logging for release of rewritten version of SILPA described in my
&lt;a href=&quot;http://copyninja.info/2012/08/rewriting_silpa_with_flask_microframework.html&quot;&gt;previous post&lt;/a&gt;
I faced a weird problem. I enabled Logging as described in the Flask documentation but SILPA
won't log anything to the log even though log file is created in whatever location I gave while
configuring the logging.&lt;/p&gt;

&lt;p&gt;Flask documentation suggests following way to use logging&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging.handlers&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RequiredHandler&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RequiredHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setLevel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WARNING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;addHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;After banging my head for some time  I again wanted to look at Python's logging &lt;a href=&quot;http://docs.python.org/howto/logging.html#logging-advanced-tutorial&quot;&gt;tutorials&lt;/a&gt;
see if I'm doing something wrong and I found this example&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# create logger&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getLogger&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;simple_example&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setLevel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DEBUG&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# create console handler and set level to debug&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;StreamHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setLevel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DEBUG&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# create formatter&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;formatter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Formatter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%(asctime)s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; - &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%(name)s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; - &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%(levelname)s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; - &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%(message)s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# add formatter to ch&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setFormatter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;formatter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# add ch to logger&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;addHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# &amp;#39;application&amp;#39; code&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;debug&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;debug message&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;info message&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;warn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;warn message&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;error message&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;critical&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;critical message&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;So there it is I need to set the logging level even on logger to same level as what I set on my handler.
Now I didn't take time to read the documentation because I wanted to see if my findings really does the
trick so I modified function configuring logging to look something like below (I'm taking the example given
in Flask documentation itself real code can be seen in&lt;a href=&quot;https://github.com/copyninja/Silpa-Flask&quot;&gt; SILPA code on Github&lt;/a&gt;)&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging.handlers&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RequiredHandler&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RequiredHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setLevel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WARNING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setLevel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WARNING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;addHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file_handler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This actually did the trick and now Flask is happily logging whatever I give to &lt;em&gt;app.logger.levelname&lt;/em&gt; So I
don't know this was my stupidity or fault in Flask's documentation by forgetting to mention this crucial point.
But in the end all is well :-)&lt;/p&gt;

&lt;p&gt;Do comment your thoughts.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Rewriting SILPA with Flask microframework</title>
<link href="http://copyninja.info/2012/08/rewriting_silpa_with_flask_microframework.html"/>
<updated>2012-08-05T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/08/rewriting_silpa_with_flask_microframework</id>
<content type="html">&lt;p&gt;As a introduction on what is SILPA you can read my &lt;a href=&quot;http://copyninja.info/2010/05/silpa-an-indian-language-processing-application.html&quot;&gt;previous post&lt;/a&gt;
This application was written by Santhosh &lt;strike&gt;about 6-7 years ago&lt;/strike&gt; in May &lt;strike&gt;2010&lt;/strike&gt; 2009 ( &lt;strike&gt; Correct me if I'm wrong Santhosh ;-)&lt;/strike&gt; Thanks to Santhosh for correcting me ) in Python without using any web framework.
He crafted whole system single handed and with very nice ideas. He wrote all the modules available in it for all possible Indian languages even
though he is native Malayalam speaker. I joined him 3 years back and I was providing some or other improvements and he ultimately made me
as the &lt;em&gt;Co-Developer&lt;/em&gt; of SILPA.&lt;/p&gt;

&lt;p&gt;Recently I came across the &lt;em&gt;Flask&lt;/em&gt; microframework and thought of rewriting SILPA to use Flask. You might ask me why Flask? So here are
my reasonings&lt;/p&gt;

&lt;pre&gt;
 1. Why reinvent Python webframework when we can use existing? Besides maintaining a not so well known framework code which is not written by you will be difficult    and time consuming.
 2. All Python modules are useful even outside SILPA project why make them dependent on SILPA code?
 3. Templating system used is very old and can't be ported to new Python version lets use something which is new and portable
 4. If new contributor wanted to add a module he need to understand SILPA framework to write and integrate it. This might be discouraging new
    contributions so lets use pure python module and make integration with SILPA straight forward.
 5. I was overwhelmed by Flask :P
&lt;/pre&gt;


&lt;p&gt;I had previously tried bottle microframework but for some reason I couldn't crack it so choosing of Flask is not because it was better among other available microframework or something like that. I choose it because I could easily understand it and it suited my needs better.&lt;/p&gt;

&lt;p&gt;So I proposed about this to Santhosh and he asked me for a POC code. I started working on &lt;em&gt;April 8 2012 and today by August 5&lt;/em&gt; I can say
I've first stable version of SILPA rewritten using Flask deployable over WSGI on Apache2. It can also be deployed on other servers supporting
WSGI interface.&lt;/p&gt;

&lt;p&gt;It took me quite a bit of time but to be frank in the middle I completely had stopped coding because of some other works. Here is the commit graph
and code frequency graphs from Github.&lt;/p&gt;

&lt;br/&gt;


&lt;p&gt;&lt;img class=&quot;post&quot; src='/images/commit-graph-silpa.png' align=&quot;center&quot; caption=&quot;Commit Graph&quot;/&gt;&lt;/p&gt;

&lt;br/&gt;


&lt;p&gt;&lt;img class=&quot;post&quot; src='images/code-frequency-silpa.png' align=&quot;center&quot; caption=&quot;Code Frequency&quot;/&gt;&lt;/p&gt;

&lt;h2&gt;Changes in New Version&lt;/h2&gt;

&lt;p&gt;Here is some major changes in current version.&lt;/p&gt;

&lt;pre&gt;
1. Newly developed framework provides plug and play features for new modules.
2. You need to install the modules which you want to run on it separately using PIP and only minimal code change is required. Only configuration and webbridge.py 
   will be changed. Ofcourse you need to add html file to *templates* folder.
3. This version uses decent routing logic from Flask for page serving.
4. It also provides JSONRPC interface which is compatible with previous version but only with method name changed.
5. This version separates out run time module loading and routing the request to modules.
6. Dynamic module loading now happens only at the beginning of application, so if I want to implement caching for particular services it will be straight forward
   now.
7. Routing requests to proper module is adapted from old version with few modifications
8. All previous pages are now converted to use *Jinja2* template system.
&lt;/pre&gt;


&lt;h2&gt;Things Remaining TODO&lt;/h2&gt;

&lt;p&gt;Below is some stuffs still pending before this version can completely replace &lt;a href=&quot;http://silpa.org.in&quot;&gt;http://silpa.org.in&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;
1. Separate all modules from original SILPA and get it uploaded to pypi
2. Provide RESTful interface
3. Provide proper LICENSE, AUTHORS file for all modules 
4. Prepare a Nice UI
5. Find a better name than *SILPA*
...
&lt;/pre&gt;


&lt;h2&gt;Update&lt;/h2&gt;

&lt;pre&gt;
Forgot to provide the github link and demo link for the new version of SILPA. Thanks to Aravinda for pointing
it out. Here it goes
Github: &lt;a href=&quot;http://github.com/copyninja/Silpa-Flask&quot;&gt;http://github.com/copyninja/Silpa-Flask&lt;/a&gt;
Demo: &lt;a href=&quot;http://flasksilpa-indic.rhcloud.com&quot;&gt;http://flasksilpa-indic.rhcloud.com&lt;/a&gt;
&lt;/pre&gt;

Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Compiling Harfbuzz on Debian</title>
<link href="http://copyninja.info/2012/07/compiling_harfbuzz_on_debian.html"/>
<updated>2012-07-22T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/07/compiling_harfbuzz_on_debian</id>
<content type="html">&lt;p&gt;Harfbuzz (more correctly harfbuzz-ng) is a Text Layout/shaping engine. Mostly supporting rendering
of Text including complex scripts. A quote taken from Wikipedia which describes &lt;a href=&quot;https://en.wikipedia.org/wiki/HarfBuzz#HarfBuzz&quot;&gt;harfbuzz&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
HarfBuzz (in Persian: حرف‌باز) is a layout/shaping engine for OpenType fonts. Its purpose is to standardize text layout in FOSS; its code originally started as part of the FreeType project, was then developed separately in Qt and Pango, and finally merged back into a common repository. Both Qt and Pango currently use HarfBuzz; other standalone users include Firefox and Chromium, the open source project behind Google Chrome.
&lt;/blockquote&gt;


&lt;p&gt;Coming directly to the point. You can get Harfbuzz from its Git repository hosted on&lt;a href=&quot;http://cgit.freedesktop.org/harfbuzz&quot;&gt; Freedesktop&lt;/a&gt;.
It requires following library and binary compilation&lt;/p&gt;

&lt;pre&gt;
    1. ragel: Finite state machine code compiler
    2. libglib2.0-dev: Glib Development files
    3. libcairo2-dev : Cairo 2D graphics library development files
    4. libicu-dev: Development components for International components for Unicode
    5. libgraphite2-dev: Development files for libgraphite2
    6. libfreetype6-dev: Freetype 2 library development files
&lt;/pre&gt;


&lt;p&gt;Once you install all the above package. Follow following commands to build the harfbuzz.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;./autogen.sh
./configure --prefix&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/usr
make
sudo make install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can skip make install if you don't like it to be installed on system.I actually wanted to work on the Debian package
of Harfbuzz but since there is some one already working on &lt;a href=&quot;http://lists.alioth.debian.org/pipermail/pkg-fonts-devel/2012-July/010867.html&quot;&gt;it&lt;/a&gt;.
Probably I will wait till the guy completes package.&lt;/p&gt;

&lt;p&gt;I will write on testing the text rendering of your language using harfbuzz in my next post. Till then Cya.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Note to Self: Deleting Remote Branches and Tags in Git</title>
<link href="http://copyninja.info/2012/07/note_to_self%3A_deleting_remote_branches_and_tags_in_git.html"/>
<updated>2012-07-15T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/07/note_to_self:_deleting_remote_branches_and_tags_in_git</id>
<content type="html">&lt;p&gt;Its been a while I'm using Git as a version control system for my various work whether
it is FOSS related or my professional work. Every time I stumble into a case where I
need to delete an accidentally pushed branch or tag on remote and every time I forget
how I did it last time. Today I did it again and I had to search it again to find a
method. So here it goes this is a note to myself so I won't forget it next time&lt;/p&gt;

&lt;p&gt;Deleting a remote branch&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git push origin :branchname
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Deleting a remote tag&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git push origin :refs/tags/tagname
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Where origin can be replaced by proper remote if you are using multiple remote for mirroring
purpose.&lt;/p&gt;

&lt;p&gt;If you want to delete locally use following code&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git branch -d branchname
git tag -d tagname
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note: To delete tag remotes you need to delete it locally first and then push it.&lt;/p&gt;

&lt;p&gt;That's it hope it helps others too :-)&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Update: Issue in Kannada Dictionary Bot</title>
<link href="http://copyninja.info/2012/04/update%3A_issue_in_kannada_dictionary_bot.html"/>
<updated>2012-04-21T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/04/update:_issue_in_kannada_dictionary_bot</id>
<content type="html">&lt;p&gt;Just a short update for those who are wondering what is Kannada Dictionary bot, it is
a small Jabber chat bot written in Python which pulls out meaning for given English or Kannada
word from &lt;a href=&quot;http://kn.wiktionary.org&quot;&gt;Kannada Wiktionary&lt;/a&gt;. More about the usage of this bot
can be found in my&lt;a href=&quot;http://copyninja.info/2010/11/a-jabber-dictionary-bot-for-kannada.html&quot;&gt; previous post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently I've been getting many queries from users that they are not able to access the bot
from their GTalk account. &lt;em&gt;Of course no one contacted me directly&lt;/em&gt; they were pinging my friend
Omshivaprakash and in turn he was pinging and telling that some one contacted him and told bot
is not online. But I have monit service monitoring bot 24x7 additionally I could see it online
all the time, even when shiv is telling me its offline!.&lt;/p&gt;

&lt;p&gt;Finally figured out the reason when I went to &lt;a href=&quot;http://jabber.org&quot;&gt;Jabber&lt;/a&gt; So here is the &lt;a href=&quot;http://www.jabber.org/2012/02/google-talk-connectivity/&quot;&gt;reason&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
As you’ve probably noticed, the jabber.org service has been experiencing connectivity problems
with gmail.com and other Google Talk domains (e.g., you might not be able to see if your contacts
there are online). The folks at Google are working on a solution and we will post again once they
have fixed the problem.
&lt;/blockquote&gt;


&lt;p&gt;Now folks please have patience till a solution comes up and once its in place you should be able
to use the bot without any issue.&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

<entry>
<title>Update: Falcon Debian package Status</title>
<link href="http://copyninja.info/2012/04/update%3A_falcon_debian_package_status.html"/>
<updated>2012-04-15T00:00:00-07:00</updated>
<id>http://copyninja.info/2012/04/update:_falcon_debian_package_status</id>
<content type="html">&lt;p&gt;Recently I wrote about packaging Falcon programming language for Debian. So here
is the status of package.
Package builds multiple binaries and we have successfully separated modules from core
Falcon language component&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;falconpl (Falcon language itself )&lt;/li&gt;
&lt;li&gt;falconpl-dbg (Debug symbols)&lt;/li&gt;
&lt;li&gt;libfalconpl-engine1 (Falcon engine library)&lt;/li&gt;
&lt;li&gt;libfalconpl-engine1-dbg (Debug symbols for Falcon enging)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Core modules like &lt;em&gt;feathers&lt;/em&gt;  and modules writtein &lt;em&gt;Falcon&lt;/em&gt; itself are part of &lt;em&gt;libfalconpl-engine1&lt;/em&gt;.
Rest of modules are separated into following packages&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;falconpl-mongodb: Mongodb connector module&lt;/li&gt;
&lt;li&gt;falconpl-dbi : Database Abstraction layer&lt;/li&gt;
&lt;li&gt;falconpl-dbi-sqlite3: SQLite3 connector based on DBI module&lt;/li&gt;
&lt;li&gt;falconpl-dbi-postgresql: PostgreSQL connector based on DBI module&lt;/li&gt;
&lt;li&gt;falconpl-dbi-mysql: MySQL connector based on DBI module&lt;/li&gt;
&lt;li&gt;falconpl-dbi-firebird: Firebird DB server connector&lt;/li&gt;
&lt;li&gt;falconpl-curl: Curl bindings for Falcon&lt;/li&gt;
&lt;li&gt;falconpl-dbus: DBus bindings for Falcon&lt;/li&gt;
&lt;li&gt;falconpl-dmtx: Data Matrix reader/writer for Falcon&lt;/li&gt;
&lt;li&gt;falconpl-hpdf: Haru based PDF module for Falcon&lt;/li&gt;
&lt;li&gt;falconpl-gd2: Graphic manipulation module for Falcon&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;There are 4 modules which I'm not sure how to build (dependency) or if at all possible to build for Linux
they are &lt;em&gt;dynlib, wopi, sdl, conio&lt;/em&gt;. I need to consult upstream on these modules status and ability to build.&lt;/p&gt;

&lt;h2&gt;Modules not built&lt;/h2&gt;

&lt;p&gt;We didn't build &lt;em&gt;dbi-oracle&lt;/em&gt; and &lt;em&gt;dbi-odbc&lt;/em&gt; modules as these are proprietary software dependant. Additionally
in a conversation with upstream on IRC it was told &lt;em&gt;dynlib&lt;/em&gt; module can't be built for 64bit and X86 version
of Linux because lack of assembler, but I've not fully confirmed this.&lt;/p&gt;

&lt;h2&gt;Legal Issues&lt;/h2&gt;

&lt;p&gt;To enable the &lt;em&gt;curl&lt;/em&gt; bindings I added curl dependency which in turn has dependency on &lt;em&gt;libssl1.0&lt;/em&gt; library which
is part of &lt;em&gt;openssl&lt;/em&gt; source package which is causing lintian thrown  GPL violation error. Kartik will be looking
into this.&lt;/p&gt;

&lt;h2&gt;Patches submitted&lt;/h2&gt;

&lt;p&gt;I've submitted total of &lt;a href=&quot;http://anonscm.debian.org/gitweb/?p=collab-maint/falconpl.git;a=tree;f=debian/patches;h=aac74cd0c32cb33662cf6f6fd5f4b249c708d77a;hb=HEAD&quot;&gt;6 patches&lt;/a&gt; of which 5 patches are already applied to upstream git repo and 6th one is waiting to be applied. In other
words upstream is really helpful to us.&lt;/p&gt;

&lt;p&gt;Well thats all for this week more updates next week (or may be even before that ;-) )&lt;/p&gt;
Included file 'rss_footer.html' not found in _includes directory</content>
</entry>

</feed>
