Skip to content

Issue with SYSTEM toolchain and float or int software versions in Easystack #3687

@tloizou

Description

@tloizou

We are trying to use Easystack for building software. We noticed some issues:

  1. Whenever a SYSTEM toolchain comes up and the software version is float (e.g. 2.32) or integer (e.g. 20150215) EB crashes.

You can find below examples from the Easystack file that break:

  binutils:
    toolchains:
      SYSTEM:
        versions: 
          2.32:
          2.30:
          2.35:
          2.34:
  Autotools:
    toolchains:
      SYSTEM:
        versions: 
          20150215:

In both cases, when using other toolchains e.g. GCCcore it works as expected. Only when there is a combination of the SYSTEM toolchain and the float or int version the issue occurs.

You can find below the error we are getting:

== 2021-05-19 10:25:11,710 easystack.py:223 INFO Building from easystack: 'easystack.yaml'
Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/nvme/h/buildsets/eb_cyclone/software/EasyBuild/4.3.4/lib/python3.6/site-packages/easybuild/main.py", line 544, in <module>
    main()
  File "/nvme/h/buildsets/eb_cyclone/software/EasyBuild/4.3.4/lib/python3.6/site-packages/easybuild/main.py", line 231, in main
    orig_paths, general_options = parse_easystack(options.easystack)
  File "/nvme/h/buildsets/eb_cyclone/software/EasyBuild/4.3.4/lib/python3.6/site-packages/easybuild/framework/easystack.py", line 228, in parse_easystack
    easyconfig_names = easystack.compose_ec_filenames()
  File "/nvme/h/buildsets/eb_cyclone/software/EasyBuild/4.3.4/lib/python3.6/site-packages/easybuild/framework/easystack.py", line 59, in compose_ec_filenames
    'versionsuffix': sw.versionsuffix,
  File "/nvme/h/buildsets/eb_cyclone/software/EasyBuild/4.3.4/lib/python3.6/site-packages/easybuild/tools/module_naming_scheme/utilities.py", line 63, in det_full_ec_version
    ecver = ''.join([x for x in [ec.get('versionprefix', ''), ecver, ec.get('versionsuffix', '')] if x])
TypeError: sequence item 0: expected string, float found
  1. Another issue comes up when the software version is float with zero at the end. For example 2019.10 or 9.50. Whenever we have such version EasyBuild is looking for 2019.1 or 9.5 and crashes. For example we have:
 Ghostscript:
    toolchains:
      GCCcore-8.3.0:
        versions:
          9.50:

EasyBuild is looking for Ghostscript version 9.5 instead of 9.50 and we get a missing config error.

  1. EasyBuild ignores the "_" in the version. For example:
  XML-Parser:
    toolchains:
      GCCcore-8.3.0:
        versions:
          2.44_01:
            versionsuffix: '-Perl-5.28.0'

EB is looking for XML-Parser-2.4401-GCCcore-8.3.0-Perl-5.28.0.eb instead of XML-Parser-2.44_01-GCCcore-8.3.0-Perl-5.28.0.eb

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug reporteasystackIssues and PRs related to easystack files

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions