Skip to content
Eric Pailleau edited this page Jun 6, 2020 · 21 revisions

Output can be tuned depending some environment variables

Note : Since version 2.6, environment variables GEAS_* can be set in rebar.config in minuscule atoms, without geas_ prefix, for plugin. For example : GEAS_RANGE=">=19.2 <21.3" can be written as {geas, [{range, ">=19.2 <21.3"}]}. Boolean values can be Erlang boolean.

Using source code

Since version 2.0.4, in order to be able to know what Erlang release(s) can compile a project, geas can use source files.

As well, starting this version, geas use source file, if available, as fallback when abstract code cannot be extracted from beam file.

Simply set GEAS_USE_SRC=1 as environment variable. (Unset or set GEAS_USE_SRC=0 to come back to default).

Listing possible releases

Starting version 2.0.5, environment variable GEAS_MY_RELS allow to specify only local releases available. It is a blank separated list of official Erlang release names.

If set, plugin will display the local releases that can compile and run the project.

if set empty, i.e GEAS_MY_RELS="", plugin will display the whole release list included in the computed release window.

Tip : this variable can be automatically set from kerl output :

export GEAS_MY_RELS=`kerl list builds | cut -d ',' -f 2 | tr '\n' ' '`

Exclude some releases

Alternatively, environment variable GEAS_EXC_RELS allow to exclude release(s) from computed release window. It is a blank separated list of official Erlang release names.

Discard some releases

Starting version 2.0.6, Geas will automatically exclude some notoriously buggy Erlang releases if some module/function/arity are concerned. For now only R16B03 with syntax_tools. Set GEAS_DISC_RELS to 1 in order to show discarded releases on output. A big work is to be done to collect Bohrbugs in all Erlang release README (help would be appreciated !).

Log informations

Starting version 2.0.6, environment variable GEAS_LOG allow to display analyze logs. It is a blank separated list of log levels : debug notice warning error .

Since 2.0.14 another log level tip is available and give more informations on why patche is recommended. As well since this version, log level notice give the list of erlang application used in the global project.

If set, plugin will display logs matching log levels before compat result.

if set empty, i.e GEAS_LOG="", plugin will display all logs.

Tips

Starting version 2.0.14, environment variable GEAS_TIPS=1 allow to display tag R with recommended patches list that are not installed in current Erlang release. Only 'useful' patches are proposed if project code is using an application/module impacted by a non installed patche.

See also log level tip.

SEMVER Frame

Starting version 2.6, environnement variable GEAS_FRAME allow to set a Semver syntax frame for your project. Plugin will exit non zero in case of error (exit code 2 for erlang.mk and 5 for rebar3).

Check will be OK if all the official releases inside semver frame are in the computed release window.

This mean that check will be OK if project window is equal or larger than the Semver frame.

For instance :

T = R16B R16B01 R16B02 R16B03 R16B03-1 17.0 17.1 17.3 17.4 17.5 18.0 18.1

OK if GEAS_FRAME=">=17 <=18.0"

Failure if GEAS_FRAME=">=17.0 <19.0"

To be used to guarantee that the project is able to run inside a release frame. See next variable to impose a range.

This feature can be used in CI tools scripts in order to check non regression in Release window by introducing some code.

See also Behavior difference between range and frame

SEMVER Range

Starting version 2.5, environment variable GEAS_RANGE allow to set a semver syntax range for your project. Plugin will exit non zero in case of error (exit code 2 for both erlang.mk and rebar3).

Check will be OK if all the releases compatibles (Release list in tags L or T) are in the range.

For instance :

T = R16B R16B01 R16B02 R16B03 R16B03-1 17.0 17.1 17.3 17.4 17.5 18.0 18.1

OK if GEAS_RANGE=">=R16 <18.2"

Failure if GEAS_RANGE=">=17.0 <18.0"

This feature can be used in CI tools scripts in order to check non regression in Release window by introducing some code.

See also Behavior difference between range and frame