Need help with fpm-cookery?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

bernd
455 Stars 89 Forks Other 591 Commits 33 Opened issues

Description

A tool for building software packages with fpm.

Services available

!
?

Need anything else?

Contributors list

# 15,426
Ruby
elastic
Groovy
graylog
375 commits
# 76,252
Ruby
HTML
capistr...
ssh
37 commits
# 205,298
Shell
gelf
TypeScr...
CSS
14 commits
# 383,845
Shell
Java
Kotlin
Android
13 commits
# 288,713
HTML
Rails
nix
Arch Li...
9 commits
# 104,473
GitHub
sinatra
rack
Ruby
8 commits
# 30,809
Ruby
Shell
nagios
Racket
8 commits
# 87,595
Ruby
system-...
prometh...
prometh...
4 commits
# 51,058
python-...
python-...
Django
Flask
4 commits
# 50,411
Shell
logging
jruby
Ruby
3 commits
# 82,359
Go
C
aws-cdk
cdk
3 commits
# 8,918
PHP
travis
Compose...
Symfony
3 commits
# 101,851
terrafo...
Terrafo...
python-...
python-...
3 commits
# 3,968
Redis
python-...
python3
testing...
2 commits
# 46,008
Ruby
sidekiq
activem...
Rails
2 commits
# 288,532
Vim
Redis
Clojure
message...
2 commits
# 83,460
Ruby
HTML
Twitter
webscra...
2 commits
# 4,478
Java
dropwiz...
restful...
test-fr...
2 commits
# 536,513
puppet
Shell
Scala
Erlang
2 commits
# 247,475
HTML
Go
chef-co...
chef-re...
2 commits

fpm-cookery - For building software

Build Status

A tool for building software packages with fpm.

The fpm project is really nice for building operating system packages like

.deb
and
.rpm
. But it only helps you to create the packages and doesn't help you with actually building the software.

fpm-cookery provides an infrastructure to automatically build software based on recipes. It's heavily inspired and borrows code from the great homebrew and brew2deb projects. The OpenBSD Ports System is probably another source of inspiration since I've been working with that for quite some time

It is using fpm to create the actual packages.

Documentation

Please find the documentation page here: https://fpm-cookery.readthedocs.org/

The documentation source is located in the

docs/
folder. Pull requests welcome! :)

Hosting and building of the documentation is provided by the great Read the Docs project!

Why?

Building operating system packages for Debian/Ubuntu and RedHat using the official process and tools is pretty annoying if you just want some custom packages. Jordan's fpm removes the biggest hurdle by providing a simple command line tool to build packages for different operating systems.

Before you can use fpm to create the package, you have to build the software, though. In the past I've been using some shell scripts and Makefiles to automate this task.

Then I discovered Aman's brew2deb which is actually homebrew with some modifications to make it work on Linux. (only Debian/Ubuntu for now) Since homebrew was designed for Mac OS X, I thought it would be nice to have a "native" Linux tool for the job.

fpm-cookery is my attempt to build such a tool.

Features

  • Download of the source archives. (via curl(1))
  • Recipes to describe and execute the software build. (e.g. configure, make, make install)
  • Sandboxed builds.
  • Package creation via fpm.
  • Standalone recipe trees/books/you name it. No need to put the recipes into the fpm-cookery source tree.
  • Can build Omnibus style packages (allows you to embed many builds into the same package - used by the Opscode folks to build an embedded Ruby and the gems for Chef into a single package; also the Sensu guys do something similar.)

Upcoming Features

  • Recipe validation.
  • More source types. (hg, bzr, ...)
  • Progress output and logging.
  • Extend recipe features and build/install helpers.
  • Configuration file. (for stuff like vendor and maintainer)
  • Options for the
    fpm-cook
    command.
  • Manpage for the
    fpm-cook
    command.

Getting Started

fpm-cookery is available as a gem.

$ gem install fpm-cookery

Create a recipe directory or change into an existing recipe tree.

$ cd recipes/redis
$ fpm-cook clean
$ fpm-cook

You can install the development dependencies with

bundle install
and run the included test suite with
rake test
.

Status

It can build the included

recipes/redis/recipe.rb
and
recipes/nodejs/recipe.rb
recipes. (both imported from brew2deb) See CAVEATS for an incomplete list of missing stuff.

Example Recipe

The following is an example recipe. I have some more in my recipe collection over here.

    class Redis < FPM::Cookery::Recipe
      homepage 'http://redis.io'
      source   'http://redis.googlecode.com/files/redis-2.2.5.tar.gz'
      md5      'fe6395bbd2cadc45f4f20f6bbe05ed09'

  name     'redis-server'
  version  '2.2.5'
  revision '1'

  description 'An advanced key-value store.'

  conflicts 'redis-server'

  config_files '/etc/redis/redis.conf'

  def build
    make

    inline_replace 'redis.conf' do |s|
      s.gsub! 'daemonize no', 'daemonize yes'
    end
  end

  def install
    # make :install, 'DESTDIR' =&gt; destdir

    var('lib/redis').mkdir

    %w(run log/redis).each {|p| var(p).mkdir }

    bin.install ['src/redis-server', 'src/redis-cli']

    etc('redis').install 'redis.conf'
    etc('init.d').install 'redis-server.init.d' =&gt; 'redis-server'
  end
end

CAVEATS

  • At the moment, there's only a small subset of the homebrew DSL implemented.
  • No recipe documentation and API documentation yet.
  • No recipe validation yet.
  • No dependency validation yet.
  • Pretty new and not well tested.

Credits

fpm-cookery borrows lots of ideas and also code from the homebrew and brew2deb projects.

License

The BSD 2-Clause License - See LICENSE for details

How To Contribute

  • I'd love to hear if you like it, hate it, use it and if you have suggestions and/or problems.
  • Send pull requests. (hugs for topic branches and tests)
  • Have fun!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.