ESSS/deps

`TypeError` in `get_shallow_dependencies` When `includes` are Empty

Closed this issue · 2 comments

When trying to run SimBR in package mode, it check my environment and if it's package mode, the include stay empty, as example:

{% set DEVELOP = os.environ.get('ESSS_SIMBR_DEVELOP', '0') != '0' %}
name: hookman

includes:
  {% if DEVELOP %}
  - {{ root }}/../../hookman/environment.devenv.yml
  {% endif %}

dependencies:
  - invoke
  {% if not DEVELOP %}
  - python-hookman == 0.2.0
  {% endif %}

environment:
  PYTHONPATH:
    - {{ root }}/source/python

Fixed temporarily with:

{% if DEVELOP %}
includes:
  - {{ root }}/../../hookman/environment.devenv.yml
{% endif %}

This is the stack trace from CI:

Traceback (most recent call last):
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\Scripts\deps-script.py", line 10, in <module>
    sys.exit(main_func())
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 929, in main_func
    return cli(auto_envvar_prefix='DEPS')
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 836, in cli
    root_deps = obtain_all_dependecies_recursively(directories, ignore_project, skip_project)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 277, in obtain_all_dependecies_recursively
    add_deps_from_directories(root_directories, root_deps)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 270, in add_deps_from_directories
    add_deps_from_directories(current_dep_directories, dep.deps)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 270, in add_deps_from_directories
    add_deps_from_directories(current_dep_directories, dep.deps)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 269, in add_deps_from_directories
    dep_directory, dep_env_filename)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 70, in wrapper
    ret = cache[key] = fun(*args, **kwargs)
  File "W:\Miniconda\envs\_simbr20gui-win64-py36\lib\site-packages\deps\deps_cli.py", line 101, in get_shallow_dependencies
    includes = [os.path.abspath(p) for p in data['includes']]
TypeError: 'NoneType' object is not iterable
Build step 'Execute Windows batch command' marked build as failure

https://eden.esss.com.br/jenkins/job/simbr-fb-SIMBR-1809-etk-simbr-32-package-win64/2/console

It really surprises me that adding a non file path item to includes does not break other things.
As a work around I will suggest doing:

{% if DEVELOP %}
includes:
  - {{ root }}/../../hookman/environment.devenv.yml
{% endif %}

but if your way work I am happy you found a temporary work around.

@prusse-martin actually that original solution did not work (it was a brain fart on my part), and your suggestion is what we did yesterday in the end. 👍

EDIT: updated the original post with the correct solution. 👍