diff options
Diffstat (limited to 'ruby.md')
-rw-r--r-- | ruby.md | 145 |
1 files changed, 145 insertions, 0 deletions
@@ -0,0 +1,145 @@ +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 $packages" + 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-base32 +* ruby-blockenspiel +* ruby-builder +* ruby-colored +* ruby-command-line-reporter +* ruby-gli +* ruby-gpgme +* ruby-highline +* ruby-i18n +* ruby-json +* ruby-json-pure +* ruby-leap-cli +* ruby-mini-portile +* ruby-minitest +* ruby-net-scp +* ruby-net-sftp +* ruby-net-ssh +* ruby-net-ssh-gateway +* ruby-paint +* ruby-tee +* ruby-thread-safe +* ruby-tzinfo +* ruby-versionomy +* ruby-ya2yaml + +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. |