Skip to content
Eric Pailleau edited this page Jan 13, 2016 · 7 revisions

How use it ?

Geas project is needed, but only as build tool and usually not in your relx release.

In your Makefile including erlang.mk, simply add :

BUILD_DEPS = geas
DEP_PLUGINS = geas

Usage

To perform all geas plugins, run the following command:

$ make geas

Example on a test project using cowboy :

   R15                   18.1       Geas database
---Min--------Arch-------Max----------------------------------------------------
   R15B01                           cowboy
                                    cowlib
                                    ranch
                                    test
--------------------------------------------------------------------------------
   R15B01                18.1       Global project

/home/eric/git/test/deps/cowboy/ebin/cowboy_websocket.beam
R15B01    crypto:hash/2

The global project can run starting R15B01 up to higher reference in geas database, 18.1 in such case.

First part table is the compatibility analyze of all elements of the project against geas database. This can be done alone by :

$ make geas_compat

Second part is a detailed information on which beam files are the cause of the release window reduction. It gives the offending function and it’s associated start (or stop) erlang release version.

This can be done alone by :

$ make geas_guilty
Note

As far Geas is using beam files, by default, compilation of source files will be done if necessary.

Limitations

Warning
Geas ignore beam files where abstract code is not available. This may imply to not detect a break in the computed release window. However since version 2.0.3, geas extract abstract code from source file in such case, if available, as fallback.
Caution
Geas does not guarantee that your project will run correctly on the whole release window

Some reasons :

  • Bugs may exists in older release, but fixed in newer

  • Returned values of some functions may have been changed, reduced or augmented in the release window

Clone this wiki locally