diff options
Diffstat (limited to 'docs/packaging/custom/leap.md')
-rw-r--r-- | docs/packaging/custom/leap.md | 147 |
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 |