<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Slow and Steady - build system</title>
    <link>http://blog.hurrynot.org/serendipity/</link>
    <description>Occasional ramblings of an idiot with a PhD</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.2-beta4 - http://www.s9y.org/</generator>
    <pubDate>Mon, 02 Jul 2007 06:33:30 GMT</pubDate>

    <image>
        <url>http://blog.hurrynot.org/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Slow and Steady - build system - Occasional ramblings of an idiot with a PhD</title>
        <link>http://blog.hurrynot.org/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>My Novell Hack Week project: Implement support for Mono in Automake</title>
    <link>http://blog.hurrynot.org/serendipity/archives/7-My-Novell-Hack-Week-project-Implement-support-for-Mono-in-Automake.html</link>
            <category>build system</category>
            <category>mono</category>
    
    <comments>http://blog.hurrynot.org/serendipity/archives/7-My-Novell-Hack-Week-project-Implement-support-for-Mono-in-Automake.html#comments</comments>
    <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Raja R Harinath)</author>
    <content:encoded>
    This week was &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/idea.opensuse.org&#039;);&quot; href=&quot;http://idea.opensuse.org&quot;&gt;hack week&lt;/a&gt; for all the Open Source hackers at Novell, where we got to work on ideas and projects that we were personally interested in.  I decided to work on something that I&#039;ve been planning for a long time, ever since I joined the Mono project, in fact: &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/idea.opensuse.org/content/ideas/better-automake-support-for-mono&#039;);&quot; href=&quot;http://idea.opensuse.org/content/ideas/better-automake-support-for-mono&quot;&gt;add support for Mono in Automake&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It has been a while since I hacked on the automake source tree, but I didn&#039;t have too much trouble getting started.  In the end, I got most of the features I intended for it:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;support for building Mono exes and dlls&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for installing them in the GAC&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support out-of-tree builds&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;dependency tracking on sources&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for specifying resources, and tracking dependencies on them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for specifying references, and tracking dependencies on them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for multiple languages, include C#, VB.NET, Nemerle, Boo&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;easy extensibility of the support to other languages -- essentially, just need to add the filename extension of the language to SUFFIXES&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;bundled autoconf macro to detect installed compilers and other tools&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;... and some examples, test cases, and documentation to explain how to use all of it&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
Stuff missing include&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;autoconf macros to detect if libraries are installed or not&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for Microsoft&#039;s compilers -- basically a question of replacing &#039;/&#039; with &#039;\&#039; in filenames, where appropriate&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;support for response files -- mainly wrt distributing sources mentioned in them&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;real life experience with actual projects using all the above features&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
The whole effort took up most of the five days.  I spent much of Monday checking out the code from CVS into &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/git.or.cz&#039;);&quot; href=&quot;http://git.or.cz&quot;&gt;git&lt;/a&gt; and looking at how support for C and other languages was implemented.  I had most of the basic support done by Tuesday, got all dependency tracking working by Wednesday, and added documentation, autoconf support, and GAC-installation support by Friday afternoon.   I&#039;m very happy that I spent the time upfront to import the project into git, since it saved me from spending a lot of timeslices tracking my changes.&lt;br /&gt;
&lt;br /&gt;
The code is available as a series of &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/patches&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/patches&quot; rel=&quot;nofollow&quot;&gt;patches&lt;/a&gt; to Automake  (packed conveniently in a &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/patches.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/patches.tar.gz&quot; rel=&quot;nofollow&quot;&gt;tarball&lt;/a&gt;), and there&#039;s also an &lt;a href=&quot;http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;http://blog.hurrynot.org/mono-in-automake/test-1.0.tar.gz&quot; rel=&quot;nofollow&quot;&gt;example project&lt;/a&gt; that shows how to use it.  I also have a &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/video.google.com/videoplay?docid=7525466052747539502&#039;);&quot; href=&quot;http://video.google.com/videoplay?docid=7525466052747539502&quot;&gt;&quot;lightning talk&quot; short video&lt;/a&gt; about the project.&lt;br /&gt;
&lt;br /&gt;
&lt;embed style=&quot;width:400px; height:326px;&quot; id=&quot;VideoPlayback&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://video.google.com/googleplayer.swf?docId=7525466052747539502&amp;hl=en&quot; flashvars=&quot;&quot;&gt; &lt;/embed&gt;&lt;br /&gt;
&lt;br /&gt;
As much as I enjoyed the coding, I also thoroughly enjoyed working with the whole Bangalore open source team, all in the same conference room for five days, with everyone having a good time, and good food. 
    </content:encoded>

    <pubDate>Mon, 02 Jul 2007 06:33:30 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hurrynot.org/serendipity/archives/7-guid.html</guid>
    
</item>
<item>
    <title>automake, make dist and long filenames</title>
    <link>http://blog.hurrynot.org/serendipity/archives/3-automake,-make-dist-and-long-filenames.html</link>
            <category>build system</category>
    
    <comments>http://blog.hurrynot.org/serendipity/archives/3-automake,-make-dist-and-long-filenames.html#comments</comments>
    <wfw:comment>http://blog.hurrynot.org/serendipity/wfwcomment.php?cid=3</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.hurrynot.org/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=3</wfw:commentRss>
    

    <author>nospam@example.com (Raja R Harinath)</author>
    <content:encoded>
    Harish noticed some &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/blogs.gnome.org/view/kharish/2006/01/18/0&#039;);&quot; href=&quot;http://blogs.gnome.org/view/kharish/2006/01/18/0&quot;&gt;strange behaviour&lt;/a&gt; with &#039;make dist&#039;. He later found out that it had to do with a file with an overly long pathname. Automake 1.9 by default forces &#039;tar&#039; to work in the &quot;most compatible&quot; mode, and that mode supports pathnames only upto 99 characters long.&lt;br /&gt;
&lt;br /&gt;
The solution is to ask automake to request tar to use the POSIX standard &#039;pax&#039; format. Add a line like the following in the top-level Makefile.am.&lt;br /&gt;
&lt;pre&gt;AUTOMAKE_OPTIONS = tar-pax&lt;/pre&gt;&lt;br /&gt;
However, life wouldn&#039;t be interesting if it was so simple.&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;This option is not backwards compatible: older versions of automake don&#039;t know about it, and they barf on unknown options&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;The tar that comes with SuSE 9.2 (IIRC) doesn&#039;t support &#039;pax&#039;, but does support the &#039;ustar&#039; format, an older POSIX standard. Luckily automake has an option to request &#039;ustar&#039; format: &lt;tt&gt;tar-ustar&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
That gets us to mono&#039;s solution.  Here&#039;s the configure.in tidbit that does the trick:&lt;br /&gt;
&lt;pre&gt;# Gross hack to enable &#039;make dist&#039; on automake 1.9+tar 1.14.&lt;br /&gt;
# The extra brackets are to foil regex-based scans.&lt;br /&gt;
m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])&lt;/pre&gt;&lt;br /&gt;
Now, please forget this trick, it&#039;s gross.  Just use automake 1.9.&lt;br /&gt;
&lt;br /&gt;
PS: There&#039;s an even simpler trick: start distributing ZIP files (&lt;tt&gt;make dist-zip&lt;/tt&gt;) instead &lt;img src=&quot;http://blog.hurrynot.org/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Thu, 19 Jan 2006 02:22:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.hurrynot.org/serendipity/archives/3-guid.html</guid>
    
</item>

</channel>
</rss>