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 we have 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` needs to be packaged: * base32 * command_line_reporter * gli * json_pure * leap_cli * mini_portile * tee * ya2yaml In summary, we need to port the following `$new_packages`: * ruby-base32 * ruby-command-line-reporter * ruby-gli * ruby-json-pure (we can just use ruby-json and ignore this dependency) * ruby-mini-portile * ruby-tee * ruby-ya2yaml * ruby-leap-cli Build remaining packages: for gem in $gems; do gem2deb $gem done Getting the source for the existing packages: for package in $already_ported; do apt-get -t jessie source --download-only $package dpkg-source -x $package*dsc done Next steps: * Fix `debian/control` and other `FIXME` on each package. * Put `debian/` folder in a `debian` branch on each source. * Fix [tests](https://wiki.debian.org/Teams/Ruby/Packaging/Tests). * [Other best practices](https://wiki.debian.org/Teams/Ruby/RubyExtras/UpstreamDevelopers). * [Review the code](https://manual.sarava.org/specs/code/). * Automate building with pbuilder for `sid`. * Fix lintian warnings. * Upstream pull requests. * Backport everything to `wheezy`. Per-package tasks: * ruby-faker * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765124 * https://github.com/rails/rails/issues/13164 * ruby-json-pure: * https://bugzilla.redhat.com/show_bug.cgi?id=616779 * https://bugs.launchpad.net/ubuntu/+source/ruby-json-pure/+bug/1026049 * http://rpmfind.net/linux/RPM/mandriva/devel/cooker/ppc/media/contrib/release/rubygem-json_pure-1.5.1-2.noarch.html * https://groups.google.com/a/cloudfoundry.org/forum/#!topic/vcap-dev/sqGizxEKEjs A preparar para desempacotar .../ruby-json_1.8.1-1+b2_amd64.deb ... A descompactar ruby-json (1.8.1-1+b2) ... dpkg: erro ao processar o arquivo /var/cache/apt/archives/ruby-json_1.8.1-1+b2_amd64.deb (--unpack): a tentar sobre-escrever '/usr/lib/ruby/vendor_ruby/json.rb', que também está no pacote ruby-json-pure 1.8.1-1 dpkg-deb (sub-processo): a descomprimir membro do arquivo: erro de escrita de lzma: Pipe quebrado dpkg-deb: erro: sub-processo retornou estado de saída de erro 2 Erros foram encontrados durante o processamento de: /var/cache/apt/archives/ruby-json_1.8.1-1+b2_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)