bernd/fpm-cookery — pull request #21 by andytinycat (2013-03-31 00:51:59+00:00)
Title: Support "Omnibus"-style packaging

Omnibus packages are used by the Chef and Sensu projects to build an embedded Ruby, along with all the gems it requires to work. The Opscode project for doing this seems to refuse to take pull requests for improvements.

This pull request adds support for Omnibus-style packaging in a very generic way. It allows any recipe to be an Omnibus recipe by setting 'omnibus_package true' in the recipe file. It then must also have a list of recipes in omnibus_recipes, which we will look for in the same file as the original recipe. Also, you may optionally specify omnibus_dir to pick a real filesystem path to build into (this is required when using it to build a separate Ruby with gems included).

When a package is being built as an Omnibus package, it'll skip the build_package call until the last recipe has been built. It will then use the information from the original recipe to build the final package, building it from omnibus_dir if present.

I realise this is a fairly niche feature so I'm happy to maintain it as a fork if you don't feel it fits the project. I use this fairly often to keep ops stuff that requires Ruby separate from app stuff that requires Ruby (since we're a mostly Ruby shop).