Ruby packaging ============== See [this](https://wiki.debian.org/Teams/Ruby/Packaging). Example: packaging leap_cli and dependencies -------------------------------------------- First, in a *fresh* vagrant box with *sid* and *testing* in the `sources.list`: sudo apt-get install rubygems gem2deb sudo gem install leap_cli Then we get the dependencies and build all packages: dependencies=" `gem list | cut -d '(' -f 1` " Which currently gives us the following result: * activemodel * activesupport * base32 * blockenspiel * builder * capistrano * colored * command_line_reporter * gli * gpgme * highline * i18n * json * json_pure * leap_cli * mini_portile * minitest * net-scp * net-sftp * net-ssh * net-ssh-gateway * paint * tee * thread_safe * tzinfo * versionomy * ya2yaml Gem cleanup: sudo gem uninstall $dependencies Check existing dependencies: for item in $dependencies; do package=ruby-"`echo $item | sed -e 's/_/-/'`" packages="$packages $package" done apt-get install --dry-run $packages Then: * Check for non-existing packages. * Try different package names. * Update your list of existing packages. In this example, that gives us the following already ported dependencies: * capistrano * ruby-activemodel * ruby-activesupport * ruby-blockenspiel * ruby-builder * ruby-colored * ruby-gpgme * ruby-highline * ruby-i18n * ruby-json * ruby-minitest * ruby-net-scp * ruby-net-sftp * ruby-net-ssh * ruby-net-ssh-gateway * ruby-paint * ruby-thread-safe * ruby-tzinfo * ruby-versionomy That means the following gems need to be packaged: * base32 * command_line_reporter * gli * json_pure * leap_cli * mini_portile * tee * ya2yaml In summary, we need to port the following packages: * ruby-base32 * ruby-command-line-reporter * ruby-gli * ruby-json-pure * ruby-leap-cli * ruby-mini-portile * ruby-tee * ruby-ya2yaml Build remaining packages: for gem in $gems; do gem2deb $gem done Report: echo "Existing debian dependencies: $packages" echo "New packages : $dependencies" Test: sudo dpkg -i *deb Deb cleanup: sudo dpkg -r $dependencies Additional steps: * Backport existing dependencies if needed. * Fix `debian/control` and other FIXME's on each package. * Put `debian/` folder in a `debian` branch on each source. * [Review the code](https://manual.sarava.org/specs/code/). * Automate building with pbuilder. * Upstream pull requests.