{"id":2416,"date":"2011-11-21T11:04:48","date_gmt":"2011-11-21T01:04:48","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=2416"},"modified":"2011-11-21T11:04:48","modified_gmt":"2011-11-21T01:04:48","slug":"pandora-build-autotools-made-easy","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2011\/11\/21\/pandora-build-autotools-made-easy\/","title":{"rendered":"pandora-build: autotools made easy"},"content":{"rendered":"<p>Way back in 2009, Monty Taylor got fed up with maintaining a set of common autotools foo across several projects (one of which was <a href=\"http:\/\/www.drizzle.org\">Drizzle<\/a>) and started the <a href=\"http:\/\/launchpad.net\/pandora-build\">pandora-build<\/a> project. \u00c2\u00a0Basically, it&#8217;s a collection of the foo you need for autotools to do things like: use it properly, detect a bunch of common libraries, enable crap-tons of compiler warnings (and -Werror) and write an application\/library with plugins (that are auto-discovered and built).<\/p>\n<p>(and don&#8217;t worry, there&#8217;s also modes to disable -Werror and different compiler warnings if you&#8217;re working on an old code base that really doesn&#8217;t build cleanly)<\/p>\n<p>There&#8217;s also templates for <a href=\"https:\/\/wiki.ubuntu.com\/Quickly\">Quickly<\/a> to get you up and started really quickly.<\/p>\n<p>Basically, for the past 3 years, whenever I&#8217;ve gone to write some small project (or got sufficiently annoyed with the broken build system on an old one), I&#8217;ve turned to pandora-build to solve my problems.<\/p>\n<p>Recently, I&#8217;ve had the need to use the plugin infrastructure of pandora-build in a new project (I&#8217;ve used it extensively in <a href=\"http:\/\/www.drizzle.org\">Drizzle<\/a> of course). The one bit that pandora does not take care of for you is the dlopen() code to load plugins at run time&#8230; although I do wonder about turning some of that code into a bit of a library just because a bunch of it is pretty common&#8230;.<\/p>\n<p>Of course, a task for me is to write up a blog post on how I did it all, but for the moment I thought I&#8217;d just share :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Way back in 2009, Monty Taylor got fed up with maintaining a set of common autotools foo across several projects (one of which was Drizzle) and started the pandora-build project. \u00c2\u00a0Basically, it&#8217;s a collection of the foo you need for &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2011\/11\/21\/pandora-build-autotools-made-easy\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[76],"tags":[],"class_list":["post-2416","post","type-post","status-publish","format-standard","hentry","category-code"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-CY","jetpack-related-posts":[{"id":3083,"url":"https:\/\/www.flamingspork.com\/blog\/2012\/07\/03\/new-libeatmydata-release\/","url_meta":{"origin":2416,"position":0},"title":"New libeatmydata release!","author":"Stewart Smith","date":"2012-07-03","format":false,"excerpt":"I updated the web site for libeatmydata (woah!):\u00c2\u00a0http:\/\/flamingspork.com\/projects\/libeatmydata\/\u00c2\u00a0and the launchpad page: https:\/\/launchpad.net\/libeatmydata\u00c2\u00a0to reflect this too. New exciting things in the land of libeatmydata: sync_file_range is now wrapped (thanks to Phillip Susi) I now bundle the eatmydata helper script originally included in the debian packages the autotools foo builds on MacOS\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":323,"url":"https:\/\/www.flamingspork.com\/blog\/2004\/12\/21\/distcc-make-build-go-quicker\/","url_meta":{"origin":2416,"position":1},"title":"distcc make build go quicker","author":"Stewart Smith","date":"2004-12-21","format":false,"excerpt":"ahh... ccache, distcc and cross compilers make builds go quicker. two 350mhz PIIs, a 2.8Ghz P4 and a 1Ghz G4 are better than just the G4. although it's annoying having to wait on the autotools stuff for each clone of a tree.","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2196,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/11\/15\/limiting-functions-to-32k-stack-in-drizzle-and-scoped_ptr\/","url_meta":{"origin":2416,"position":2},"title":"Limiting functions to 32k stack in Drizzle (and scoped_ptr)","author":"Stewart Smith","date":"2010-11-15","format":false,"excerpt":"I wonder if this comes under \"Code Style\" or not... Anyway, Monty and I finished getting Drizzle ready for adding \"\u00ef\u00bb\u00bf\u00ef\u00bb\u00bf\u00ef\u00bb\u00bf-Wframe-larger-than=32768\" as a standard compiler flag. This means that no function within the Drizzle source tree can use greater than 32kb stack - it's a compiler warning - and with\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2323,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/03\/17\/things-ive-done-in-drizzle\/","url_meta":{"origin":2416,"position":3},"title":"Things I&#8217;ve done in Drizzle","author":"Stewart Smith","date":"2011-03-17","format":false,"excerpt":"When writing my Dropping ACID: Eating Data in a Web 2.0 Cloud World talk for LCA2011 I came to the realisation that I had forgotten a lot of the things I had worked on in MySQL and MySQL Cluster. So, as a bit of a retrospective as part of the\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2342,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/03\/30\/xtrabackup-for-drizzle-merge-request\/","url_meta":{"origin":2416,"position":4},"title":"xtrabackup for Drizzle merge request","author":"Stewart Smith","date":"2011-03-30","format":false,"excerpt":"Follow it over on launchpad. After having fixed an incredibly odd compiler warning (and with -Werror that we build with, error) on OSX (die die die) - xtrabackup for Drizzle is ready to be merged. This will bring it into our next milestone: freemont. Over the next few weeks you\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2330,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/03\/24\/drizzle-online-backup-with-xtrabackup\/","url_meta":{"origin":2416,"position":5},"title":"Drizzle online backup with xtrabackup","author":"Stewart Smith","date":"2011-03-24","format":false,"excerpt":"For backups, historically in the MySQL world you've had mysqldump (a SQL dump, means on restore you have to rebuild indexes), InnoDB Hot Backup (proprietary, but takes a copy of the InnoDB data files, so restore is much quicker), LVM snapshots (various scripts exist, does have larger IO impact, requires\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=2416"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2416\/revisions"}],"predecessor-version":[{"id":2417,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2416\/revisions\/2417"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=2416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=2416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=2416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}