summaryrefslogtreecommitdiff
path: root/docs/packaging/custom/leap.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/packaging/custom/leap.md')
-rw-r--r--docs/packaging/custom/leap.md147
1 files changed, 147 insertions, 0 deletions
diff --git a/docs/packaging/custom/leap.md b/docs/packaging/custom/leap.md
new file mode 100644
index 0000000..cd657c9
--- /dev/null
+++ b/docs/packaging/custom/leap.md
@@ -0,0 +1,147 @@
+# Example: packaging leap_cli and dependencies
+
+Upstream: https://leap.se/code/issues/6503
+
+## Determine 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 (we can just use ruby-json and ignore this dependency)
+* 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-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-leap-cli:
+ * net-ssh compatibility:
+ * https://github.com/net-ssh/net-ssh/issues/145
+ * https://github.com/capistrano/capistrano/issues/927
+ * workflow:
+
+ git checkout develop
+ git archive --prefix=leap-cli-1.5.6/ --format=tar HEAD | bzip2 > ../tarballs/leap-cli-1.5.6.tar.bz2
+ git checkout debian
+ git-buildpackage --git-ignore-branch