<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>nthykier &#187; Debian</title>
	<atom:link href="http://nthykier.wordpress.com/category/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://nthykier.wordpress.com</link>
	<description>Things that I work on in Debian</description>
	<lastBuildDate>Mon, 04 Jun 2012 21:15:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nthykier.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>nthykier &#187; Debian</title>
		<link>http://nthykier.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nthykier.wordpress.com/osd.xml" title="nthykier" />
	<atom:link rel='hub' href='http://nthykier.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Parsing bash/shell</title>
		<link>http://nthykier.wordpress.com/2012/06/04/parsing-bash-shell/</link>
		<comments>http://nthykier.wordpress.com/2012/06/04/parsing-bash-shell/#comments</comments>
		<pubDate>Mon, 04 Jun 2012 08:11:01 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lintian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=152</guid>
		<description><![CDATA[I have been avoiding #629247 for quite a while. Not because I think we couldn&#8217;t use a better shell parser, but because I dreaded having to write the parser. Of course, #629247 blocks about 16 bugs and that number will &#8230; <a href="http://nthykier.wordpress.com/2012/06/04/parsing-bash-shell/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=152&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been avoiding #<a title="lintian: Lacks a decent shell script parser" href="http://bugs.debian.org/629247">629247</a> for quite a while. Not because I think we couldn&#8217;t use a better shell parser, but because I dreaded having to write the parser. Of course, #<a title="lintian: Lacks a decent shell script parser" href="http://bugs.debian.org/629247">629247</a> blocks about 16 bugs and that number will only increase, so &#8220;someone&#8221; has to solve it eventually&#8230; Unfortunately, that &#8220;someone&#8221; is likely to be &#8220;me&#8221;.  So&#8230;</p>
<p>I managed to scrabble down the following Perl snippet. It does a decent job at getting lines split into &#8220;words&#8221; (which may or may not contain spaces, newlines, quotes etc.). It currently tokenizes the &#8220;&lt;&lt;EOF&#8221;-constructs (heredocs?).  Also it does not allow one to distinguish between &#8220;EOF&#8221; and &#8221; EOF&#8221; (the former ends the heredoc, the latter doesn&#8217;t.).</p>
<p>Other defects includes that it does not tokenize all operators (like &#8220;&gt;&amp;&#8221;).  Probably all I need is a list of them and all the &#8220;special cases&#8221; (Example: &#8220;&gt;&amp;&#8221; can optionally take numbers on both sides, like &#8220;&gt;&amp;2&#8243; or &#8220;2&gt;&amp;1&#8243;).</p>
<p>It does not always appear to terminate (I think EOF + unclosed quote triggers this).  If you try it out and notice something funny, please let me know.</p>
<p>You can also find an older version of it in the bug #<a title="lintian: Lacks a decent shell script parser" href="http://bugs.debian.org/629247">629247</a> and the output it produced at that time (that version used &#8221; instead of &#8211; as token marker).</p>
<pre>#!/usr/bin/perl

use strict;
use warnings;

use Text::ParseWords qw(quotewords);
my $opregex;

{
    my $tmp = join( "|", map { quotemeta $_ } qw (&amp;&amp; || | ; ));
    # Match &amp; but not &gt;&amp; or &lt;&amp;
    # - Actually, it should eventually match those, but not right now.
    $tmp .= '|(?&lt;![\&gt;\&lt;])\&amp;';
    $opregex = qr/$tmp/ox;
}
my @tokens = ();
my $lno;
while (my $line = &lt;&gt;) {
    chomp $line;
    next if $line =~ m/^\s*(?:\#|$)/;
    $lno = $. unless defined $lno;
    while ($line =~ s,\\$,,) {
        $line .= "\n" . &lt;&gt;;
        chomp $line;
    }
    $line =~ s/^\s++//;
    $line =~ s/\s++$//;
    # Ignore empty lines (again, via "$empty \ $empty"-constructs)
    next if $line =~ m/^\s*(?:\#|$)/;

    my @it = quotewords ($opregex, 'delimiters', $line);
    if (!@it) {
        # This happens if the line has unbalanced quotes, so pop another
        # line and redo the loop.
        $line .= "\n" . &lt;&gt;;
        redo;
    }

    foreach my $orig (@it) {
        my @l;
        $orig =~ s,",\\\\",g;
        @l = quotewords (qr/\s++/, 1, $orig);
        pop @l unless defined $l[-1] &amp;&amp; $l[-1] ne '';
        shift @l if $l[0] eq '';
        push @tokens, map { s,\\\\",",g; $_ } @l;
    }
    print "Line $lno: -" . join ("- -", map { s/\n/\\n/g; $_ } @tokens ) . "-\n";
    @tokens = ();
    $lno = undef;
}</pre>
<p>Here is a little example script and the &#8220;tokenization&#8221; of that script (no, the example script is not supposed to be useful).</p>
<pre>$ cat test
#!/bin/sh

for p in *; do
    if [ -d "$p" ];then continue;elif
    [ -f "$p" ]
    then echo "$p is a file";fi
done
$ ./test.pl test
Line 3: -for- -p- -in- -*- -;- -do-
Line 4: -if- -[- --d- -"$p"- -]- -;- -then- -continue- -;- -elif-
Line 5: -[- --f- -"$p"- -]-
Line 6: -then- -echo- -"$p is a file"- -;- -fi-
Line 7: -done-</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=152&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/06/04/parsing-bash-shell/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Lintian 2.5.7 and 2.5.8</title>
		<link>http://nthykier.wordpress.com/2012/05/29/lintian-2-5-7-and-2-5-8/</link>
		<comments>http://nthykier.wordpress.com/2012/05/29/lintian-2-5-7-and-2-5-8/#comments</comments>
		<pubDate>Tue, 29 May 2012 12:52:49 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lintian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=145</guid>
		<description><![CDATA[The new version of Lintian (2.5.8) can pretty much be summed up as: Its like 2.5.7, only with less false positives and no FTBFS. Especially people annoyed by the hardening flags will hopefully find that 2.5.8 greatly reduces the number &#8230; <a href="http://nthykier.wordpress.com/2012/05/29/lintian-2-5-7-and-2-5-8/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=145&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The new version of Lintian (2.5.8) can pretty much be summed up as:</p>
<blockquote><p>Its like 2.5.7, only with less false positives and no FTBFS.</p></blockquote>
<p>Especially people annoyed by the hardening flags will hopefully find that 2.5.8 greatly reduces the number of false positives.  I believe this is best demonstrated with an example:</p>
<pre>$ lintian --print-version &amp;&amp; lintian -q -C binaries amarok_2.5.0-1_i386.deb | wc -l 
2.5.7
94
[...]
$ lintian --print-version &amp;&amp; lintian -q -C binaries amarok_2.5.0-1_i386.deb | wc -l
2.5.8
4</pre>
<p>However, nothing comes for free.  We dropped hardening-no-stackprotector from the default profile (and demoted it to an &#8220;I&#8221; tag).  For hardening-no-fortify-functions we made a &#8220;false positive -&gt; false negative&#8221; trade-off by ignoring binaries if their only unprotected function is memcpy.  For more information, please refer to #<a title="lintian: hardening-no-stackprotector check has many false positives" href="http://bugs.debian.org/673112">673112</a>.</p>
<p>hardening-no-stackprotector is still available and can be used via the debian/extra-hardening profile (or via the &#8211;tags argument).  For the 2.5.7 behaviour of hardening-no-fortify-functions, you have to use hardening-check directly.</p>
<p>But 2.5.7 had other changes besides the myriad of false-positives:</p>
<ul>
<li>Around 19 redundant tags were removed.</li>
</ul>
<p>A consequence of this is that we no longer warn if you use things like &#8220;dpkg &#8211;assert-working-epoch&#8221; or your postinst creates a &#8220;usr/doc transition symlink&#8221;.</p>
<ul>
<li>The last of the Lintian&#8217;s (perl) modules have been put under the Lintian name space.</li>
</ul>
<p>With all the Lintian modules under the Lintian namespace, we can install them in the standard perl @INC path.  Admittedly, I am not certain we are ready to commit to the current API in these modules, which is one of the reasons why they are still installed in /usr/share/lintian.  But in a couple of releases things may look differently. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>Lazy loading of data files</li>
</ul>
<p>Lintain 2.5.7 ships over 50 data files of various kinds (usually white- or blacklists of some kind).  Before 2.5.7, all data files with a few exceptions would be loaded eagerly (i.e. as soon as the check was run for the first time).  A few data files had been special cased with &#8220;manual laziness&#8221;.</p>
<p>In 2.5.7, Lintian::Data was updated to lazily load the data.  So depending on the packages being checked, Lintian may now load fewer data files.</p>
<ul>
<li>Create proper data files for tables embedded within checks.</li>
</ul>
<p>While this is not something exclusive to 2.5.7, we have separated quite a few checks from their data tables by now.  My personal favorites are the table of known <a title="scripts: Move %interpreters to a data file" href="http://anonscm.debian.org/gitweb/?p=lintian/lintian.git;a=commitdiff;h=ecf482ce3cd58e27e2ffeac3a50425f37e2766ec;hp=448999860fd440c2997d6eaf7803914870c92f1a">interpreters</a> and (from 2.5.8) the table of known <a title=" c/scripts: Add data file for versioned interpreters" href="http://anonscm.debian.org/gitweb/?p=lintian/lintian.git;a=commitdiff;h=0a558beac49c5f876e9d9f4881fde309ad6fad60;hp=fbadadda101eaabf75060c63905f04ccf4bb0676">versioned interpreters</a>.</p>
<ul>
<li>Support for Vendor specific data files.</li>
</ul>
<p>I am certainly biased here.  But this is probably the most awesome feature in Lintian 2.5.7.  It is now possible for vendors to extend or simply &#8220;shadow&#8221; the core Lintian data files.  Allow me to demonstrate how this can be used:</p>
<pre>$ lintian --tags build-depends-on-obsolete-package a2ps_4.14-1.1.dsc 
E: a2ps source: build-depends-on-obsolete-package build-depends: dpatch
$ cat ~/.lintian/profiles/local/main.profile 
Profile: local/main
Extends: debian/main
$ cat  ~/.lintian/vendors/local/main/data/fields/obsolete-packages 
@include-parent
@delete dpatch
bison
$ lintian --profile local/main --tags build-depends-on-obsolete-package a2ps_4.14-1.1.dsc
E: a2ps source: build-depends-on-obsolete-package build-depends: bison
$</pre>
<p>It is a toy example, but I believe it is a good demonstration of the feature.</p>
<p>The full documentation of Vendor specific data files can be found in the Lintian User manual (in lintian/2.5.7 or newer).  It will also be on lintian.debian.org when we find time to update lintian there.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=145&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/05/29/lintian-2-5-7-and-2-5-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Kudos to Jakub Adam, Miguel Landaeta and James Page</title>
		<link>http://nthykier.wordpress.com/2012/04/02/kudos-to-jakub-adam-miguel-landaeta-and-james-page/</link>
		<comments>http://nthykier.wordpress.com/2012/04/02/kudos-to-jakub-adam-miguel-landaeta-and-james-page/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 07:18:55 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=140</guid>
		<description><![CDATA[Credit where it is due and I believe it is due for Jakub Adam for packaging eclipse packages.  If you use any of the eclipse packages provided the apt repositories for Wheezy or sid, it is very likely you have &#8230; <a href="http://nthykier.wordpress.com/2012/04/02/kudos-to-jakub-adam-miguel-landaeta-and-james-page/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=140&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Credit where it is due and I believe it is due for Jakub Adam for packaging <a href="http://qa.debian.org/developer.php?login=jakub.adam@ktknet.cz">eclipse packages</a>.  If you use any of the eclipse packages provided the apt repositories for Wheezy or sid, it is very likely you have Jakub Adam to thank for it.</p>
<p>I also believe that Miguel Landaeta and James Page deserve praise for their work.  Miguel is to thank for the removal of <a title="RM: libservlet2.4-java -- ROM; Obsoleted by libservlet2.5-java" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=664986">libservlet2.4-java</a> and updating its reverse dependencies &#8211; not in that order <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .  James Page, on the other hand, has been introducing and updating a lot of packages, noticeably the <a title="jenkins - Continuous Integration and Job Scheduling Server" href="http://packages.debian.org/sid/jenkins">jenkins</a> packages.</p>
<p>Thank you and keep up the good work.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=140&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/04/02/kudos-to-jakub-adam-miguel-landaeta-and-james-page/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Some sponsors are &#8220;evil and pedantic&#8221;</title>
		<link>http://nthykier.wordpress.com/2012/02/23/some-sponsors-are-evil-and-pedantic/</link>
		<comments>http://nthykier.wordpress.com/2012/02/23/some-sponsors-are-evil-and-pedantic/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 14:56:24 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lintian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=136</guid>
		<description><![CDATA[If you want to enable all Lintian tags, just remember the phrase: Some sponsors are &#8220;evil and pedantic&#8221; Or on the command-line: $ lintian -EvIL +pedantic ... It works for Lintian 2.5.5 (and newer), which handles &#8220;pedantic&#8221; like other severities.  &#8230; <a href="http://nthykier.wordpress.com/2012/02/23/some-sponsors-are-evil-and-pedantic/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=136&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you want to enable all Lintian tags, just remember the phrase:</p>
<blockquote><p>Some sponsors are &#8220;evil and pedantic&#8221;</p></blockquote>
<p>Or on the command-line:</p>
<pre> $ lintian -EvIL +pedantic ...</pre>
<p>It works for Lintian 2.5.5 (and newer), which handles &#8220;pedantic&#8221; like other severities.  If you need help understanding the tags, you can add an extra &#8220;i&#8221; (-i) to &#8220;evil&#8221;.  That being said, remember that experimental (-E) and pedantic (-L +pedantic) tags are what they are for a reason. Also quite a few people will probably find verbose (-v) too noisy. However, leaving any of them out would have ruined the mnemonic. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Of course, you can also ask Lintian to enable all tags via your lintianrc file.  Here is a quick-start:</p>
<pre>display-info = yes # or no
display-experimental = yes # or no
pedantic = yes # or no
verbose = yes # or no


</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=136&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/02/23/some-sponsors-are-evil-and-pedantic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Python optimization and profiling</title>
		<link>http://nthykier.wordpress.com/2012/02/15/python-optimization-and-profiling/</link>
		<comments>http://nthykier.wordpress.com/2012/02/15/python-optimization-and-profiling/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 13:49:03 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Release-Team]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=130</guid>
		<description><![CDATA[For the past 5 days, I have worked on replacing a part of Britney (our beloved testing migration tool).  The part I am trying replacing is her &#8220;installability tester&#8221;, which is probably one of the most used parts of Britney. &#8230; <a href="http://nthykier.wordpress.com/2012/02/15/python-optimization-and-profiling/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=130&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For the past 5 days, I have worked on replacing a part of Britney (our beloved testing migration tool).  The part I am trying replacing is her &#8220;installability tester&#8221;, which is probably one of the most used parts of Britney.</p>
<p>I know premature optimization is the root of all evil, but I felt compelled to be a bit &#8220;evil&#8221; this time.  The reason is that a naïve algorithm could easily spend decades on computing the result of our most complete tests (each consists of roughly 2 *  35 000 packages).</p>
<p>Within a couple of days, I felt I had a reasonable candidate to use on the large tests.  On the large tests, it ran with a noticeable speed regression and it produced one different result.  The result difference was about 20-40 source packages and their binaries.</p>
<p>You may have noticed I used &#8220;difference&#8221; and not &#8220;regression&#8221;.  In the given test, our current implementation at some point gives up with an &#8220;AIEEE&#8221; error.  So I decided to turn my attention to the speed regression first.</p>
<p>As any &#8220;good&#8221; programmer, I decided to use a profiler (cProfile) to determine my bottle-necks.  This turned out to be a good idea, as the bottleneck was not quite where I thought it was.  I wish I could say I just patched it out the issue, but&#8230; unfortunately not.</p>
<p>I played around with various changes such as using &#8220;implied&#8221; for loops rather than explicit ones etc.  Some times I would manage to cut the runtime in half only to be unable to reproduce it later.  Yesterday I finally realized what caused this.  I was working in 3 different chroots, two 64-bit sid chroots[1] and a 32-bit stable chroot.</p>
<p>Turns out that my replacement is only slow in the stable chroot.  As soon as I moved to a sid chroot, the runtime was more or less cut in half.  I have not bothered to check if it is the 32 vs 64 bit, the stable vs sid part or maybe the python profile in stable is just slow[2].  I simply moved to my sid chroots for now and continued working.</p>
<p>With that taken care of, I figured I would remind myself of what I was up against.  On the largest test I have available, I profiled my implementation to around 4:30 &#8211; 5:00 minutes.  Regardless of my changes, I always got times in that range.  I did manage to patch a bug in my code that reduced by only diff to 10 source packages (plus their binaries) at the price of 30 seconds.</p>
<p>So I was back to 5 minutes according to the profiler, but I noticed that my test runner disagreed.  According to my test runner my implementation had a runtime of approx. 3 minutes and 40 seconds.  For comparison my test runner puts the original implementation at 3 minutes and 20 seconds for that test.</p>
<p>In short, I have spent most of my day trying to optimize my code to compensate for the +20% overhead the profiler introduced.</p>
<p>Admittedly, my replacement still needs some speed improvement on some other tests where it still has a factor 2 runtime regression. I also need to fix the last diff, which now I suspect is in my replacement.</p>
<p>[1] In case you were wondering, yes those chroots are on two different machines.</p>
<p>[2] Of course, it could be a combination of that as well&#8230;  Anyhow, I am too lazy to research it at the moment.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=130&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/02/15/python-optimization-and-profiling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing migration and package relations</title>
		<link>http://nthykier.wordpress.com/2012/01/08/testing-migration-and-package-relations/</link>
		<comments>http://nthykier.wordpress.com/2012/01/08/testing-migration-and-package-relations/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 11:48:50 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Release-Team]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=114</guid>
		<description><![CDATA[While looking at the dpkg Breaks-field[0]&#8230; $ aptitude show dpkg Package: dpkg [...] Version: 1.16.1.2 [...] Breaks: apt (&#60; 0.7.7), aptitude (&#60; 0.4.7-1), dpkg-dev (&#60; 1.15.8), libdpkg-perl (&#60; 1.15.8), pinfo (&#60; 0.6.9-3.1), tkinfo (&#60; 2.8-3.1) &#8230; it occurred to me &#8230; <a href="http://nthykier.wordpress.com/2012/01/08/testing-migration-and-package-relations/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=114&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While looking at the dpkg Breaks-field[0]&#8230;</p>
<pre>$ aptitude show dpkg
Package: dpkg
[...]
Version: 1.16.1.2
[...]
Breaks: apt (&lt; 0.7.7), aptitude (&lt; 0.4.7-1), dpkg-dev (&lt; 1.15.8), libdpkg-perl (&lt; 1.15.8), pinfo (&lt; 0.6.9-3.1), tkinfo (&lt; 2.8-3.1)</pre>
<p>&#8230; it occurred to me that most (all?) of these relations were irrelevant to Britney when she migrated dpkg 1.16.1.2 to testing.  Right now, at least the APT relations are only relevant if you are doing something like a distribution upgrade from Lenny/Squeeze to Wheezy.  Similarly, the version constraints in a lot of dependency relations (e.g. &#8220;libc6 (&gt;= 2.11)&#8221;) are satisfied in testing and unstable at the same time.</p>
<p>Removing the version constrains on dependencies is a rather minor thing as it is basically just a minor constant time optimization on each dependency check.  However, removing an entire clause slightly reduces the &#8220;problem size&#8221; a bit.  Particularly, the Conflicts/Breaks relations tends to be expensive for us.</p>
<p>The first task was to identify the relations that can (or cannot) be simplified.  In a Britney run we at most 4 versions of the same package per architecture, though usually only 1 or 2[1].  I devised a small set of rules to simplify the relations.  These rules are applied to each package in the relation (atomic proposition, if you will).</p>
<ol>
<li>If the relation is versioned and it involves a virtual package in any suite, then do not change the relation in any way.  Rationale: A virtual package cannot satisfy any versioned relation (Policy Manual §7.5)</li>
<li>If the relation is a dependency (i.e. Pre-Depends or Depends) and the package is not available in <em>any</em> suite, then do not change the relation in any way.</li>
<li>If the relation is versioned and the relation is satisfied in <em>all</em> suites (where the &#8220;relationed-on&#8221; package is available), then remove the version constrain. Rationale: If all (present) versions satisfy the relation, then version constrain does not change the semantics.</li>
<li>If the relation is a conflict (i.e. Conflicts or Breaks) and relation is unsatisfiable in <em>all</em> suites, then remove the relation.  Rationale: If none of the (present) versions satisfy the conflict-relation, then there is no conflict[2].</li>
</ol>
<p>The rules are rather conservative in some cases and there is room for improvements.  However, one has to remember that removing too few relations costs a bit in runtime, removing too many breaks testing&#8230; and possibly a lot.  Obviously, I prefer the former to the latter (especially because I will be a part of the &#8220;clean up&#8221;-crew).</p>
<p>I tested my implementation of those four rules above against the current master branch.  In short, it produces the same result as the master branch in all the tests so far.  In the hand-made test-suite, the tests generally do not have any superfluous relations.  Thus, it is slightly slower, though usually within 0.1 seconds of the master branch.</p>
<p>On the other hand, in the live-data samples I have collected so far it does vastly better.  For the longest run (sample from 2011-12-13), it reduces the runtime with ~70 seconds (from ~215 to ~145 seconds).  In the other runs, it reduces total runtime with ~35 and ~2 seconds, respectively.  In these samples, only the amd64 and i386 packages are considered (and human hints are ignored).</p>
<p>For those interested, the code is available in my <a href="http://anonscm.debian.org/gitweb/?p=users/nthykier/britney.git;a=shortlog;h=refs/heads/simplify-relations">branch</a>.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[0] There is perfectly valid reason for doing that.</p>
<p>I might get back to that in a later post.</p>
<p>[1] One in unstable, testing, testing-proposed-updates and proposed-updates.  The latter may seem a bit weird, but&#8230; [0]</p>
<p>[2] This is the rule that prune relations like the one in the dpkg Breaks-field.</p>
<p><strong>Edit:</strong> 2011-01/09, clarified that we have at most 4 versions <em>per architecture</em>.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=114&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/01/08/testing-migration-and-package-relations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Britney in 5 minutes</title>
		<link>http://nthykier.wordpress.com/2012/01/06/britney-in-5-minutes/</link>
		<comments>http://nthykier.wordpress.com/2012/01/06/britney-in-5-minutes/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 01:00:04 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Release-Team]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=116</guid>
		<description><![CDATA[About 26-28 hours ago in #debian-release on IRC: &#60;nthykier&#62; damn, a britney run in 5 minutes &#60;adsb&#62; they happen &#60;adsb&#62; you've been spoilt by never seeing b1 at her "finest" *cough* &#60;aba&#62; you mean, running for more than a day? &#8230; <a href="http://nthykier.wordpress.com/2012/01/06/britney-in-5-minutes/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=116&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>About 26-28 hours ago in #debian-release on IRC:</p>
<pre>&lt;nthykier&gt; damn, a britney run in 5 minutes
&lt;adsb&gt; they happen
&lt;adsb&gt; you've been spoilt by never seeing b1 at her "finest" *cough*
&lt;aba&gt; you mean, running for more than a day?
&lt;Ganneff&gt; adsb wants night-long runs?
&lt;aba&gt; I can remember runs where we had to block certain packages to
      make sure the run could actually end *sometimes*
&lt;adsb&gt; I'm quite happy with just the memory of that sort of run,
       thanks <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> 
&lt;nthykier&gt; I don't mind being spoiled if it stays at 5 minutes <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> 
</pre>
<p>I took the liberty of collecting the resulting data for the Britney test suite. In its reduced state[1] in runs in 30 seconds on my machine.  It is already my favourite live data sample in the test suite.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>[1] Only i386 and amd64 are considered, manual hints are ignored etc.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=116&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2012/01/06/britney-in-5-minutes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Handling transitions with smooth updates</title>
		<link>http://nthykier.wordpress.com/2011/12/27/handling-transitions-with-smooth-updates/</link>
		<comments>http://nthykier.wordpress.com/2011/12/27/handling-transitions-with-smooth-updates/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 11:54:49 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Release-Team]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=110</guid>
		<description><![CDATA[Lately, I have been working more on release stuff. It all started when Julien convinced me to do the gpsd transition. It was a small, simple transition though I had to bounce obdgpslogger from testing (#648495). After that I picked &#8230; <a href="http://nthykier.wordpress.com/2011/12/27/handling-transitions-with-smooth-updates/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=110&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lately, I have been working more on release stuff. It all started when Julien convinced me to do the gpsd transition. It was a small, simple transition though I had to bounce obdgpslogger from testing (#<a href="http://bugs.debian.org/648495">648495</a>). After that I picked up the zita-convovler transition (finished yesterday) and gssdp/gupnp{,-igd} (currently blocked by #<a href="http://bugs.debian.org/653131">653131</a> and #<a href="http://bugs.debian.org/652783">652783</a>). I also got the mono, libindicator+libdbusmenu+libindicate and the libarchive transitions on my to-do list.</p>
<p>The mono transition is going to be most interesting and challenging of these. It is a bit above 100 packages and the binNMU order (for the 30ish packages that are not arch:all) is non-trivial. Thankfully, Iain Laney appears to have that part covered and will be helping me get it right.</p>
<p>I am also very happy with Britney2&#8242;s transition assistance. Unlike her retired older sister, Britney2 &#8220;smooth updates&#8221; libraries, which allows us to break the transition into smaller steps.</p>
<p>Normally when Britney2 migrates a source package, she will throw out all the binaries from the old (version of the) source package. Then she moves the new source package and its binaries into testing. But in a smooth update, she will keep the old library binary packages around (if they are still in use).</p>
<p>In a concrete example, during the zita-convolver transition, we transitioned from libzita-convolver2 to libzita-convolver3. On the 24th of December[1], Britney migrated zita-convolver 3.1.0-1 to testing with libzita-convolver3, but kept libzita-convolver2 in testing as well. This is because ir.lv2 was not ready to migrate at that time.</p>
<p>With Britney1 zita-convolver 3.1.0-1 would have had to wait until all of its reverse dependencies were ready to migrate. For a small transition like zita-convolver (with 3 or so reverse dependencies), it would have been easy. But having to &#8220;keep&#8221; 100+ packages &#8220;migration ready&#8221; for the mono transition&#8230; that is where handling a transition becomes an art.</p>
<p>I may still need some hinting to finish the mono transition, but most likely it will be a lot easier than it would have been with Britney1. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[1] The PTS says the 25th. This is because it uses the day it receives the &#8220;migration&#8221;-email from trille, which was sent the day after.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=110&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2011/12/27/handling-transitions-with-smooth-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>Status on build-arch target goal &#8211; Nov 13th</title>
		<link>http://nthykier.wordpress.com/2011/11/13/status-on-build-arch-target-goal-nov-13th/</link>
		<comments>http://nthykier.wordpress.com/2011/11/13/status-on-build-arch-target-goal-nov-13th/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 22:39:41 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=99</guid>
		<description><![CDATA[We have been working on adding build-arch support for about a week now and I figured a little status update would be in order. According to UDD, we had 506 packages to fix when we started and after todays update &#8230; <a href="http://nthykier.wordpress.com/2011/11/13/status-on-build-arch-target-goal-nov-13th/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=99&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We have been working on adding <a href="https://wiki.debian.org/ReleaseGoals/BuildArchTarget">build-arch support</a> for about a week now and I figured a little status update would be in order. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>According to UDD, we had 506 packages to fix when we started and after todays update it has dropped to 485.  It is a little less than the &#8220;<a title="build-arch for everyone" href="http://nthykier.wordpress.com/2011/11/11/build-arch-for-everyone/">4 packages a day</a>&#8221; needed to ensure that they are all fixed in Wheezy, but I think it has been a good start.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>On a related note, I am very pleased to see the progress on the general build-arch fixes.  According to the statistics collected by Lintian on lintian.d.o[1], maintainers in Debian has fixed a total of 67 packages since we started.  To put that into perspective, we fixed about 36 packages the week before that.</p>
<p>[1] Currently only DD-accessible on lintian.debian.org</p>
<p>/srv/lintian.debian.org/history/tags/debian-rules-missing-recommended-target.dat</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=99&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2011/11/13/status-on-build-arch-target-goal-nov-13th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
		<item>
		<title>build-arch for everyone</title>
		<link>http://nthykier.wordpress.com/2011/11/11/build-arch-for-everyone/</link>
		<comments>http://nthykier.wordpress.com/2011/11/11/build-arch-for-everyone/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 22:37:51 +0000</pubDate>
		<dc:creator>Niels Thykier</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://nthykier.wordpress.com/?p=91</guid>
		<description><![CDATA[The other day, I was asked if it was really possible to get build-arch support in Wheezy (as in, buildds using build-arch) by adding these optional targets. Lets have a look at the data that is available to us: At &#8230; <a href="http://nthykier.wordpress.com/2011/11/11/build-arch-for-everyone/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=91&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The other day, I was asked if it was really possible to get build-arch support in Wheezy (as in, buildds using build-arch) by adding these optional targets.</p>
<p>Lets have a look at the data that is available to us:</p>
<ul>
<li>At least ~500 packages must be fixed (the &#8220;<a href="http://people.debian.org/~nthykier/rg-build-arch-target/dd-list-reduced">reduced set</a>&#8220;)</li>
<li>The Wheezy freeze is expected in June (as I recall, I may be off)</li>
<ul>
<li>NMUs can take quite a while, so lets reduce it to May.</li>
</ul>
</ul>
<p>To simplify my calculation I will assume we can fix packages over a course of 150 days (which is 5 months of ~30 days or every day in Dec to April). So 500/150 = 10/3 =~ 3.3 packages from the reduced set should be fixed every day.  Erring on the side of caution, we should make that 4 packages every day.</p>
<p>So if we fix 4 packages from the reduced set every day, we will <em>definitely</em> fix all of them before Wheezy.<em></em>  But the reduced set are only the source packages that could possibly &#8220;benefit&#8221; from having a build-arch target (it builds both arch:all and non-arch:all packages).   There could (and probably will) still be sources building non-arch:all packages without a build-arch target.  Furthermore, with the rate of 4 a day we will only have a month to get dpkg and buildd support&#8230;</p>
<p>In short, no.  I do not expect us to get archive-wide build-arch support on buildds for Wheezy.  But I will do my best to ensure that <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629385#93">option #4 &#8220;flip the switch&#8221;</a> becomes very attractive early in the &#8220;Wheezy + 1&#8243; development schedule.</p>
<p>I hope you will join us in this endeavour.  Most of the time it is a trivial 3-4 line fix and often you can even throw in some <a href="https://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags">hardening flags</a> to spice it up a bit.  The easiest way to help is to fix your (team&#8217;s) packages listed in the &#8220;<a href="http://people.debian.org/%7Enthykier/rg-build-arch-target/dd-list-reduced">reduced set</a>&#8220;.   Once you are done with that you can look at the &#8220;rest&#8221; of your (team&#8217;s) packages (see the full <a href="http://people.debian.org/~nthykier/rg-build-arch-target/dd-list">dd-list</a>).</p>
<p>The most important thing to remember is that <em>Build-Depends-Indep is still broken!</em>  That is, <em>you cannot rely on Build-Depends-Indep being installed on a buildd in the &#8220;build&#8221; target</em>.<em></em>  So any existing workarounds have to stay for now (i.e. check for certain commands or deferring indep till binary-indep is called).  If you are in doubt about how to fix a certain package feel free to ask for help.</p>
<p>Note: I pull the data directly from lintian.d.o (full set) and UDD (reduced set).  I try to remember to refresh it daily.  The full set is basically (z)grep | cut | uniq on the lintian log, the reduced set is found using the UDD query from <a href="http://people.debian.org/~nthykier/rg-build-arch-target/reduced-set.py">this script</a> (based on a query done by Jakub Wilk).  Since all data is (in)directly based on lintian.d.o only packages that are in sid are considered.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nthykier.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nthykier.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nthykier.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nthykier.wordpress.com&#038;blog=21789318&#038;post=91&#038;subd=nthykier&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nthykier.wordpress.com/2011/11/11/build-arch-for-everyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8aae7541572e6568b84e8f253721b2a7?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">nthykier</media:title>
		</media:content>
	</item>
	</channel>
</rss>
