{"id":68,"date":"2010-01-24T18:04:44","date_gmt":"2010-01-24T11:20:31","guid":{"rendered":""},"modified":"2010-10-15T03:03:47","modified_gmt":"2010-10-15T03:03:47","slug":"cmake-vs-autotools-poppler","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/lu_zero\/2010\/01\/24\/cmake-vs-autotools-poppler\/","title":{"rendered":"CMake vs autotools: poppler"},"content":{"rendered":"<p>Poppler has a CMake ebuild now. Given how poppler is used it seems to me quite a bad move, poppler is small and used in system that may not have cmake already installed.<\/p>\n<p>I run some numbers when wesnoth moved to cmake and claimed that it took about twice for me to build wesnoth+cmake on a phenom and building wesnoth alone took nearly the same time. Later a friend of mine wanted to play with me with wesnoth and given her pc is a _bit_ old, took ages to build an up to date wesnoth, about twice the time you may consider bearable thanks to the cmake switch.<\/p>\n<p>Let&#8217;s see what means switching poppler to CMake now, after the previous post I got some news of nice improvements, hopefully it improved even more while I wasn&#8217;t watching.<\/p>\n<p>Now some numbers:<\/p>\n<p>I have my system in need to update poppler, still the phenom I used the other time, it is doing nothing right now:<\/p>\n<p>cat \/proc\/cpuinfo | grep model_name<br \/>\nmodel name\t: AMD Phenom(tm) 9500 Quad-Core Processor<\/p>\n<p>first: I need cmake<\/p>\n<p>cmake ebuild tell me that I need xmlrpc-c with curl and curl with a kind of ssl support. I don&#8217;t see the point of having an xmlrpc library and two xml libraries for a make system, well let&#8217;s set the right useflags and trigger emerge cmake<\/p>\n<p>time says<\/p>\n<p>real\t8m9.854s<br \/>\nuser\t13m8.121s<br \/>\nsys\t3m7.664s<\/p>\n<p>qlop on the cut down emerge.log says<\/p>\n<p>domino ~ # qlop -t cmake -f mylog<br \/>\ncmake: 207 seconds average for 1 merges<br \/>\ndomino ~ # qlop -t curl -f mylog<br \/>\ncurl: 233 seconds average for 1 merges<br \/>\ndomino ~ # qlop -t xmlrpc-c -f mylog<br \/>\nxmlrpc-c: 40 seconds average for 1 merges<\/p>\n<p>So cmake is taking about the time of curl and it&#8217;s indeed faster to build that before (it alone), still autoconf+autotools take less than 60s here, and if we factor in the deps then we still have large margin for improvements (please make xmlrpc-c, curl, libxml and expat optional)<\/p>\n<p>app-text\/poppler<\/p>\n<p>takes about 37-40 seconds<\/p>\n<p>Hacking a bare ebuild w\/out touching poppler configure.ac makes it take about 60-66 seconds<\/p>\n<p>So if you are having cmake already installed this poppler ebuild is _quite_ an huge improvement. If you are wondering why that happens I could guess that given that poppler is quite small the cmake quicker configure step gives this large boost, probably not having libtool in the way helps as well.<\/p>\n<p>To sum up:<br \/>\n&#8211; the cmake poppler builds quite faster than autotools poppler.<br \/>\n&#8211; CMake improved a lot its build time, yet is largely bloated and could enjoy a trim.<br \/>\n&#8211; Poppler configure.ac probably could be improved to be in line with the cmake times.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poppler has a CMake ebuild now. Given how poppler is used it seems to me quite a bad move, poppler is small and used in system that may not have cmake already installed. I run some numbers when wesnoth moved to cmake and claimed that it took about twice for me to build wesnoth+cmake on &hellip; <a href=\"https:\/\/blogs.gentoo.org\/lu_zero\/2010\/01\/24\/cmake-vs-autotools-poppler\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">CMake vs autotools: poppler<\/span><\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3,4],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1aGWH-16","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/68"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":1,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"predecessor-version":[{"id":100,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/posts\/68\/revisions\/100"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/lu_zero\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}