<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Politreco</title>
	<atom:link href="http://www.politreco.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.politreco.com</link>
	<description>by Lucas De Marchi</description>
	<lastBuildDate>Mon, 26 Nov 2012 14:03:13 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Dan Nicholson</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27102</link>
		<dc:creator>Dan Nicholson</dc:creator>
		<pubDate>Mon, 26 Nov 2012 14:03:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27102</guid>
		<description><![CDATA[Hi Lucas,

I probably overstated 2. I guess as long as the dependencies are all standard automake primitives then it&#039;s no big difference (e.g. something in _LDADD is the same recursive or non-recursive). What I was thinking of was something where many targets depend on a built program or a built source file. Normally you could just seclude those in a directory and have it come first in SUBDIRS then everything would inherit from that. Otherwise, you&#039;d have to state that built program/source/header as a prerequisite all over the place.

I do agree that there can be very large build time gains on a big project with the non-recursive approach. For me, I&#039;ve always felt that there&#039;s a definite speed to complexity tradeoff. I always feel like as long as the build is fast enough that I don&#039;t switch away to something else on incremental (dirty) runs then I&#039;m happy. A project I&#039;ve worked on a bunch that could definitely use the speed improvement is the xserver, but I also know there&#039;s some nasty stuff that would make one large Makefile difficult to maintain. A project for someone...]]></description>
		<content:encoded><![CDATA[<p>Hi Lucas,</p>
<p>I probably overstated 2. I guess as long as the dependencies are all standard automake primitives then it&#8217;s no big difference (e.g. something in _LDADD is the same recursive or non-recursive). What I was thinking of was something where many targets depend on a built program or a built source file. Normally you could just seclude those in a directory and have it come first in SUBDIRS then everything would inherit from that. Otherwise, you&#8217;d have to state that built program/source/header as a prerequisite all over the place.</p>
<p>I do agree that there can be very large build time gains on a big project with the non-recursive approach. For me, I&#8217;ve always felt that there&#8217;s a definite speed to complexity tradeoff. I always feel like as long as the build is fast enough that I don&#8217;t switch away to something else on incremental (dirty) runs then I&#8217;m happy. A project I&#8217;ve worked on a bunch that could definitely use the speed improvement is the xserver, but I also know there&#8217;s some nasty stuff that would make one large Makefile difficult to maintain. A project for someone&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Anonymous</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27089</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 23 Nov 2012 07:39:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27089</guid>
		<description><![CDATA[Note that you can achieve the same improvement in parallelism without necessarily eliminating the use of recursive make.  As long as you make sure that any recursive calls to make use $(MAKE) rather than &quot;make&quot;, GNU make will arrange to propagate parallelism into the recursive calls.]]></description>
		<content:encoded><![CDATA[<p>Note that you can achieve the same improvement in parallelism without necessarily eliminating the use of recursive make.  As long as you make sure that any recursive calls to make use $(MAKE) rather than &#8220;make&#8221;, GNU make will arrange to propagate parallelism into the recursive calls.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Lucas De Marchi</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27086</link>
		<dc:creator>Lucas De Marchi</dc:creator>
		<pubDate>Wed, 21 Nov 2012 14:47:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27086</guid>
		<description><![CDATA[Hi Dan,

I agree that it comes with its own drawbacks. However I don&#039;t think it&#039;s worse than recursive automake. For small projects it&#039;s very simple and once you are used to it, it&#039;s just automatic. For big projects like enlightenment the pros pay off the extra work. And for sure there are experienced people to help on build-sys in big projects.

Answering point by point:

1. The namespace indeed can become very ugly and it&#039;s extra verbosity. For the flags I have to disagree. It&#039;s the same thing you should have done in the recursive automake.  CFLAGS/LDFLAGS per target is the right thing to do in big projects. For the targets you have a common set of flags you put them in AM_CFLAGS. And this in inherited by all targets. If you happen to need to set the CFLAGS to  a particular target the only thing you need to do is to define target_CFLAGS, prepending AM_CFLAGS. I don&#039;t think this is any worse than defining an AM_CFLAGS per subdir, but rather it pushes you to do the right thing.

2. Rather the opposite. By using a single automake the generated makefile has knowledge of all the dependencies. Why do you need to serialize the build in a per dir basis? Do you have an example?

3. Yep, I agree. I tend to let things like doc and unit tests by using recursive makefiles. Remember it&#039;s not &quot;either one or the other&quot;. We can mix both. For example, in enlightenment the only thing I converted was the build of modules. We still recurse in 22 directories. Some of them could be converted, but I don&#039;t think there will be much benefit on this work so I simply keep as is.

4. Well, it indeed depends on how experienced in autotools the people involved in the project are. Or how much they are willing to learn to have the benefits. IMO once the intricacies of non-recursive automake are learnt the biggest drawback will be only noise in the Makefile.am as you pointed out in systemd&#039;s. From my experience it doesn&#039;t add much more maintenance effort - it&#039;s a lot of effort to convert, not to maintain.

And, we are not talking about a small improvement in build time. For enlightenment it was 4 times smaller. You&#039;ll have a hard time convincing me, as a developer, not to use it and having to wait that much more.  And for packagers there are no cons, only pros.]]></description>
		<content:encoded><![CDATA[<p>Hi Dan,</p>
<p>I agree that it comes with its own drawbacks. However I don&#8217;t think it&#8217;s worse than recursive automake. For small projects it&#8217;s very simple and once you are used to it, it&#8217;s just automatic. For big projects like enlightenment the pros pay off the extra work. And for sure there are experienced people to help on build-sys in big projects.</p>
<p>Answering point by point:</p>
<p>1. The namespace indeed can become very ugly and it&#8217;s extra verbosity. For the flags I have to disagree. It&#8217;s the same thing you should have done in the recursive automake.  CFLAGS/LDFLAGS per target is the right thing to do in big projects. For the targets you have a common set of flags you put them in AM_CFLAGS. And this in inherited by all targets. If you happen to need to set the CFLAGS to  a particular target the only thing you need to do is to define target_CFLAGS, prepending AM_CFLAGS. I don&#8217;t think this is any worse than defining an AM_CFLAGS per subdir, but rather it pushes you to do the right thing.</p>
<p>2. Rather the opposite. By using a single automake the generated makefile has knowledge of all the dependencies. Why do you need to serialize the build in a per dir basis? Do you have an example?</p>
<p>3. Yep, I agree. I tend to let things like doc and unit tests by using recursive makefiles. Remember it&#8217;s not &#8220;either one or the other&#8221;. We can mix both. For example, in enlightenment the only thing I converted was the build of modules. We still recurse in 22 directories. Some of them could be converted, but I don&#8217;t think there will be much benefit on this work so I simply keep as is.</p>
<p>4. Well, it indeed depends on how experienced in autotools the people involved in the project are. Or how much they are willing to learn to have the benefits. IMO once the intricacies of non-recursive automake are learnt the biggest drawback will be only noise in the Makefile.am as you pointed out in systemd&#8217;s. From my experience it doesn&#8217;t add much more maintenance effort &#8211; it&#8217;s a lot of effort to convert, not to maintain.</p>
<p>And, we are not talking about a small improvement in build time. For enlightenment it was 4 times smaller. You&#8217;ll have a hard time convincing me, as a developer, not to use it and having to wait that much more.  And for packagers there are no cons, only pros.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Lucas De Marchi</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27085</link>
		<dc:creator>Lucas De Marchi</dc:creator>
		<pubDate>Wed, 21 Nov 2012 14:19:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27085</guid>
		<description><![CDATA[Yep. There are tons of alternatives. I myself already worked on porting autotools to cmake  (for webkit).

I already played with plenty of them. Every build system has its pros and cons. The biggest pro of autotools is being an already established one with features/hacks for almost all build scenarios one can think of. And people do need the weird scenarios when building for their weird distro/configuration. So, shipping a shiny new build system, whether cool and probably faster, will make package maintainers angry because they cannot use what they already know and have macros, tricks and what not to make it work on their build machines. 
Ask OE folks for instance.]]></description>
		<content:encoded><![CDATA[<p>Yep. There are tons of alternatives. I myself already worked on porting autotools to cmake  (for webkit).</p>
<p>I already played with plenty of them. Every build system has its pros and cons. The biggest pro of autotools is being an already established one with features/hacks for almost all build scenarios one can think of. And people do need the weird scenarios when building for their weird distro/configuration. So, shipping a shiny new build system, whether cool and probably faster, will make package maintainers angry because they cannot use what they already know and have macros, tricks and what not to make it work on their build machines.<br />
Ask OE folks for instance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Dan Nicholson</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27084</link>
		<dc:creator>Dan Nicholson</dc:creator>
		<pubDate>Wed, 21 Nov 2012 14:02:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27084</guid>
		<description><![CDATA[This is a nice and not hyperbolic coverage of the reasons to use non-recursive automake. :) This has come up on some projects I&#039;m involved in, so I feel inclined to point out some drawbacks of this approach.

1. Requires you to namespace the build much more than previously. Every time a generic variable was used in a recursive Makefile, it now has to be carefully namespaced considering both its effects on the target as well as the automake environment itself (e.g., target_CFLAGS vs AM_CFLAGS). This can be pretty irritating for a large project.

2. Requires you to adjust the make prerequisites to keep the correct serialization. This can be quite complex for some people. A big advantage of the recursive system are the synchronizing points you&#039;re trying to avoid. In a standard automake system it&#039;s easy to order the build by just putting things that logically depend on another component of the build in a separate subdirectory. Not a big deal for a small project, but can certainly require a lot more thought than previously.

3. Separate SUBDIRS provides easy points to make parts of the build conditional. If you&#039;re adept with AM_CONDITIONALs this is no big deal, but it&#039;s certainly easier to make a single directory conditional instead of all the targets it encompasses.

4. Generally it&#039;s a lot more maintenance than the standard recursive system for the previous points. If the reason to have the autotools is to reduce build system maintenance, then going non-recursive absolutely has the opposite effect. For a non-recursive build you almost certainly need someone around who&#039;s quite familiar with the intricacies of the build.

For an example of these drawbacks, I can simply point to the systemd non-recursive Makefile.

http://cgit.freedesktop.org/systemd/systemd/tree/Makefile.am

That thing is a freaking beast. I applaud them for pulling it off, but you&#039;ll have a hard time convincing me that the maintenance burden is not high. I imagine a project of enlightenment&#039;s size is similar. I guess that&#039;s the tradeoff. For non-recursive make to provide a big enough payoff, you need to have a fairly big project. But a big project is where the build interactions become the most complex in a non-recursive build.]]></description>
		<content:encoded><![CDATA[<p>This is a nice and not hyperbolic coverage of the reasons to use non-recursive automake. <img src='http://www.politreco.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  This has come up on some projects I&#8217;m involved in, so I feel inclined to point out some drawbacks of this approach.</p>
<p>1. Requires you to namespace the build much more than previously. Every time a generic variable was used in a recursive Makefile, it now has to be carefully namespaced considering both its effects on the target as well as the automake environment itself (e.g., target_CFLAGS vs AM_CFLAGS). This can be pretty irritating for a large project.</p>
<p>2. Requires you to adjust the make prerequisites to keep the correct serialization. This can be quite complex for some people. A big advantage of the recursive system are the synchronizing points you&#8217;re trying to avoid. In a standard automake system it&#8217;s easy to order the build by just putting things that logically depend on another component of the build in a separate subdirectory. Not a big deal for a small project, but can certainly require a lot more thought than previously.</p>
<p>3. Separate SUBDIRS provides easy points to make parts of the build conditional. If you&#8217;re adept with AM_CONDITIONALs this is no big deal, but it&#8217;s certainly easier to make a single directory conditional instead of all the targets it encompasses.</p>
<p>4. Generally it&#8217;s a lot more maintenance than the standard recursive system for the previous points. If the reason to have the autotools is to reduce build system maintenance, then going non-recursive absolutely has the opposite effect. For a non-recursive build you almost certainly need someone around who&#8217;s quite familiar with the intricacies of the build.</p>
<p>For an example of these drawbacks, I can simply point to the systemd non-recursive Makefile.</p>
<p><a href="http://cgit.freedesktop.org/systemd/systemd/tree/Makefile.am" rel="nofollow">http://cgit.freedesktop.org/systemd/systemd/tree/Makefile.am</a></p>
<p>That thing is a freaking beast. I applaud them for pulling it off, but you&#8217;ll have a hard time convincing me that the maintenance burden is not high. I imagine a project of enlightenment&#8217;s size is similar. I guess that&#8217;s the tradeoff. For non-recursive make to provide a big enough payoff, you need to have a fairly big project. But a big project is where the build interactions become the most complex in a non-recursive build.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Speeding up build on autofoo projects by Felipe Contreras</title>
		<link>http://www.politreco.com/2012/11/speeding-up-build-on-autofoo-projects/comment-page-1/#comment-27083</link>
		<dc:creator>Felipe Contreras</dc:creator>
		<pubDate>Wed, 21 Nov 2012 10:30:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=774#comment-27083</guid>
		<description><![CDATA[Nice. I also like to work on build systems from time to time, and I also don&#039;t like autotools, or any of the alternatives.

I prefer plain Makefiles. With the right tricks, they can actually be pretty maintainable.

https://github.com/felipec/msn-pecan/blob/master/Makefile

https://github.com/felipec/libpurple-mini/blob/master/Makefile

For asbolute best speed, ninja is better than make:

http://martine.github.com/ninja/]]></description>
		<content:encoded><![CDATA[<p>Nice. I also like to work on build systems from time to time, and I also don&#8217;t like autotools, or any of the alternatives.</p>
<p>I prefer plain Makefiles. With the right tricks, they can actually be pretty maintainable.</p>
<p><a href="https://github.com/felipec/msn-pecan/blob/master/Makefile" rel="nofollow">https://github.com/felipec/msn-pecan/blob/master/Makefile</a></p>
<p><a href="https://github.com/felipec/libpurple-mini/blob/master/Makefile" rel="nofollow">https://github.com/felipec/libpurple-mini/blob/master/Makefile</a></p>
<p>For asbolute best speed, ninja is better than make:</p>
<p><a href="http://martine.github.com/ninja/" rel="nofollow">http://martine.github.com/ninja/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on BlueZ to move to standard D-Bus interfaces by David Zeuthen</title>
		<link>http://www.politreco.com/2012/07/bluez-to-move-to-standard-d-bus-interfaces/comment-page-1/#comment-26522</link>
		<dc:creator>David Zeuthen</dc:creator>
		<pubDate>Thu, 19 Jul 2012 18:58:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=721#comment-26522</guid>
		<description><![CDATA[This is cool, very glad to see more services support these interfaces. Thanks!]]></description>
		<content:encoded><![CDATA[<p>This is cool, very glad to see more services support these interfaces. Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on BlueZ to move to standard D-Bus interfaces by odi</title>
		<link>http://www.politreco.com/2012/07/bluez-to-move-to-standard-d-bus-interfaces/comment-page-1/#comment-26521</link>
		<dc:creator>odi</dc:creator>
		<pubDate>Thu, 19 Jul 2012 17:55:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=721#comment-26521</guid>
		<description><![CDATA[Good. Glad to hear that not everybody falls for that lame excuse: &quot;sorry, there was no time for it&quot;. Do it now, or you won&#039;t do it ever.]]></description>
		<content:encoded><![CDATA[<p>Good. Glad to hear that not everybody falls for that lame excuse: &#8220;sorry, there was no time for it&#8221;. Do it now, or you won&#8217;t do it ever.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Android Builders Summit 2012 by ELC 2012 @ Politreco</title>
		<link>http://www.politreco.com/2012/03/android-builders-summit-2012/comment-page-1/#comment-25820</link>
		<dc:creator>ELC 2012 @ Politreco</dc:creator>
		<pubDate>Tue, 20 Mar 2012 17:30:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=695#comment-25820</guid>
		<description><![CDATA[[...] my feedback of ELC 2012. If you didn&#8217;t read the first part, about ABS 2012, you can read the previous post [...]]]></description>
		<content:encoded><![CDATA[<p>[...] my feedback of ELC 2012. If you didn&#8217;t read the first part, about ABS 2012, you can read the previous post [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Android Builders Summit 2012 by 2012 Android Builder&#8217;s Summit Videos &#124; Android Development</title>
		<link>http://www.politreco.com/2012/03/android-builders-summit-2012/comment-page-1/#comment-25653</link>
		<dc:creator>2012 Android Builder&#8217;s Summit Videos &#124; Android Development</dc:creator>
		<pubDate>Sat, 17 Mar 2012 20:43:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.politreco.com/?p=695#comment-25653</guid>
		<description><![CDATA[[...] News via Lucas De March: [...]]]></description>
		<content:encoded><![CDATA[<p>[...] News via Lucas De March: [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
