summaryrefslogtreecommitdiff
path: root/ruby.md
blob: f53b375f3429c0d2cf81403e5a21d7176ed11c95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Ruby packaging
==============

See [this](https://wiki.debian.org/Teams/Ruby/Packaging).

Example: packaging leap_cli and dependencies
--------------------------------------------

First, in a *fresh* vagrant box:

    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` "

Gem cleanup:

    sudo gem uninstall $dependencies

Check existing dependencies:

    for item in $dependencies; do
      package=ruby-"`echo $item | sed -e 's/_/-/'`"

      if apt-cache search $package &> /dev/null; then
        packages="$packages $package"
        dependencies=$(echo $dependencies | sed -e "s/ $package //")
        sudo apt-get install $package
      fi
    done

Build remaining packages:

    for gem in $dependencies; 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.