summaryrefslogtreecommitdiff
path: root/ruby.md
diff options
context:
space:
mode:
Diffstat (limited to 'ruby.md')
-rw-r--r--ruby.md145
1 files changed, 145 insertions, 0 deletions
diff --git a/ruby.md b/ruby.md
new file mode 100644
index 0000000..077aedc
--- /dev/null
+++ b/ruby.md
@@ -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.