{"id":150,"date":"2012-01-24T16:43:21","date_gmt":"2012-01-24T20:43:21","guid":{"rendered":"http:\/\/www.joshmatthews.net\/blog\/?p=150"},"modified":"2012-01-24T16:50:01","modified_gmt":"2012-01-24T20:50:01","slug":"smartmake-redux-harder-better-faster-stronger","status":"publish","type":"post","link":"https:\/\/www.joshmatthews.net\/blog\/2012\/01\/smartmake-redux-harder-better-faster-stronger\/","title":{"rendered":"smartmake redux: harder, better, faster, stronger"},"content":{"rendered":"<p>Do you get frustrated about how long it takes to build Firefox after you&#8217;ve only made a small change to a single file? Have you heard the words &#8220;incremental build&#8221;, or tried to only build one or two directories but can&#8217;t figure out why your changes aren&#8217;t showing up?<\/p>\n<p>You are not alone.<\/p>\n<p>I released my <a href=\"http:\/\/hg.mozilla.org\/users\/josh_joshmatthews.net\/smartmake\">smartmake<\/a> tool last year to allow people to specify then directories they&#8217;ve changed, and in return the tool would perform a correct incremental build. No hassle, no sweat. The name was deceptive; it was a pretty dumb tool, but it got the job done with a little help from the user. However, there is a rule that any build system tool eventually reimplements the functionality of make, and so I am proud to release <a href=\"http:\/\/hg.mozilla.org\/users\/josh_joshmatthews.net\/smartmake\">smartmake v2<\/a>, which requires less work than ever before to produce correct incremental builds.<\/p>\n<p>Thanks to the hard work of the illustrious Till Schneidereit (till on IRC), smartmake now finds every source file modified since the last time you performed an incremental build, and performs a (mostly) minimal rebuild. It will also complain if it comes across any modified files for which it doesn&#8217;t have any dependency information, and suggest you perform a full build instead.<\/p>\n<p>Go ahead, give it a shot! Tell me (or Till) what goes wrong so that we can fix it. I recommend doing a full build, then making a small change and running <code>smartmake.py '5 minutes ago'<\/code> to kick it off and get the timestamp caching happening.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do you get frustrated about how long it takes to build Firefox after you&#8217;ve only made a small change to a single file? Have you heard the words &#8220;incremental build&#8221;, or tried to only build one or two directories but &hellip; <a href=\"https:\/\/www.joshmatthews.net\/blog\/2012\/01\/smartmake-redux-harder-better-faster-stronger\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,22],"tags":[],"class_list":["post-150","post","type-post","status-publish","format-standard","hentry","category-mozilla","category-projects"],"_links":{"self":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":2,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/150\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/150\/revisions\/152"}],"wp:attachment":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/media?parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/categories?post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/tags?post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}