<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Exgentoo</title>
	<link>http://planet.exgentoo.org/</link>
	<language>en</language>
	<description>Planet Exgentoo - http://planet.exgentoo.org/</description>

<item>
	<title>Ciaran McCreesh: UIs for Parallelism</title>
	<guid>http://ciaranm.wordpress.com/?p=243</guid>
	<link>http://ciaranm.wordpress.com/2008/10/27/uis-for-parallelism/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Getting the UI right for parallel execution is tricky.&lt;/p&gt;
&lt;p&gt;Make, for example, doesn&amp;#8217;t even try. It just displays output from all the children all mixed together, and relies upon commands prefixing their output with a filename or similar identifier. This generally works for what make needs to do, but it&amp;#8217;s a bit too crude for some things.&lt;/p&gt;
&lt;p&gt;For the secret &amp;#8220;not supposed to use it&amp;#8221; parallelism in &lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt;, we&amp;#8217;re currently using something slightly more sophisticated: each line of output from each child job is prefixed by the job&amp;#8217;s name. So you&amp;#8217;ll see things like:&lt;/p&gt;
&lt;pre&gt;
sync unavailable&amp;gt; wget -T 30 -t 1 -O /var/tmp/paludis-tarsync-cvh9gX/exherbo_repositories.tar.bz2 http://git.exherbo.org/exherbo_repositories.tar.bz2
sync unavailable-unofficial&amp;gt; wget -T 30 -t 1 -O /var/tmp/paludis-tarsync-kvEzRZ/exherbo_unofficial_repositories.tar.bz2
sync unavailable-unofficial&amp;gt; --14:24:06--  http://git.exherbo.org/exherbo_unofficial_repositories.tar.bz2
sync unavailable-unofficial&amp;gt;            =&amp;gt; `/var/tmp/paludis-tarsync-kvEzRZ/exherbo_unofficial_repositories.tar.bz2'
sync unavailable&amp;gt; --14:24:06--  http://git.exherbo.org/exherbo_repositories.tar.bz2
&lt;/pre&gt;
&lt;p&gt;Something like this is necessary because the commands involved don&amp;#8217;t do their own prefixing. But whilst it&amp;#8217;s an improvement, the output&amp;#8217;s rather cluttered and it&amp;#8217;s hard to work out what&amp;#8217;s going on. I&amp;#8217;ve been experimenting with something more like this (slowdown induced artificially to make the point):&lt;/p&gt;
&lt;pre&gt;
&lt;span&gt;Starting sync&lt;/span&gt;

&lt;span&gt;Repository                    Status                Pending Active  Done&lt;/span&gt;
-&amp;gt; &lt;span&gt;alsa&lt;/span&gt;                       starting              16      1       0
-&amp;gt; &lt;span&gt;ciaranm&lt;/span&gt;                    starting              15      2       0
-&amp;gt; &lt;span&gt;ferdy&lt;/span&gt;                      starting              14      3       0
-&amp;gt; &lt;span&gt;compnerd&lt;/span&gt;                   starting              13      4       0
-&amp;gt; &lt;span&gt;arbor&lt;/span&gt;                      starting              12      5       0
-&amp;gt; &lt;span&gt;compnerd&lt;/span&gt;                   success               12      4       1
-&amp;gt; &lt;span&gt;gnome&lt;/span&gt;                      starting              11      5       1
-&amp;gt; &lt;span&gt;alsa&lt;/span&gt;                       failed                11      4       2
    ... fatal: The remote end hung up unexpectedly
-&amp;gt; &lt;span&gt;hardware&lt;/span&gt;                   starting              10      5       2
-&amp;gt; &lt;span&gt;ferdy&lt;/span&gt;                      success               10      4       3
-&amp;gt; &lt;span&gt;media&lt;/span&gt;                      starting              9       5       3
-&amp;gt; &lt;span&gt;gnome&lt;/span&gt;                      success               9       4       4
-&amp;gt; &lt;span&gt;mozilla&lt;/span&gt;                    starting              8       5       4
-&amp;gt; &lt;span&gt;hardware&lt;/span&gt;                   success               8       4       5
-&amp;gt; pioto-exheres              starting              7       5       5
-&amp;gt; &lt;span&gt;media&lt;/span&gt;                      success               7       4       6
-&amp;gt; &lt;span&gt;python&lt;/span&gt;                     starting              6       5       6
-&amp;gt; pioto-exheres              success               6       4       7
-&amp;gt; &lt;span&gt;rbrown&lt;/span&gt;                     starting              5       5       7
-&amp;gt; &lt;span&gt;mozilla&lt;/span&gt;                    success               5       4       8
-&amp;gt; &lt;span&gt;texlive&lt;/span&gt;                    starting              4       5       8
-&amp;gt; ciaranm                    active                4       5       8
-&amp;gt; &lt;span&gt;python&lt;/span&gt;                     success               4       4       9
-&amp;gt; &lt;span&gt;unavailable&lt;/span&gt;                starting              3       5       9
-&amp;gt; &lt;span&gt;texlive&lt;/span&gt;                    success               3       4       10
-&amp;gt; unavailable-unofficial     starting              2       5       10
-&amp;gt; &lt;span&gt;rbrown&lt;/span&gt;                     success               2       4       11
-&amp;gt; &lt;span&gt;unwritten&lt;/span&gt;                  starting              1       5       11
-&amp;gt; arbor                      active                1       5       11
-&amp;gt; &lt;span&gt;unwritten&lt;/span&gt;                  success               1       4       12
-&amp;gt; &lt;span&gt;x11&lt;/span&gt;                        starting              0       5       12
-&amp;gt; ciaranm                    active                0       5       12
    ... Initialized empty Git repository in /var/db/paludis/repositories/ciaranm/.git/
-&amp;gt; unavailable                active                0       5       12
    ... Literal data: 0 bytes
    ... Matched data: 0 bytes
    ... File list size: 749
    ... File list generation time: 0.001 seconds
    ... File list transfer time: 0.000 seconds
    ... Total bytes sent: 771
    ... Total bytes received: 26
    ...
    ... sent 771 bytes  received 26 bytes  1594.00 bytes/sec
    ... total size is 57557  speedup is 72.22
-&amp;gt; unavailable-unofficial     active                0       5       12
    ... Literal data: 0 bytes
    ... Matched data: 0 bytes
    ... File list size: 110
    ... File list generation time: 0.001 seconds
    ... File list transfer time: 0.000 seconds
    ... Total bytes sent: 132
    ... Total bytes received: 26
    ...
    ... sent 132 bytes  received 26 bytes  316.00 bytes/sec
    ... total size is 4013  speedup is 25.40
-&amp;gt; arbor                      active                0       5       12
-&amp;gt; &lt;span&gt;unavailable&lt;/span&gt;                success               0       4       13
-&amp;gt; unavailable-unofficial     success               0       3       14
-&amp;gt; x11                        active                0       3       14
-&amp;gt; ciaranm                    active                0       3       14
-&amp;gt; &lt;span&gt;ciaranm&lt;/span&gt;                    success               0       2       15
-&amp;gt; &lt;span&gt;x11&lt;/span&gt;                        success               0       1       16
-&amp;gt; &lt;span&gt;arbor&lt;/span&gt;                      success               0       0       17

&lt;span&gt; *&lt;/span&gt; Cleaning write cache for ebuild format repositories...
&lt;span&gt; *&lt;/span&gt; Done cleaning write cache for ebuild format repositories

&lt;span&gt; *&lt;/span&gt; No unread news items found

&lt;span&gt;Sync results&lt;/span&gt;

* &lt;span&gt;alsa:&lt;/span&gt;                       sync of '/var/db/paludis/repositories/alsa' from 'git://git.exherbo.org/demonstrate/failure/alsa.git' failed (paludis::SyncFailedError)
    Log file:                 /var/log/sync-alsa.1225118654.log
* &lt;span&gt;arbor:&lt;/span&gt;                      success
* &lt;span&gt;ciaranm:&lt;/span&gt;                    success
* &lt;span&gt;compnerd:&lt;/span&gt;                   success
* &lt;span&gt;ferdy:&lt;/span&gt;                      success
* &lt;span&gt;gnome:&lt;/span&gt;                      success
* &lt;span&gt;hardware:&lt;/span&gt;                   success
* &lt;span&gt;media:&lt;/span&gt;                      success
* &lt;span&gt;mozilla:&lt;/span&gt;                    success
* &lt;span&gt;pioto-exheres:&lt;/span&gt;              success
* &lt;span&gt;python:&lt;/span&gt;                     success
* &lt;span&gt;rbrown:&lt;/span&gt;                     success
* &lt;span&gt;texlive:&lt;/span&gt;                    success
* &lt;span&gt;unavailable:&lt;/span&gt;                success
* &lt;span&gt;unavailable-unofficial:&lt;/span&gt;     success
* &lt;span&gt;unwritten:&lt;/span&gt;                  success
* &lt;span&gt;x11:&lt;/span&gt;                        success
&lt;/pre&gt;
&lt;p&gt;In particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Output is automatically logged to a file, rather than dumping everything to the screen. That file can be automatically removed if the job succeeds.&lt;/li&gt;
&lt;li&gt;A summary of what&amp;#8217;s going on is displayed every time a job starts or finishes.&lt;/li&gt;
&lt;li&gt;Every ten seconds (for some value of ten), if a job hasn&amp;#8217;t finished, we automatically display the last ten (for some other value of ten) lines of its output (but not any output we&amp;#8217;ve already displayed) to the screen, along with a note that it&amp;#8217;s still active. We also tail the log if a job fails.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This seems to be a comfortable balance between not showing anything except job statuses (which for jobs that can take an hour to run might well leave you wondering whether it&amp;#8217;s hung) and just dumping everything to the screen. Now it&amp;#8217;s just a case of finding appropriate values of ten&amp;#8230;&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/243/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/243/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/243/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/243/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/243/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/243/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/243/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/243/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/243/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/243/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=243&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 27 Oct 2008 14:56:43 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: xorg-x11 hackery for a Logitech RX1000 Mouse</title>
	<guid>http://ciaranm.wordpress.com/?p=228</guid>
	<link>http://ciaranm.wordpress.com/2008/10/23/xorg-x11-hackery-for-a-logitech-rx1000-mouse/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;The Logitech RX1000 mouse has a scroll wheel that can tilt left or right. This generates HWHEEL events by default, which are pretty much useless. I find it more useful to have the tilt generate WHEEL events (scroll up and down), so I can press and hold left or right rather than repeatedly spinning the mouse wheel.&lt;/p&gt;
&lt;p&gt;The wheel can also be pressed to get a middle click, but if I don&amp;#8217;t concentrate I end up scrolling as well as middle clicking. There&amp;#8217;s another button with a magnifying glass icon on it just below the scroll wheel which is more useful, which usually shows up as button 8. By making this button 2 we can use that for X11 paste, open-in-new-tab in Firefox and so on.&lt;/p&gt;
&lt;p&gt;So I don&amp;#8217;t forget how to get this working:&lt;/p&gt;
&lt;pre&gt;
Section &quot;InputDevice&quot;
    Identifier  &quot;Mouse1&quot;
    Driver      &quot;evdev&quot;
    Option      &quot;Name&quot; &quot;Logitech USB Optical Mouse&quot;
    Option      &quot;HWHEELRelativeAxisButtons&quot; &quot;4 5&quot;
EndSection
&lt;/pre&gt;
&lt;p&gt;Unfortunately, evdev doesn&amp;#8217;t seem to have a &lt;code&gt;ButtonMapping&lt;/code&gt; equivalent, so we have to fall back to xmodmap to do the button remapping. Doubly unfortunately, this makes pressing the middle mouse button useless.&lt;/p&gt;
&lt;pre&gt;
pointer = 1 6 3 4 5 2 7 8 9 10
&lt;/pre&gt;
&lt;p&gt;Thanks Nicolas.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: hardware, linux, logitech, mouse, rx1000, xorg-x11&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/228/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/228/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=228&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 24 Oct 2008 09:23:50 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis is about Choices</title>
	<guid>http://ciaranm.wordpress.com/?p=235</guid>
	<link>http://ciaranm.wordpress.com/2008/10/24/paludis-is-about-choices/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.32 will include a new mechanism called &amp;#8216;choices&amp;#8217;. Examples of choices on &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; include use flags, the various &lt;code&gt;USE_EXPAND&lt;/code&gt; settings (&lt;code&gt;linguas&lt;/code&gt;, &lt;code&gt;video_cards&lt;/code&gt; and so on) and a shiny new setting called &lt;code&gt;build_options&lt;/code&gt;. For use flags and the &lt;code&gt;USE_EXPAND&lt;/code&gt; settings, there&amp;#8217;s no change from a user perspective, and you can carry on using &lt;code&gt;use.conf&lt;/code&gt; as normal &amp;#8212; choices are merely a more general mechanism for handling package settings.&lt;/p&gt;
&lt;p&gt;On &lt;a href=&quot;http://exherbo.org/&quot;&gt;Exherbo&lt;/a&gt;, things &lt;em&gt;do&lt;/em&gt; change a bit, and if you&amp;#8217;re one of those naughty people who ignored the &amp;#8220;Exherbo has no users&amp;#8221; warning you&amp;#8217;d better have been paying attention.&lt;/p&gt;
&lt;p&gt;So what&amp;#8217;s this &lt;code&gt;build_options&lt;/code&gt; thing? You&amp;#8217;ll see it cropping up for most packages:&lt;/p&gt;
&lt;pre&gt;
* net-print/cups::gentoo [U 1.3.8-r1 -&amp;gt; 1.3.8-r2] &amp;lt;target&amp;gt;
    Reasons: app-text/ghostscript-gpl-8.62:0::installed, net-print/foomatic-filters-3.0.20080507:0::installed, 2 more
    X acl -avahi -dbus -gnutls -java jpeg -kerberos -ldap pam perl -php png ppds python -samba
    -slp ssl -static -tiff -xinetd -zeroconf LINGUAS: -de en -es -et -fr -he -id -it -ja -pl -sv
    -zh_TW &lt;span&gt;build_options: -optional_tests split strip&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Packages using 0-based EAPIs will usually have three build options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;optional_tests&lt;/code&gt;. This handles what &lt;code&gt;--checks&lt;/code&gt; used to do. If this choice is set, &lt;code&gt;src_test&lt;/code&gt; will be run.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;split&lt;/code&gt;. This used to be &lt;code&gt;--debug-build split&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strip&lt;/code&gt;. This used to be &lt;code&gt;--debug-build internal&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Packages using kdebuild-1 or exheres-0 will have &lt;code&gt;recommended_tests&lt;/code&gt; instead of &lt;code&gt;optional_tests&lt;/code&gt;, which defaults to being enabled rather than disabled.&lt;/p&gt;
&lt;p&gt;Despite what you might expect from older Paludis versions, these are &lt;em&gt;not&lt;/em&gt; use flags. You &lt;em&gt;can&lt;/em&gt; set them in &lt;code&gt;use.conf&lt;/code&gt;, though &amp;#8212; this means you can select whether to run tests or whether to keep debug information on a per-package basis, which was tricky to do with the old commandline options.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: choices, exherbo, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/235/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/235/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/235/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/235/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/235/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/235/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/235/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/235/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/235/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/235/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=235&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 24 Oct 2008 09:23:05 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Path and installable-to dependencies</title>
	<guid>http://ciaranm.wordpress.com/?p=225</guid>
	<link>http://ciaranm.wordpress.com/2008/10/16/path-and-installable-to-dependencies/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;A while ago, &lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; got &lt;a href=&quot;http://ciaranm.wordpress.com/2008/08/11/from-repository-dependencies/&quot;&gt;from-repository dependencies&lt;/a&gt;. 0.32 will extend this further with path and installable-to dependencies.&lt;/p&gt;
&lt;p&gt;Path dependencies are fairly simple: &lt;code&gt;cat/pkg::/&lt;/code&gt; will match &lt;code&gt;cat/pkg&lt;/code&gt; installed at root &lt;code&gt;/&lt;/code&gt;. A full path can be used too, so &lt;code&gt;cat/pkg::/var/mychroot&lt;/code&gt; will work (as well as anything involving non-/ roots works, anyway&amp;#8230;).&lt;/p&gt;
&lt;p&gt;Installable-to dependencies take a bit more explaining. There are two kinds of installable-to dependency: repository and path. An installable-to-repository dependency looks like &lt;code&gt;cat/pkg::repo?&lt;/code&gt; and is matched by any &lt;code&gt;cat/pkg&lt;/code&gt; that could be installed to the repository named &lt;code&gt;repo&lt;/code&gt;. An installable-to-path dependency looks like &lt;code&gt;cat/pkg::/?&lt;/code&gt; and is matched by any &lt;code&gt;cat/pkg&lt;/code&gt; that could be installed to any repository with root &lt;code&gt;/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Installable-to dependencies will not match masked packages. To specify &amp;#8220;packages that would be installable, ignoring masks&amp;#8221;, use a double question mark, like &lt;code&gt;cat/pkg::/??&lt;/code&gt;. At present the double question mark ignores &lt;em&gt;all&lt;/em&gt; masks, even those that cannot be overridden (unsupported EAPI, &lt;a href=&quot;http://ciaranm.wordpress.com/2008/06/12/dealing-with-lots-of-repositories/&quot;&gt;unavailable&lt;/a&gt; or &lt;a href=&quot;http://ciaranm.wordpress.com/2008/10/06/dealing-with-unwritten-packages/&quot;&gt;unwritten&lt;/a&gt;). This may change to only include overridable masks; I&amp;#8217;m not sure which is better behaviour yet.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/225/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/225/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=225&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 16 Oct 2008 14:55:44 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis 0.30.3 Released</title>
	<guid>http://ciaranm.wordpress.com/?p=223</guid>
	<link>http://ciaranm.wordpress.com/2008/10/10/paludis-0303-released/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.30.3 has been released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tests for 0.30.2 would fail on some systems. This is now fixed.&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: paludis, release&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/223/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/223/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/223/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/223/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/223/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/223/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/223/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/223/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/223/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/223/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=223&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 10 Oct 2008 18:28:57 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis 0.30.2 Released</title>
	<guid>http://ciaranm.wordpress.com/?p=220</guid>
	<link>http://ciaranm.wordpress.com/2008/10/09/paludis-0302-released/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.30.2 has been released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work around ebuilds that treat cwd as secure.&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: paludis, release&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/220/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/220/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/220/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/220/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/220/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/220/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/220/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/220/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/220/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/220/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=220&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Oct 2008 22:24:12 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Dealing with Unwritten Packages</title>
	<guid>http://ciaranm.wordpress.com/?p=213</guid>
	<link>http://ciaranm.wordpress.com/2008/10/06/dealing-with-unwritten-packages/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;A while ago &lt;a href=&quot;http://exherbo.org/&quot;&gt;Exherbo&lt;/a&gt; came up with &lt;a href=&quot;http://ciaranm.wordpress.com/2008/06/12/dealing-with-lots-of-repositories/&quot;&gt;a solution for the &amp;#8220;large number of repositories&amp;#8221; problem&lt;/a&gt;. It turns out this solution works rather well, and I&amp;#8217;m now convinced that anyone rushing off and assuming that Git on its own will magically solve anything other than CVS sucking is going in the wrong direction.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; also has ways of &lt;a href=&quot;http://ciaranm.wordpress.com/2008/05/20/managing-unpackaged-packages-or-whats-this-importare-thing/&quot;&gt;tracking packages installed by hand&lt;/a&gt;. Whilst useful on &lt;a href=&quot;http://gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;, this really comes into play on Exherbo, where we don&amp;#8217;t want to end up with a massive unmaintainable tree full of packages used by only two people.&lt;/p&gt;
&lt;p&gt;The logical next step is tracking packages that don&amp;#8217;t exist yet.&lt;/p&gt;
&lt;p&gt;An unimaginative person might think that the way to solve this would be to have a bug for each requested package. But that gets messy &amp;#8212; it&amp;#8217;s not integrated with the package manager, and requires considerable extra effort from the user. A while ago &lt;a href=&quot;http://lists.exherbo.org/pipermail/exherbo-dev/2008-August/000269.html&quot;&gt;Bernd suggested something more interesting&lt;/a&gt;: tracking unwritten packages in a repository in a similar way to how we do unavailable packages.&lt;/p&gt;
&lt;p&gt;The implications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most obviously, we can keep track of things we want that haven&amp;#8217;t been written yet in a way that doesn&amp;#8217;t involve leaving the package manager to look things up.&lt;/li&gt;
&lt;li&gt;We can also use it to track version bumps that we know will take a while. Doing &lt;code&gt;paludis --query '&amp;gt;=hugescarypackage-4'&lt;/code&gt;, say, would show that it&amp;#8217;s being worked upon.&lt;/li&gt;
&lt;li&gt;We can also depend upon things that don&amp;#8217;t exist, rather than leaving incomplete dependency strings around. This is fine in at least two cases &amp;#8212; if a dependency is conditional upon an option that should probably be implemented but isn&amp;#8217;t yet, we can add the option and make it unusable. And we can handle obscure suggested dependencies (e.g. git has lots of optional dependencies upon weird perl modules, so we can say &amp;#8220;if you want support for git-send-email with SSL, you need to write such and such a package&amp;#8221;).&lt;/li&gt;
&lt;li&gt;Bored developers could simply &lt;code&gt;paludis --query '*/*::unwritten'&lt;/code&gt; and get ideas for what to do.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Adding support to Paludis for this only took a couple of hours. So now Exherbo developers can use this:&lt;/p&gt;
&lt;pre&gt;
format = unwritten
location = /var/db/paludis/repositories/unwritten
sync = git://git.exherbo.org/unwritten.git
importance = -100
&lt;/pre&gt;
&lt;p&gt;And see this:&lt;/p&gt;
&lt;pre&gt;
$ paludis -q genesis
* sys-apps/genesis
    unwritten:               (1.0)X* {:0}
    Description:             The daddy of all init systems
    Homepage:                http://www.exherbo.org/
    Comment:                 We need an init system.
    Masked by unwritten:     Package has not been written yet
&lt;/pre&gt;
&lt;p&gt;As with unavailable, installing behaves sensibly:&lt;/p&gt;
&lt;pre&gt;
$ paludis -pi genesis
Building target list...
Building dependency list...
Query error:
  * In program paludis -pi genesis:
  * When performing install action from command line:
  * When executing install task:
  * When building dependency list:
  * When adding PackageDepSpec 'sys-apps/genesis':
  * All versions of 'sys-apps/genesis' are masked. Candidates are:
    * sys-apps/genesis-1.0:0::unwritten: Masked by unwritten (Package has not been written yet)
&lt;/pre&gt;
&lt;p&gt;Those interested in the repository format can &lt;a href=&quot;http://git.exherbo.org/?p=unwritten.git;a=tree&quot;&gt;browse the tree&lt;/a&gt;. The observant might notice that the file format is quite similar to the one used by unavailable repositories, and wonder whether I was feeling lazy and swiped a load of code rather than implementing a new repository from scratch.&lt;/p&gt;
&lt;p&gt;In the spirit of silly buzzwords, one could argue that this increases distributivity and democratisation of the repository, since there&amp;#8217;s nothing to stop motivated users from creating their own wishlist repositories. It wouldn&amp;#8217;t be hard to make a simple web interface that lets users request and vote on packages and version bumps, automatically generating a repository that anyone can use. But fortunately Exherbo is a dictatorship and has no users, so we don&amp;#8217;t have to put up with that kind of nonsense.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: exherbo, gentoo, paludis, unavailable, unpackaged&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/213/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/213/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/213/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/213/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/213/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/213/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/213/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/213/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/213/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/213/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=213&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 06 Oct 2008 21:57:14 +0000</pubDate>
</item>
<item>
	<title>Alexander Færøy: Hello from Open Source Days</title>
	<guid>http://ahfaeroey.wordpress.com/?p=38</guid>
	<link>http://ahfaeroey.wordpress.com/2008/10/04/hello-from-open-source-days/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;First picture from Open Source Days:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ahfaeroey.files.wordpress.com/2008/10/img_0003.jpg&quot;&gt;&lt;img src=&quot;http://ahfaeroey.files.wordpress.com/2008/10/img_0003.jpg?w=300&amp;h=225&quot; alt=&quot;Zebrapig&quot; title=&quot;img_0003&quot; width=&quot;300&quot; height=&quot;225&quot; class=&quot;size-medium wp-image-40&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ahfaeroey.wordpress.com/38/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ahfaeroey.wordpress.com/38/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ahfaeroey.wordpress.com/38/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ahfaeroey.wordpress.com/38/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ahfaeroey.wordpress.com/38/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ahfaeroey.wordpress.com/38/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ahfaeroey.wordpress.com/38/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ahfaeroey.wordpress.com/38/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ahfaeroey.wordpress.com/38/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ahfaeroey.wordpress.com/38/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ahfaeroey.wordpress.com&amp;blog=3719608&amp;post=38&amp;subd=ahfaeroey&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 04 Oct 2008 08:10:05 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: doman language support</title>
	<guid>http://ciaranm.wordpress.com/?p=157</guid>
	<link>http://ciaranm.wordpress.com/2008/10/01/eapi-2-doman-language-support/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This is the final post in &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series on EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;doman&lt;/code&gt; helper is one of those pesky little beasts that makes specifying EAPI behaviour formally such a nuisance (although it is nowhere near as horrible as &lt;code&gt;dohtml&lt;/code&gt;). EAPI 2 makes it even peskier.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll try that again.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;doman&lt;/code&gt; helper makes writing ebuilds substantially easier by automagically doing the right thing when installing manual pages, freeing the developer from having to care about manual sections. EAPI 2 makes &lt;code&gt;doman&lt;/code&gt; even more useful by making it aware of language codes as well as sections.&lt;/p&gt;
&lt;p&gt;The painful details are available in &lt;a href=&quot;http://git.overlays.gentoo.org/gitweb/?p=proj/pms.git&quot;&gt;PMS&lt;/a&gt;, but basically this will now &amp;#8216;do the right thing&amp;#8217;:&lt;/p&gt;
&lt;pre&gt;
doman foo.1 foo.en.1 foo.en_GB.1
&lt;/pre&gt;
&lt;p&gt;Previously only the first of the items would go to the right place.&lt;/p&gt;
&lt;p&gt;This one&amp;#8217;s a &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; innovation; see &lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=222439&quot;&gt;bug 222439&lt;/a&gt; for its history. It was shamelessly stolen for &lt;code&gt;exheres-0&lt;/code&gt;, but was too late for &lt;code&gt;kdebuild-1&lt;/code&gt;.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/157/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/157/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/157/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/157/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/157/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/157/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/157/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/157/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/157/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/157/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=157&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 01 Oct 2008 11:44:35 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: default_ phase functions and the default function</title>
	<guid>http://ciaranm.wordpress.com/?p=153</guid>
	<link>http://ciaranm.wordpress.com/2008/09/30/eapi-2-default_-phase-functions-and-the-default-function/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This post is part of &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series on EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With EAPIs 0 and 1, if you want to add something to, say, &lt;code&gt;src_unpack&lt;/code&gt;, you have to manually write out the default implementation and then add your code. This is easy to screw up &amp;#8212; developers are highly prone to getting the quoting wrong and forgetting which functions do and do not want a &lt;code&gt;|| die&lt;/code&gt; on the end.&lt;/p&gt;
&lt;p&gt;EAPI 2 makes the default implementation of phase functions available as functions themselves. These functions are named &lt;code&gt;default_src_unpack&lt;/code&gt;, &lt;code&gt;default_src_configure&lt;/code&gt; and so on.&lt;/p&gt;
&lt;p&gt;Typing out &lt;code&gt;default_src_compile&lt;/code&gt; in full is pointless, though (especially since it&amp;#8217;s illegal to call phase functions or default phase functions from other phase functions). So we also introduce the special &lt;code&gt;default&lt;/code&gt; function, which calls whichever &lt;code&gt;default_&lt;/code&gt; phase function is appropriate for the phase we&amp;#8217;re in. Thus:&lt;/p&gt;
&lt;pre&gt;
src_compile() {
    default
    if useq extras ; then
        emake extras || die &quot;splat&quot;
    fi
}
&lt;/pre&gt;
&lt;p&gt;Both features first appeared in &lt;code&gt;exheres-0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;An alternative proposal (I think it came from the &lt;a href=&quot;http://www.pkgcore.org/&quot;&gt;Pkgcore&lt;/a&gt; camp) was to make all EAPI default implementations available through functions named like &lt;code&gt;eapi0_src_compile&lt;/code&gt;, &lt;code&gt;eapi1_src_compile&lt;/code&gt; and &lt;code&gt;eapi2_src_compile&lt;/code&gt;. This proposal was rejected because various &lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; people moaned about it not making sense or having any legitimate use cases (the &amp;#8216;obvious&amp;#8217; use cases don&amp;#8217;t work if you think them through), and no-one stood up to defend it.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/153/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/153/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/153/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/153/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/153/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/153/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/153/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/153/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/153/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/153/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=153&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 29 Sep 2008 12:06:36 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: src_configure and src_compile</title>
	<guid>http://ciaranm.wordpress.com/?p=146</guid>
	<link>http://ciaranm.wordpress.com/2008/09/30/eapi-2-src_configure-and-src_compile/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This is post five in &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series describing EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;EAPI 2 splits &lt;code&gt;src_compile&lt;/code&gt; into &lt;code&gt;src_configure&lt;/code&gt; and &lt;code&gt;src_compile&lt;/code&gt;. Like &lt;code&gt;src_prepare&lt;/code&gt;, it&amp;#8217;s mostly a convenience thing to reduce copying default implementations, although in this case it also makes it easier to hook in code in between configure and make being run.&lt;/p&gt;
&lt;p&gt;The default &lt;code&gt;src_configure&lt;/code&gt; implementation behaves like this:&lt;/p&gt;
&lt;pre&gt;
src_configure() {
    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then
        econf
    fi
}
&lt;/pre&gt;
&lt;p&gt;This is the first half of EAPI 1&amp;#8217;s &lt;code&gt;src_compile&lt;/code&gt;, not the non-&lt;code&gt;ECONF_SOURCE&lt;/code&gt;-aware EAPI 0 version.&lt;/p&gt;
&lt;p&gt;The default &lt;code&gt;src_compile&lt;/code&gt; implementation is reduced accordingly:&lt;/p&gt;
&lt;pre&gt;
src_compile() {
    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then
        emake || die &quot;emake failed&quot;
    fi
}
&lt;/pre&gt;
&lt;p&gt;The split configure / compile setup was first used in &lt;code&gt;exheres-0&lt;/code&gt;, which uses more elaborate default implementations. Like &lt;code&gt;src_prepare&lt;/code&gt;, it was considered but rejected for &lt;code&gt;kdebuild-1&lt;/code&gt; because of eclass difficulties.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/146/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/146/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=146&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 29 Sep 2008 12:06:28 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: src_prepare</title>
	<guid>http://ciaranm.wordpress.com/?p=143</guid>
	<link>http://ciaranm.wordpress.com/2008/09/29/eapi-2-src_prepare/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This is post four in &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series describing EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;EAPI 2 has a new phase function called &lt;code&gt;src_prepare&lt;/code&gt;. It is called after &lt;code&gt;src_unpack&lt;/code&gt;, and can be used to apply patches, do sed voodoo and so on. The default implementation does nothing.&lt;/p&gt;
&lt;p&gt;This function is purely for convenience. It gets rather tedious copying out the default implementation of &lt;code&gt;src_unpack&lt;/code&gt; just to add a patch in somewhere.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;src_prepare&lt;/code&gt; was first introduced in &lt;code&gt;exheres-0&lt;/code&gt; (which has a more elaborate default implementation). It was considered but rejected for &lt;code&gt;kdebuild-1&lt;/code&gt; because making best use of it requires eclass awareness, and the packages using &lt;code&gt;kdebuild-1&lt;/code&gt; had to share eclasses with the main Gentoo tree.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/143/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/143/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/143/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/143/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/143/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/143/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/143/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/143/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/143/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/143/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=143&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 28 Sep 2008 20:45:51 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: !! Blockers</title>
	<guid>http://ciaranm.wordpress.com/?p=130</guid>
	<link>http://ciaranm.wordpress.com/2008/09/29/eapi-2-blockers/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This is part three of &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series of posts describing EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Blockers are a nuisance for end users. It&amp;#8217;s rarely obvious how to fix them or what they mean, and getting it wrong can leave systems unusable.&lt;/p&gt;
&lt;p&gt;There have been various proposals on how to fix this. For &lt;code&gt;exheres-0&lt;/code&gt;, we&amp;#8217;re going to go with something like this:&lt;/p&gt;
&lt;pre&gt;
DEPENDENCIES=&quot;
    !app-misc/superfrozbinator [[
        description = [ Can only have one frozbinator installed at once ]
        resolution = uninstall-blocked-after
        url = [ http://explain.example.org/?only-one-frozbinator ]
    ]]
    !dev-libs/icky [[
        description = [ Having icky installed breaks the build process ]
        resolution = [ manual ]
        url = [ http://explain.example.org/?myfroz-hates-icky ]
    ]]&quot;
&lt;/pre&gt;
&lt;p&gt;The user can then be presented with a list of things that would need to be uninstalled to resolve blockers, along with clear descriptions of why they need to do so. Once the user has explicitly accepted the uninstalls, the package manager could then safely perform the installs.&lt;/p&gt;
&lt;p&gt;Unfortunately, annotations aren&amp;#8217;t something that can be implemented for Portage any time soon. Instead, Portage has gone with a fairly horrible and dangerous semi-automatic block resolution system that sometimes removes blocked packages automatically (often screwing up the user&amp;#8217;s system in the process). Whilst doing so, Portage changed the meaning of EAPI 0 / 1 blockers from &amp;#8220;this must not be installed when we do the build&amp;#8221; to &amp;#8220;this must be uninstalled after we do the build&amp;#8221;.&lt;/p&gt;
&lt;p&gt;EAPI 2 introduces a new kind of blocker using double exclamation marks, like &lt;code&gt;!!app-misc/other&lt;/code&gt;. This goes back to the old meaning of &amp;#8220;this must not be installed when we do the build&amp;#8221;, keeping &lt;code&gt;!app-misc/other&lt;/code&gt; for &amp;#8220;this must be uninstalled after we do the build&amp;#8221;.&lt;/p&gt;
&lt;p&gt;This does not, unfortunately, make the user any safer, but it does allow packages that really can&amp;#8217;t have something installed at build time to say so.&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/130/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/130/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/130/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/130/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/130/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/130/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/130/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/130/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/130/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/130/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=130&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 28 Sep 2008 20:45:21 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: EAPI 2: Use Dependencies</title>
	<guid>http://ciaranm.wordpress.com/?p=125</guid>
	<link>http://ciaranm.wordpress.com/2008/09/28/eapi-2-use-dependencies/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This is the second post in &lt;a href=&quot;http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/&quot;&gt;a series of posts describing EAPI 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Use dependencies &lt;a href=&quot;http://bugs.gentoo.org/2272&quot;&gt;have been needed for a very long time&lt;/a&gt;. They eliminate most of the &lt;code&gt;built_with_use&lt;/code&gt; errors you see during &lt;code&gt;pkg_setup&lt;/code&gt;, replacing them with an error that is seen at pretend-install time.&lt;/p&gt;
&lt;p&gt;The first two real world trials of use dependencies were with &lt;a href=&quot;http://exherbo.org/&quot;&gt;Exherbo&lt;/a&gt;&amp;#8217;s &lt;code&gt;exheres-0&lt;/code&gt; and &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;&amp;#8217;s &lt;code&gt;kdebuild-1&lt;/code&gt;. It became apparent that an awful lot of packages would end up with dependencies like:&lt;/p&gt;
&lt;pre&gt;
blah? ( app-misc/foo[blah] ) !blah? ( app-misc/foo )
monkey? ( app-misc/foo[monkey] ) !monkey? ( app-misc/foo[-monkey] )
fnord? ( app-misc/foo ) !fnord? ( app-misc/foo[-fnord] )
&lt;/pre&gt;
&lt;p&gt;Syntactically, that&amp;#8217;s rather inconvenient. For &lt;code&gt;exheres-0&lt;/code&gt; and &lt;code&gt;kdebuild-1&lt;/code&gt;, we added the following syntax:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;[opt]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt=]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled if the flag is enabled for the package with the dependency, or disabled otherwise.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt!=]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled if the flag is enabled for the package with the dependency, or enabled otherwise.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled if the flag is enabled for the package with the dependency.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt!?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled if the use flag is disabled for the package with the dependency.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[-opt]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[-opt?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled if the flag is enabled for the package with the dependency.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[-opt!?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled if the flag is disabled for the package with the dependency.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Dependencies could be combined by specifying multiple blocks, as in &lt;code&gt;foo/bar[baz][monkey?]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For EAPI 2, Zac decided to go with an arbitrarily different syntax:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;[opt]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt=]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled if the flag is enabled for the package with the dependency, or disabled otherwise.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[!opt=]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled if the flag is enabled for the package with the dependency, or enabled otherwise.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[opt?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be enabled if the flag is enabled for the package with the dependency.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[!opt?]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled if the use flag is disabled for the package with the dependency.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;[-opt]&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The flag must be disabled.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;And to combine use dependencies, one uses a comma, as in &lt;code&gt;foo/bar[baz,monkey?]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In both cases, the slot dependency must go &lt;em&gt;before&lt;/em&gt; the dependency, so &lt;code&gt;foo/bar:1[baz]&lt;/code&gt;, not &lt;code&gt;foo/bar[baz]:1&lt;/code&gt;. The use dependency goes &lt;em&gt;after&lt;/em&gt; any version restrictions, so &lt;code&gt;&amp;gt;=foo/bar-2.1:2[baz]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In both cases, it is illegal to reference a use flag that does not exist (including &lt;code&gt;USE_EXPAND&lt;/code&gt; flags that are not explicitly listed in &lt;code&gt;IUSE&lt;/code&gt;). So &lt;code&gt;foo/bar[opt]&lt;/code&gt; when any version of &lt;code&gt;foo/bar&lt;/code&gt; does not have &lt;code&gt;opt&lt;/code&gt; in &lt;code&gt;IUSE&lt;/code&gt; is illegal and has undefined behaviour, as is &lt;code&gt;foo/baz[opt?]&lt;/code&gt; if either the owning package or &lt;code&gt;foo/baz&lt;/code&gt; has no &lt;code&gt;opt&lt;/code&gt;. For cases where only some versions of a package have a flag, use dependencies can be combined with version or slot restrictions.&lt;/p&gt;
&lt;p&gt;From an implementation perspective: the package manager should not try to automatically solve unmet use dependencies. The package manager doesn&amp;#8217;t know the impact of changing a use flag (changing some flags makes a system unbootable), so it can&amp;#8217;t simply override the user&amp;#8217;s choice. (&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; &lt;em&gt;will&lt;/em&gt; suggest an automatic reinstall if and only if the user has already modified their &lt;code&gt;use.conf&lt;/code&gt;, so you don&amp;#8217;t need to manually reinstall a dependency if you&amp;#8217;re ok with altering the flags with which it is built.)&lt;/p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: eapi, eapi 2, ebuild, gentoo, paludis&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/125/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/125/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/125/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/125/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/125/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/125/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/125/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/125/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/125/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/125/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=125&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 28 Sep 2008 19:59:03 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis 0.30.1 Released</title>
	<guid>http://ciaranm.wordpress.com/?p=107</guid>
	<link>http://ciaranm.wordpress.com/2008/09/25/paludis-0301-released/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.30.1 has been released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EAPI 2 support.&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tagged: paludis, paludis releases&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/107/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/107/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/107/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/107/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/107/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/107/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/107/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/107/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/107/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/107/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=107&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 28 Sep 2008 19:44:55 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: Software Freedom Day + Planet Larry</title>
	<guid>http://kloeri.livejournal.com/7384.html</guid>
	<link>http://kloeri.livejournal.com/7384.html</link>
	<description>Tomorrow is&amp;nbsp;&lt;a href=&quot;http://www.softwarefreedomday.org/&quot;&gt;Software Freedom Day&lt;/a&gt; - a yearly event where people all over the world get together to celebrate free software, enjoy talks related to free software and just as importantly get to meet lots of people.&lt;br /&gt;&lt;br /&gt;If you happen to be in Copenhagen tomorrow you can meet myself and several other people from SSLUG at Copenhagen Business school. &lt;a href=&quot;http://sslug.dk/emailarkiv/announce/2008_09/msg00000.html&quot;&gt;SSLUG's SFD&amp;nbsp;program&lt;/a&gt; includes talks on Free Software, Linux, Open Office and GIMP. Everybody else can &lt;a href=&quot;http://www.softwarefreedomday.org/teams&quot;&gt;look up their local&lt;/a&gt; Software Freedom Day events - there's more than 500 teams registered all over the world so there's probably going to be an event nearby.&lt;br /&gt;&lt;br /&gt;And regarding &lt;a href=&quot;http://planet.larrythecow.org/&quot;&gt;Planet Larry&lt;/a&gt;.. Steve Dibb just &lt;a href=&quot;http://wonkabar.org/archives/464&quot;&gt;announced&lt;/a&gt; that he's setting up a feed for retired Gentoo developers which is very good news in my opinion. Lots of retired developers blog and they often have interesting comments on things related to Gentoo or tips that other people can benefit from. And this way people can know whether the blog posts they're reading comes from a normal user or a retired developer. &lt;strike&gt;I would probably have prefered marking retired developers another way instead of having multiple feeds but I can see why some people wants to know who's who and I'd much rather have a seperate feed than nothing at all.&lt;/strike&gt; Oops, I was a bit too quick - Exdevs are now going in the main feed instead and will be marked using colour or some other way instead of a seperate feed.&lt;br /&gt;&lt;br /&gt;And since I've been having this discussion with Steve on and off for quite some time:&amp;nbsp;Thank you Steve :)&lt;br /&gt;</description>
	<pubDate>Fri, 19 Sep 2008 18:51:05 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: Meet Exherbo at Open Source Days!</title>
	<guid>http://kloeri.livejournal.com/7086.html</guid>
	<link>http://kloeri.livejournal.com/7086.html</link>
	<description>That's right! &lt;a href=&quot;http://www.exherbo.org&quot;&gt;Exherbo&lt;/a&gt; will be at the &lt;a href=&quot;http://opensourcedays.org/2008/&quot;&gt;Open Source Days&lt;/a&gt; conference october 3-4 and &lt;a href=&quot;http://opensourcedays.org/2008/registration/&quot;&gt;ticket sale&lt;/a&gt; opened a few days ago.&lt;br /&gt;&lt;br /&gt;Open Source Days expects 2000+ visitors and have &lt;a href=&quot;http://www.opensourcedays.org/2008/agenda/&quot;&gt;lots of talks&lt;/a&gt; ranging from open source project management to more technical networking talks as well as talks large scale open source deployment. I'll be talking about the &lt;a href=&quot;http://opensourcedays.org/2008/agenda/sessions/BryanOstergaard.shtml&quot;&gt;Exherbo project &lt;/a&gt;of course - how it all began, the current ideas defining Exherbo and some of the technical features support those ideas. Besides my talk Exherbo will also have a &lt;a href=&quot;http://www.opensourcedays.org/2008/community/&quot;&gt;booth&lt;/a&gt; where you can meet several of our developers.&lt;br /&gt;&lt;br /&gt;I hope to meet lots of people at OSD and get to discuss different aspects of Exherbo - it's an exciting project with lots of interesting features and above all room for innovative new features and improvements.&lt;br /&gt;&lt;br /&gt;</description>
	<pubDate>Wed, 03 Sep 2008 13:12:32 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: Credit where credit is due</title>
	<guid>http://kloeri.livejournal.com/6771.html</guid>
	<link>http://kloeri.livejournal.com/6771.html</link>
	<description>All open source developers get for their hard work most of the time is credit - other people knowing they did some hard work and sometimes even other people acknowledging and thanking them for it.&lt;br /&gt;&lt;br /&gt;Anybody who's been doing open source development for a few years knows this which is why I'm extremely surprised to see Diego &quot;flameeyes&quot; Pettenò trying to hide other developers work.&lt;br /&gt;&lt;br /&gt;In one of his &lt;a href=&quot;http://blog.flameeyes.eu/articles/2008/08/18/same-abi-and-any-abi-dependencies&quot;&gt;many blog posts&lt;/a&gt; Diego talks about ABI dependencies and how that's important for cross compiling among other things. As it turns out I agree this is important and more to the point, David Leverton (a Paludis and Exherbo developer) pointed out quite a bit of prior work being done on this exact problem in &lt;a href=&quot;http://www.exherbo.org&quot;&gt;Exherbo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;David did so in the following comment:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;You might want to talk to spb about that, he did some design work for Exherbo a while back (he's been too lazy to implement it so far, though). See &lt;a href=&quot;http://git.exherbo.org/?p=exherbo.git;a=tree;f=scratch/multilib&quot;&gt;http://git.exherbo.org/?p=exherbo.git;a=tree;f=scratch/multilib&lt;/a&gt; and &lt;a href=&quot;http://dev.exherbo.org/~spb/labels.txt&quot;&gt;http://dev.exherbo.org/~spb/labels.txt&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;This comment is nothing but helpful and friendly even if Diego might not want to talk to spb as they have some history - the comment still points directly at prior work being done in this exact area that &lt;a href=&quot;http://www.gentoo.org&quot;&gt;Gentoo&lt;/a&gt; could easily benefit from and hiding it (by not allowing the comment) is dishonest at best.&lt;br /&gt;&lt;br /&gt;I hope Diego is going to be a lot more cooperative in the future and actually follow the open source spirit instead of trying to mimic behaviour that's primarily seen from closed source companies.</description>
	<pubDate>Tue, 19 Aug 2008 08:44:13 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: Goals for Exherbo</title>
	<guid>http://kloeri.livejournal.com/6616.html</guid>
	<link>http://kloeri.livejournal.com/6616.html</link>
	<description>Just a quick note that I wrote up a long list of things Exherbo still needs on &lt;a href=&quot;http://lists.exherbo.org/pipermail/exherbo-dev/2008-August/000254.html&quot;&gt;&lt;b&gt;http://lists.exherbo.org/pipermail/exherbo-dev/2008-August/000254.html.&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reading that list and any follow-up discussion is probably a good way to follow Exherbo development for the foreseeable future and might give some insights into what goes on behind the doors for those of you with no real experience in distribution development.</description>
	<pubDate>Sun, 17 Aug 2008 23:08:26 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: FOSS Aalborg videos released!</title>
	<guid>http://kloeri.livejournal.com/6306.html</guid>
	<link>http://kloeri.livejournal.com/6306.html</link>
	<description>Some of you might remember me doing a presentation on &lt;a href=&quot;http://www.exherbo.org&quot;&gt;Exherbo&lt;/a&gt; and primarily our planned initsystem a few months ago at the &lt;a href=&quot;http://www.foss-aalborg.dk&quot;&gt;FOSS Aalborg&lt;/a&gt; conference in Denmark.&lt;br /&gt;&lt;br /&gt;Most of the videos are now available including the one of &lt;a href=&quot;http://mirrors.dotsrc.org/blivklogere/foss_aalborg/2008/a_Linux_distribution_is_born--Bryan_Oestergaard--english--FOSS_Aalborg.mp4&quot;&gt;my presentation&lt;/a&gt;. The presentation isn't highly technical but I talk a lot about why I don't think other initsystems solve the problems very well as well as what I expect from an initsystem. The video should be fairly interesting to all the people who wasn't at the FOSS Aalborg conference.&lt;br /&gt;&lt;br /&gt;Hope you like the presentation(s) and thanks to the FOSS Aalborg organisers for getting the videos online and for having a great conference.</description>
	<pubDate>Fri, 15 Aug 2008 20:06:39 +0000</pubDate>
</item>
<item>
	<title>Alexander Færøy: Inkpot theme for Mutt</title>
	<guid>http://ahfaeroey.wordpress.com/?p=22</guid>
	<link>http://ahfaeroey.wordpress.com/2008/08/03/inkpot-theme-for-mutt/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I am using &lt;a href=&quot;http://www.mutt.org/&quot;&gt;Mutt&lt;/a&gt; as my e-mail client and I have done that ever since I started using Unix. I have for many months been annoyed by my very ugly theme that I created when I was around 13, but I have never actually spend a few minutes on making something shiny that didn&amp;#8217;t piss me off.&lt;/p&gt;
&lt;p&gt;Inspired from &lt;a href=&quot;http://ciaranm.wordpress.com/&quot;&gt;Ciaran McCreesh&lt;/a&gt;&amp;#8217;s &lt;a href=&quot;http://www.vim.org/&quot;&gt;Vim&lt;/a&gt; theme called &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1143&quot;&gt;Inkpot&lt;/a&gt;, I decided to create an inkpot&amp;#8217;ish theme for &lt;a href=&quot;http://www.mutt.org/&quot;&gt;Mutt&lt;/a&gt; and here is the result that you can put in your &lt;tt&gt;.muttrc&lt;/tt&gt;:&lt;/p&gt;
&lt;pre&gt;color   attachment  color30 color80
color   header      color10 color80 &quot;^(From|Subject|cc|date|To|X-Spam-Level|User-Agent|X-Mailer):&quot;
color   signature   color39 color80
color   tree        color26 color80
color   message     color26 color80
color   status      color85 color81
color   normal      color78 color80
color   error       color79 color64
color   indicator   color80 color73
color   markers     color26 color80
color   index       color64 color80 ~D
color   index       color64 color80 ~F
color   index       color30 color80 ~T
color   tilde       color80 color80

color   body        color10 color80 &quot;(http|https|ftp|news|telnet|finger|irc)://[^ \&quot;&amp;gt;\t\r\n]*&quot;
color   body        color10 color80 &quot;mailto:[-a-z_0-9.]+@[-a-z_0-9.]+&quot;
color   body        color26 color80 &quot;[;:=][-][)/(|]&quot;

color   quoted      color52 color80
color   quoted1     color22 color80
color   quoted2     color71 color80&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This probably only works in &lt;tt&gt;urxvt&lt;/tt&gt; since that&amp;#8217;s what I am using &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;There is, of course, a screenshot:&lt;br /&gt;
&lt;div id=&quot;attachment_25&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;a href=&quot;http://ahfaeroey.files.wordpress.com/2008/08/mutt.png&quot;&gt;&lt;img src=&quot;http://ahfaeroey.files.wordpress.com/2008/08/mutt.png?w=300&amp;h=211&quot; alt=&quot;Mutt&quot; width=&quot;300&quot; height=&quot;211&quot; class=&quot;size-medium wp-image-25&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Mutt&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ahfaeroey.wordpress.com/22/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ahfaeroey.wordpress.com/22/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ahfaeroey.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ahfaeroey.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ahfaeroey.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ahfaeroey.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ahfaeroey.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ahfaeroey.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ahfaeroey.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ahfaeroey.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ahfaeroey.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ahfaeroey.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ahfaeroey.wordpress.com&amp;blog=3719608&amp;post=22&amp;subd=ahfaeroey&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 03 Aug 2008 21:36:43 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: My Exherbo Supplemental Repository</title>
	<guid>http://ciaranm.wordpress.com/?p=73</guid>
	<link>http://ciaranm.wordpress.com/2008/07/30/my-exherbo-supplemental-repository/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I&amp;#8217;ve tidied up my &lt;a href=&quot;http://www.exherbo.org/&quot;&gt;Exherbo&lt;/a&gt; supplemental repository (which is what Gentoo people confusingly call an &amp;#8216;overlay&amp;#8217;) and &lt;a href=&quot;http://git.exherbo.org/?p=ciaranm.git;a=summary&quot;&gt;published it&lt;/a&gt; for the foolish.&lt;/p&gt;
&lt;p&gt;Current goodness is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guzu.net/linux/hddtemp.php&quot;&gt;hddtemp&lt;/a&gt;. This is mostly as an experiment in &lt;a href=&quot;http://lists.exherbo.org/pipermail/exherbo-dev/2008-July/000214.html&quot;&gt;handling regularly updated data files&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://detox.sf.net/&quot;&gt;detox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;An updated &lt;a href=&quot;http://docs.enlightenment.org/api/imlib2/html/&quot;&gt;imlib2&lt;/a&gt; nicked from &lt;a href=&quot;http://git.exherbo.org/?p=rbrown.git;a=summary&quot;&gt;rbrown&lt;/a&gt;, who needs to lrn2src_uri&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fluxbox.org/&quot;&gt;Fluxbox&lt;/a&gt; SCM, based upon (and I feel very very dirty for doing this) ahf&amp;#8217;s 1.0.0 packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Expect these to be neglected and / or broken irregularly.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/73/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/73/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/73/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/73/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/73/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/73/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/73/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/73/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/73/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/73/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/73/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/73/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=73&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 30 Jul 2008 20:06:33 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis 0.28.1 Released</title>
	<guid>http://ciaranm.wordpress.com/?p=69</guid>
	<link>http://ciaranm.wordpress.com/2008/07/24/paludis-0281-released/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.28.1 has been released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work around compiler issues that eventually lead to unpack dying when it shouldn&amp;#8217;t on certain EAPIs on certain systems (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/622&quot;&gt;ticket:622&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/69/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/69/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/69/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/69/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/69/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/69/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/69/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/69/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/69/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/69/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/69/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/69/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=69&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 24 Jul 2008 13:27:26 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: GNU make Target Specific Variables are Dumb</title>
	<guid>http://ciaranm.wordpress.com/?p=65</guid>
	<link>http://ciaranm.wordpress.com/2008/07/22/gnu-make-target-specific-variables-are-dumb/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Let&amp;#8217;s say we have a Makefile using some target-specific variables:&lt;/p&gt;
&lt;pre&gt;
$ cat Makefile
foo = global
b : foo = for-b

all : d
        @cat d

a :
        @echo a:$(foo) &amp;gt; a

b : a
        @{ cat a ; echo b:$(foo) ; } &amp;gt; b

c : a
        @{ cat a ; echo c:$(foo) ; } &amp;gt; c

d : b c
        @cat b c &amp;gt; d
&lt;/pre&gt;
&lt;p&gt;Then we can get different results depending upon how we make the &amp;#8216;all&amp;#8217; target:&lt;/p&gt;
&lt;pre&gt;
$ rm a b c d ; make
a:for-b
b:for-b
a:for-b
c:global
$ rm a b c d ; make a b c d all
a:global
b:for-b
a:global
c:global
&lt;/pre&gt;
&lt;p&gt;This is &lt;a href=&quot;http://www.gnu.org/software/make/manual/make.html#Target_002dspecific&quot;&gt;considered a feature&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
There is one more special feature of target-specific variables: when you define a target-specific variable that variable value is also in effect for all prerequisites of this target, and all their prerequisites, etc. (unless those prerequisites override that variable with their own target-specific variable value).
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In practice, it&amp;#8217;s a pain in the ass. Using &lt;a href=&quot;http://code.google.com/p/quagmire/&quot;&gt;Quagmire&lt;/a&gt;, you&amp;#8217;re supposed to be able to do this:&lt;/p&gt;
&lt;pre&gt;
noinst_SHARED_LIBRARIES = libone.so libtwo.so libthree.so

libone.so_SOURCES = one.c
libone.so : LDFLAGS = -Wl,-soname,libone.so
libone.so_LIBS = libthree.so

libtwo.so_SOURCES = two.c
libtwo.so : LDFLAGS = -Wl,-soname,libtwo.so
libtwo.so_LIBS = libthree.so

libthree.so_SOURCES = three.c
&lt;/pre&gt;
&lt;p&gt;Which leads to some rather bizarre behaviour:&lt;/p&gt;
&lt;pre&gt;
$ make clean all &amp;amp;&amp;gt;/dev/null ; scanelf -S libthree.so
 TYPE   SONAME FILE
ET_DYN libone.so libthree.so 

$ make clean libone.so &amp;amp;&amp;gt;/dev/null ; scanelf -S libthree.so
 TYPE   SONAME FILE
ET_DYN libone.so libthree.so 

$ make clean libtwo.so &amp;amp;&amp;gt;/dev/null ; scanelf -S libthree.so
 TYPE   SONAME FILE
ET_DYN libtwo.so libthree.so 

$ make clean libthree.so &amp;amp;&amp;gt;/dev/null ; scanelf -S libthree.so
 TYPE   SONAME FILE
ET_DYN  libthree.so
&lt;/pre&gt;
&lt;p&gt;I can think of a few not very nice ways of getting around this. &lt;a href=&quot;http://groups.google.com/group/quagmire-discuss/browse_thread/thread/687673491a90cb2b&quot;&gt;Hopefully&lt;/a&gt; someone will come up with something better&amp;#8230;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/65/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/65/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/65/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/65/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/65/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/65/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/65/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/65/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/65/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/65/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/65/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/65/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=65&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 22 Jul 2008 19:41:56 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Hot Fresh Shiny Config Files</title>
	<guid>http://ciaranm.wordpress.com/?p=63</guid>
	<link>http://ciaranm.wordpress.com/2008/07/16/hot-fresh-shiny-config-files/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I&amp;#8217;ve moved my configuration files repository from Subversion to Git, since I&amp;#8217;m sick of trying to decide whether my laptop or desktop should hold the &amp;#8216;master&amp;#8217; copy. For the lulz, I shall also push to &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; at irregular intervals, so you shall no longer need to pester me to upload newer versions of my bashrc / vimrc / whatever to webspace somewhere. Instead, you can just:&lt;/p&gt;
&lt;pre&gt;git clone git://github.com/ciaranm/dotfiles-ciaranm.git&lt;/pre&gt;
&lt;p&gt;Or &lt;a href=&quot;http://github.com/ciaranm/dotfiles-ciaranm/tree&quot;&gt;browse them online&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ll see whether this lasts&amp;#8230;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/63/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/63/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/63/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/63/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/63/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/63/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/63/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/63/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/63/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/63/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/63/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/63/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=63&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 16 Jul 2008 19:31:17 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Git and Subversion information in the Bash Prompt</title>
	<guid>http://ciaranm.wordpress.com/?p=55</guid>
	<link>http://ciaranm.wordpress.com/2008/07/16/git-and-subversion-information-in-the-bash-prompt/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Here&amp;#8217;s my variation on the &amp;#8220;Git and Subversion status in the bash prompt&amp;#8221; thing:&lt;/p&gt;
&lt;pre&gt;
&lt;span&gt;ps_scm_f() {&lt;/span&gt;
    &lt;span&gt;local&lt;/span&gt; &lt;span&gt;s&lt;/span&gt;=
    &lt;span&gt;if &lt;/span&gt;&lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-d&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;.svn&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
        &lt;span&gt;local&lt;/span&gt; &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;svn info &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; -n -e &lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;span&gt;/^Revision: &lt;/span&gt;&lt;span&gt;\(&lt;/span&gt;&lt;span&gt;[0-9]*&lt;/span&gt;&lt;span&gt;\)&lt;/span&gt;&lt;span&gt;.*$/s//\1/p&lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
        &lt;span&gt;s&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;(r&lt;/span&gt;&lt;span&gt;$r&lt;/span&gt;&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;svn status &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; -q -v &lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;span&gt;^?&lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; -n &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
    &lt;span&gt;else&lt;/span&gt;
        &lt;span&gt;local&lt;/span&gt; &lt;span&gt;d&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;git rev-parse --git-dir &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;gt;/dev/null &lt;/span&gt;&lt;span&gt;)&lt;/span&gt; &lt;span&gt;b&lt;/span&gt;= &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt; &lt;span&gt;a&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;
        &lt;span&gt;if &lt;/span&gt;&lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-n&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
            &lt;span&gt;if &lt;/span&gt;&lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-d&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/../.dotest&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;if &lt;/span&gt;&lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-f&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/../.dotest/rebase&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                    &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;rebase&quot;&lt;/span&gt;
                &lt;span&gt;elif&lt;/span&gt; &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-f&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/../.dotest/applying&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                    &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;am&quot;&lt;/span&gt;
                &lt;span&gt;else&lt;/span&gt;
                    &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;???&quot;&lt;/span&gt;
                &lt;span&gt;fi&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;git symbolic-ref HEAD &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;gt;/dev/null &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
            &lt;span&gt;elif&lt;/span&gt; &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-f&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/.dotest-merge/interactive&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;rebase-i&quot;&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/.dotest-merge/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;-name&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
            &lt;span&gt;elif&lt;/span&gt; &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-d&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/../.dotest-merge&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;rebase-m&quot;&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/.dotest-merge/&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;-name&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
            &lt;span&gt;elif&lt;/span&gt; &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-f&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/MERGE_HEAD&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;merge&quot;&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;git symbolic-ref HEAD &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;gt;/dev/null &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
            &lt;span&gt;elif&lt;/span&gt; &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-f&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/BISECT_LOG&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;bisect&quot;&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;git symbolic-ref HEAD &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;gt;/dev/null &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;???&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
            &lt;span&gt;else&lt;/span&gt;
                &lt;span&gt;r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;
                &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;$(&lt;/span&gt;&lt;span&gt;git symbolic-ref HEAD &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;gt;/dev/null &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;
            &lt;span&gt;fi&lt;/span&gt;

            &lt;span&gt;if &lt;/span&gt;git &lt;span&gt;status&lt;/span&gt; &lt;span&gt;|&lt;/span&gt; &lt;span&gt;grep&lt;/span&gt; &lt;span&gt;-q&lt;/span&gt; &lt;span&gt;'&lt;/span&gt;&lt;span&gt;^# Changed but not updated:&lt;/span&gt;&lt;span&gt;'&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;a&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
            &lt;span&gt;fi&lt;/span&gt;

            &lt;span&gt;if &lt;/span&gt;git &lt;span&gt;status&lt;/span&gt; &lt;span&gt;|&lt;/span&gt; &lt;span&gt;grep&lt;/span&gt; &lt;span&gt;-q&lt;/span&gt; &lt;span&gt;'&lt;/span&gt;&lt;span&gt;^# Changes to be committed:&lt;/span&gt;&lt;span&gt;'&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;a&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
            &lt;span&gt;fi&lt;/span&gt;

            &lt;span&gt;if &lt;/span&gt;git &lt;span&gt;status&lt;/span&gt; &lt;span&gt;|&lt;/span&gt; &lt;span&gt;grep&lt;/span&gt; &lt;span&gt;-q&lt;/span&gt; &lt;span&gt;'&lt;/span&gt;&lt;span&gt;^# Untracked files:&lt;/span&gt;&lt;span&gt;'&lt;/span&gt; &lt;span&gt;;&lt;/span&gt; &lt;span&gt;then&lt;/span&gt;
                &lt;span&gt;a&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
            &lt;span&gt;fi&lt;/span&gt;

            &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;${&lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;#&lt;/span&gt;refs/heads/&lt;span&gt;}&lt;/span&gt;
            &lt;span&gt;b&lt;/span&gt;=&lt;span&gt;${&lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;//&lt;/span&gt; &lt;span&gt;}&lt;/span&gt;
            &lt;span&gt;[[&lt;/span&gt; &lt;span&gt;-n&lt;/span&gt; &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt; &lt;span&gt;]]&lt;/span&gt; &lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span&gt;s&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;:+&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;:&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;:+&lt;/span&gt; &lt;span&gt;${&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;}}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
        &lt;span&gt;fi&lt;/span&gt;
    &lt;span&gt;fi&lt;/span&gt;
    &lt;span&gt;s&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;}${&lt;/span&gt;&lt;span&gt;ACTIVE_COMPILER&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
    &lt;span&gt;s&lt;/span&gt;=&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;:+&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;}&lt;/span&gt; &lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
    &lt;span&gt;echo&lt;/span&gt; -n &lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$s&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;
&lt;span&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;This is added to &lt;code&gt;PS1&lt;/code&gt; as normal.&lt;/p&gt;
&lt;p&gt;For Subversion, it gives us the revision, and a * if anything&amp;#8217;s been modified.&lt;/p&gt;
&lt;p&gt;For Git, we get quite a bit more. If we&amp;#8217;re in the middle of a merge, interactive rebase or am, we get told so. If we&amp;#8217;re in the middle of a bisect, we get question marks, since I&amp;#8217;ve not had to bisect anything since I wrote that code and I haven&amp;#8217;t implemented anything fancy for it. We also get the branch, and a combination of * for changed but not updated files, + for changed and committed files and ? for untracked files.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s generally sufficiently fast to not be annoying, although the initial cd into a large project can take a few seconds. It&amp;#8217;s probably possible to drop to a single &amp;#8216;git status&amp;#8217; call if performance matters, although the kernel does a pretty good job of speeding up subsequent runs.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/55/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/55/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/55/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/55/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/55/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/55/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/55/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/55/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/55/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/55/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/55/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/55/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;blog=3715284&amp;post=55&amp;subd=ciaranm&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Jul 2008 23:41:50 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Edimax EW-7728In 802.11n (RaLink rt2860) with Linux 2.6.26</title>
	<guid>http://ciaranm.wordpress.com/?p=53</guid>
	<link>http://ciaranm.wordpress.com/2008/07/14/edimax-ew-7728in-80211n-ralink-rt2860-with-linux-2626/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Being sick of wireless disconnecting every time it rained, I got my hands upon a cheap &lt;a href=&quot;http://www.edimax.com/en/produce_detail.php?pd_id=225&amp;amp;pl1_id=1&amp;amp;pl2_id=44&quot;&gt;Edimax EW-7728In&lt;/a&gt; PCI 802.11n card. This uses a &lt;a href=&quot;http://www.ralinktech.com/ralink/data/RT2800.pdf&quot;&gt;RaLink rt2860&lt;/a&gt; (PDF) chip, which has vendor-supplied open source drivers available. Getting it to work with Linux 2.6.26 is slightly non-trivial, however.&lt;/p&gt;
&lt;p&gt;First, we need &lt;a href=&quot;http://www.ralinktech.com/ralink/Home/Support/Linux.html&quot;&gt;the drivers&lt;/a&gt;. At the time of writing, that means &lt;a href=&quot;http://www.ralinktech.com.tw/data/drivers/2008_0522_RT2860_Linux_STA_v1.6.1.0.tar.bz2&quot;&gt;2008_0522_RT2860_Linux_STA_v1.6.1.0.tar.bz2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, we need to fix a couple of things. First, the Makefile is dumb, and tries to install into &lt;code&gt;/tftpboot&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
From 82dc3a8737e4f97311f4f4fccd79ea55a319f1ea Mon Sep 17 00:00:00 2001
From: Ciaran McCreesh &amp;lt;ciaran.mccreesh@googlemail.com&amp;gt;
Date: Mon, 14 Jul 2008 16:47:00 +0100
Subject: [PATCH] Get your filthy paws off my /tftpboot

---
 Makefile |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 72bc933..aed3b00 100644
--- a/Makefile
+++ b/Makefile
@@ -80,11 +80,9 @@ LINUX:
 ifneq (,$(findstring 2.4,$(LINUX_SRC)))
        cp -f os/linux/Makefile.4 $(RT28xx_DIR)/os/linux/Makefile
        make -C $(RT28xx_DIR)/os/linux/
-       cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.o /tftpboot
 else
        cp -f os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile
        make  -C  $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
-       cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.ko /tftpboot
 endif

 clean:
--
1.5.6.2
&lt;/pre&gt;
&lt;p&gt;Next, &lt;code&gt;dev-&amp;gt;nd_net&lt;/code&gt; should now be &lt;code&gt;dev_net(dev)&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
From 0878b37a40e2a7f466a74938920ff3751917eec3 Mon Sep 17 00:00:00 2001
From: Ciaran McCreesh &amp;lt;ciaran.mccreesh@googlemail.com&amp;gt;
Date: Mon, 14 Jul 2008 16:48:50 +0100
Subject: [PATCH] dev-&amp;gt;nd_net is now dev_net(dev)

---
 os/linux/rt_main_dev.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/os/linux/rt_main_dev.c b/os/linux/rt_main_dev.c
index 24604da..6a3471d 100644
--- a/os/linux/rt_main_dev.c
+++ b/os/linux/rt_main_dev.c
@@ -669,7 +669,7 @@ static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER p

 #if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,5,0)
 #if LINUX_VERSION_CODE &amp;gt;= KERNEL_VERSION(2,6,24)
-        device = dev_get_by_name(dev-&amp;gt;nd_net, slot_name);
+        device = dev_get_by_name(dev_net(dev), slot_name);
 #else
                device = dev_get_by_name(slot_name);
 #endif
--
1.5.6.2
&lt;/pre&gt;
&lt;p&gt;Finally, the driver is unusably noisy. Unless you want fifty-odd lines of kernel debug informatione every five seconds:&lt;/p&gt;
&lt;pre&gt;
From 19c7a6895333624566775541fbc836e0c9208225 Mon Sep 17 00:00:00 2001
From: Ciaran McCreesh &amp;lt;ciaran.mccreesh@googlemail.com&amp;gt;
Date: Mon, 14 Jul 2008 16:47:43 +0100
Subject: [PATCH] You shut your dirty whore mouth

---
 include/rt_linux.h |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/include/rt_linux.h b/include/rt_linux.h
index dfe4ab5..079d256 100644
--- a/include/rt_linux.h
+++ b/include/rt_linux.h
@@ -325,10 +325,6 @@ extern ULONG    RTDebugLevel;

 #define DBGPRINT_RAW(Level, Fmt)    \
 {                                   \
-    if (Level &amp;lt;= RTDebugLevel)      \
-    {                               \
-        printk Fmt;               \
-    }                               \
 }

 #define DBGPRINT(Level, Fmt)    DBGPRINT_RAW(Level, Fmt)
--
1.5.6.2
&lt;/pre&gt;
&lt;p&gt;There&amp;#8217;s no Makefile install target, so you&amp;#8217;ll need to &lt;code&gt;sudo cp os/linux/*.ko /lib/modules/`uname -r`/kernel/&lt;/code&gt; then &lt;code&gt;sudo depmod -a&lt;/code&gt; before you can &lt;code&gt;sudo modprobe rt2860sta&lt;/code&gt;. You&amp;#8217;ll also need to &lt;code&gt;sudo mkdir -p /etc/Wireless/RT2860STA/&lt;/code&gt; then &lt;code&gt;cp RT2860STA.dat /etc/Wireless/RT2860STA/&lt;/code&gt;, even though we&amp;#8217;re not using that file for any configuration.&lt;/p&gt;
&lt;p&gt;Gentoo&amp;#8217;s init scripts, if you&amp;#8217;re using them, try to be overly clever, and won&amp;#8217;t be able to bring up the interface. So use something like this as your &lt;code&gt;/etc/init.d/net.ra0&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;
#!/sbin/runscript

depend() {
    need localmount
    after bootmisc hostname net.lo net.lo0
    use isapnp isdn pcmcia usb wlan
}

start() {
    bash -x -c 'ifconfig ra0 up'
    bash -x -c 'iwconfig ra0 essid giant-space-monkey key &quot;aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66&quot; freq 2.417G'
    bash -x -c 'dhcpcd ra0'
}

stop() {
    :
}

restart() {
    :
}
&lt;/pre&gt;
&lt;p&gt;And that appears to be sufficient.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/53/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/53/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/53/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/53/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/53/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/53/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/53/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/53/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/53/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/53/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/53/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/53/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;amp;blog=3715284&amp;amp;post=53&amp;amp;subd=ciaranm&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 14 Jul 2008 16:11:54 +0000</pubDate>
</item>
<item>
	<title>Bryan Østergaard: From the department of wasting time</title>
	<guid>http://kloeri.livejournal.com/6030.html</guid>
	<link>http://kloeri.livejournal.com/6030.html</link>
	<description>&lt;a href=&quot;http://code.google.com/p/codeswarm/&quot;&gt;This&lt;/a&gt; is shiny but pretty much useless if you ignore the geek factor.. Not one to ignore the geek factor I've made a quick &lt;a href=&quot;http://dev.exherbo.org/~kloeri/arbor.avi&quot;&gt;movie of arbor&lt;/a&gt; commits :)&lt;br /&gt;&lt;br /&gt;There's movies of the Apache, Postgres, Eclipse and Python projects available on the authors &lt;a href=&quot;http://vis.cs.ucdavis.edu/~ogawa/codeswarm/&quot;&gt;homepage&lt;/a&gt;.</description>
	<pubDate>Thu, 10 Jul 2008 10:31:47 +0000</pubDate>
</item>
<item>
	<title>Alexander Færøy: Logo</title>
	<guid>http://ahfaeroey.wordpress.com/?p=14</guid>
	<link>http://ahfaeroey.wordpress.com/2008/06/10/logo/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Exherbo has finally got a logo thanks to Ida Jensen. Here it is:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ahfaeroey.files.wordpress.com/2008/06/exherbo3.png&quot;&gt;&lt;img src=&quot;http://ahfaeroey.files.wordpress.com/2008/06/exherbo3.png?w=99&amp;h=112&quot; alt=&quot;&quot; width=&quot;99&quot; height=&quot;112&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can find the &lt;tt&gt;svg&lt;/tt&gt; file in the &lt;tt&gt;exherbo&lt;/tt&gt; git repository.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; I completely forgot to thank the person who actually draw the logo. It was &lt;a href=&quot;http://simplychristel.net/&quot;&gt;Christel&lt;/a&gt; from the Exherbo team who draw the initial cartoon and Ida then later turned it into a digital version! Sorry Christel, I owe you a cookie &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ahfaeroey.wordpress.com/14/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ahfaeroey.wordpress.com/14/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ahfaeroey.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ahfaeroey.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ahfaeroey.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ahfaeroey.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ahfaeroey.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ahfaeroey.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ahfaeroey.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ahfaeroey.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ahfaeroey.wordpress.com/14/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ahfaeroey.wordpress.com/14/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ahfaeroey.wordpress.com&amp;blog=3719608&amp;post=14&amp;subd=ahfaeroey&amp;ref=&amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 09 Jul 2008 16:41:16 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Paludis 0.28.0 Released</title>
	<guid>http://ciaranm.wordpress.com/?p=51</guid>
	<link>http://ciaranm.wordpress.com/2008/07/07/paludis-0280-released/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://paludis.pioto.org/&quot;&gt;Paludis&lt;/a&gt; 0.28.0 has been released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compilers without tr1 memory, type traits and functional support are no longer supported. This means you, gcc-3.&lt;/li&gt;
&lt;li&gt;Support for the &lt;a href=&quot;http://www.exherbo.org/&quot;&gt;Exherbo&lt;/a&gt; distribution.&lt;/li&gt;
&lt;li&gt;Better detection of SCM versions.&lt;/li&gt;
&lt;li&gt;Bug fixes: pkg_pretend now behaves correctly with resumes (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/604&quot;&gt;ticket:604&lt;/a&gt;). Better support for Portage config files (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/597&quot;&gt;ticket:597&lt;/a&gt;). Package dep spec parsing no longer has trailing hyphen issues (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/590&quot;&gt;ticket:590&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;New Selection + Filter + Generator interface using Environment, replacing the old PackageDatabase Query (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/559&quot;&gt;ticket:559&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;importare can now change file ownership to root (&lt;a href=&quot;http://trac.pioto.org/paludis/ticket/599&quot;&gt;ticket:599&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/51/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/51/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/51/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/51/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/51/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/51/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/51/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/51/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/51/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/51/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/51/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/51/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;amp;blog=3715284&amp;amp;post=51&amp;amp;subd=ciaranm&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 07 Jul 2008 15:31:02 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Hardware Vendor Hate List</title>
	<guid>http://ciaranm.wordpress.com/?p=50</guid>
	<link>http://ciaranm.wordpress.com/2008/07/04/hardware-vendor-hate-list/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Logitech. You helpfully claim to be able to provide replacement feet for keyboards free of charge &amp;#8212; presumably, breakages are not exactly uncommon. Then you claim not to keep track of whether or not you have any spares for my year-old G15 keyboard, so you can&amp;#8217;t give me any. And no, you won&amp;#8217;t go and have a look to find out whether you do have any.&lt;/li&gt;
&lt;li&gt;Whoever makes the push pins found on LGA 775 CPUs. Especially the kind that require so much force to lock that it&amp;#8217;s a race between the motherboard and my finger to see which will break first.&lt;/li&gt;
&lt;li&gt;Abit. You should be ashamed of the F-I90HD motherboard for all sorts of reasons, but today&amp;#8217;s gripe is about the heatsink on the integrated graphics chip. I shouldn&amp;#8217;t have to install a cooling fan onto the heatsink to stop the screen from going black when the CPU is under load.&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/50/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/50/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;amp;blog=3715284&amp;amp;post=50&amp;amp;subd=ciaranm&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 05 Jul 2008 08:41:19 +0000</pubDate>
</item>
<item>
	<title>Ciaran McCreesh: Bedtime Reading III</title>
	<guid>http://ciaranm.wordpress.com/?p=47</guid>
	<link>http://ciaranm.wordpress.com/2008/06/29/bedtime-reading-iii/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.computerworld.com.au/index.php/id;408408016;pp;1;fp;16;fpid;1&quot;&gt;An interview with Bjarne Stroustrup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml&quot;&gt;Google C++ Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.withouthotair.com/&quot;&gt;Sustainable Energy - Without the Hot Air&lt;/a&gt;, David J.C. MacKay&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ciaranm.wordpress.com/47/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ciaranm.wordpress.com/47/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ciaranm.wordpress.com/47/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ciaranm.wordpress.com/47/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ciaranm.wordpress.com/47/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ciaranm.wordpress.com/47/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ciaranm.wordpress.com/47/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ciaranm.wordpress.com/47/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ciaranm.wordpress.com/47/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ciaranm.wordpress.com/47/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ciaranm.wordpress.com/47/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ciaranm.wordpress.com/47/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ciaranm.wordpress.com&amp;amp;blog=3715284&amp;amp;post=47&amp;amp;subd=ciaranm&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 29 Jun 2008 23:06:50 +0000</pubDate>
</item>
<item>
	<title>Alexander Færøy: Follow-Up: Attack on Exherbo.org machine</title>
	<guid>http://ahfaeroey.wordpress.com/?p=20</guid>
	<link>http://ahfaeroey.wordpress.com/2008/06/29/follow-up-attack-on-exherboorg-machine/</link>
	<description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Some of you might have read &lt;a href=&quot;http://ahfaeroey.wordpress.com/2008/06/28/attack-on-exherboorg-machine/&quot;&gt;my previous blog post&lt;/a&gt; about the attack on &lt;a href=&quot;http://quotes.exherbo.org/&quot;&gt;Exherbo&amp;#8217;s quote database&lt;/a&gt; that I wrote about yesterday. As promised I am going to write a follow up post about how this was handled and what the result of the cooperation with &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;&amp;#8217;s infrastructure team was.&lt;/p&gt;
&lt;p&gt;First of all I would like to thank &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;&amp;#8217;s infrastructure team for acting quickly and very professionally. They reacted immediately after I posted &lt;a href=&quot;https://bugs.gentoo.org/229895&quot;&gt;the bug&lt;/a&gt; and asked for the information they needed (log files) to compare with their own auditing results.&lt;/p&gt;
&lt;p&gt;I would especially like to thank robbat2, KingTaco, Ramereth, solar and fox2mike who worked on the issue, reviewed log files and discussed how they were going to handle this incident.&lt;/p&gt;
&lt;p&gt;I would like to clarify that &lt;a href=&quot;http://www.exherbo.org/&quot;&gt;Exherbo&lt;/a&gt; harbours no ill will towards any of the companies (&lt;a href=&quot;http://www.gni.com&quot;&gt;GNi&lt;/a&gt;, &lt;a href=&quot;http://www.bytemark.co.uk/&quot;&gt;Bytemark&lt;/a&gt; and &lt;a href=&quot;http://www.osuosl.org/&quot;&gt;OSUOSL&lt;/a&gt;). They are providing much needed hardware and infrastructure for many open source projects but have no role beyond as a sponsor.&lt;/p&gt;
&lt;p&gt;No company is able to prevent their users from carrying out malicious actions from their network.&lt;/p&gt;
&lt;p&gt;I also promised to give you an update based on the information that we received after &lt;a href=&quot;http://ahfaeroey.wordpress.com/2008/06/28/attack-on-exherboorg-machine/&quot;&gt;the blog post&lt;/a&gt; and &lt;a href=&quot;https://bugs.gentoo.org/229895&quot;&gt;the bug&lt;/a&gt; was created:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alex Howells (Astinus) has been removed from all Gentoo infrastructure and as you can read on &lt;a href=&quot;https://bugs.gentoo.org/229895&quot;&gt;bug #229895&lt;/a&gt;, &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;&amp;#8217;s infrastructure team has informed all the developers via the &lt;tt&gt;gentoo-core&lt;/tt&gt; mailing list about what happened.
&lt;p&gt;   The developers received the following message (taken from &lt;a href=&quot;https://bugs.gentoo.org/229895&quot;&gt;the bug&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
   As reported on &lt;a href=&quot;https://bugs.gentoo.org/229895&quot;&gt;bug #229895&lt;/a&gt;, on 27 Jun 2008 at 19:04 UTC, there was unwarranted traffic sent to &lt;a href=&quot;http://quotes.exherbo.org/&quot;&gt;http://quotes.exherbo.org/&lt;/a&gt; and some of the traffic involved originated from various &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo Linux&lt;/a&gt; infrastructure machines.  The &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; infrastructure team conducted an audit based on logs from the machines as well as those provided by &lt;a href=&quot;http://www.exherbo.org/&quot;&gt;Exherbo&lt;/a&gt;&amp;#8217;s infrastructure team.  Based on results of our audit and the user&amp;#8217;s admission via email, we have concluded that the said actions were taken by one of our developers named astinus.&lt;/p&gt;
&lt;p&gt;   We have taken appropriate action and have removed the developer in question from &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo Linux&lt;/a&gt; infrastructure.  We sincerely apologize to the administrator of &lt;a href=&quot;http://quotes.exh