Skip to content

An issue with var_type in modextrapaths on LUMI #5147

@klust

Description

@klust

Consider the easyconfig

easyblock = 'Bundle'

name = 'singularity-slurm-bindings'
version = '3.0.0'

description = """Just a little testJust a little test."""

homepage = '()'

toolchain = SYSTEM

env_mod_extra_paths = {
    'SINGULARITY_BIND': {
        'paths': ['/pfs', '/scratch', '/appl'],
        'delimiter': ',',
        'prepend': False,
        #'var_type': 'STRING',
        #'var_type': 'PATH',
    }
}

env_mod_category = 'tools'

referring to 3 filesystems on LUMI.

Issue 1 When running this easyconfig as is, I get the module file

help([==[

Description
===========
Just a little testJust a little test.


More information
================
 - Homepage: ()
]==])

whatis([==[Description: Just a little testJust a little test.]==])
whatis([==[Homepage: ()]==])
whatis([==[URL: ()]==])

local root = "/users/kurtlust/LUMI-user/SW/container/singularity-slurm-bindings/3.0.0"

conflict("singularity-slurm-bindings")

append_path("SINGULARITY_BIND", "/pfs", ",")
append_path("SINGULARITY_BIND", "/appl", ",")
setenv("EBROOTSINGULARITYMINSLURMMINBINDINGS", root)
setenv("EBVERSIONSINGULARITYMINSLURMMINBINDINGS", "3.0.0")
setenv("EBDEVELSINGULARITYMINSLURMMINBINDINGS", pathJoin(root, "easybuild", "singularity-slurm-bindings-3.0.0-easybuild-devel"))

-- Built with EasyBuild version 5.2.1

so the line for /scratch is missing. The issue is not so much that it is missing, though I cannot see why it would be filtered out. Granted that on LUMI, those three directories are set up differently (/pfs is the base for Lustre, /appl is a symbolic link, but I'm not sure how /scratch is set up, probably some Lustre trick), but the main issue is that I get no warning in the screen output that something is wrong with /scratch and also cannot find anything in the log file about it being removed. The reason why /scratch is deleted may be LUMI-specific (though it could then happen on other systems with Lustre also), but the disturbing fact that there is no warning is likely not LUMI-specific.

It turns out that the issue is solved when using 'var_type': 'PATH', rather than the default value: The module is now what I would expect:

help([==[

Description
===========
Just a little testJust a little test.


More information
================
 - Homepage: ()
]==])

whatis([==[Description: Just a little testJust a little test.]==])
whatis([==[Homepage: ()]==])
whatis([==[URL: ()]==])

local root = "/users/kurtlust/LUMI-user/SW/container/singularity-slurm-bindings/3.0.0"

conflict("singularity-slurm-bindings")

append_path("SINGULARITY_BIND", "/pfs", ",")
append_path("SINGULARITY_BIND", "/scratch", ",")
append_path("SINGULARITY_BIND", "/appl", ",")
setenv("EBROOTSINGULARITYMINSLURMMINBINDINGS", root)
setenv("EBVERSIONSINGULARITYMINSLURMMINBINDINGS", "3.0.0")
setenv("EBDEVELSINGULARITYMINSLURMMINBINDINGS", pathJoin(root, "easybuild", "singularity-slurm-bindings-3.0.0-easybuild-devel"))

-- Built with EasyBuild version 5.2.1

But this brings me to the issue 2. My first idea was to set 'var_type': 'STRING' as I was hoping that the three directories would then just be treated as strings and no tests would be run. But this is not what happens: Now no append_path lines are generated at all:

help([==[

Description
===========
Just a little testJust a little test.


More information
================
 - Homepage: ()
]==])

whatis([==[Description: Just a little testJust a little test.]==])
whatis([==[Homepage: ()]==])
whatis([==[URL: ()]==])

local root = "/users/kurtlust/LUMI-user/SW/container/singularity-slurm-bindings/3.0.0"

conflict("singularity-slurm-bindings")

setenv("EBROOTSINGULARITYMINSLURMMINBINDINGS", root)
setenv("EBVERSIONSINGULARITYMINSLURMMINBINDINGS", "3.0.0")
setenv("EBDEVELSINGULARITYMINSLURMMINBINDINGS", pathJoin(root, "easybuild", "singularity-slurm-bindings-3.0.0-easybuild-devel"))

-- Built with EasyBuild version 5.2.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions