Skip to content

[lumi-container-wrapper] [package list]

lumi-container-wrapper/0.2.2-cray-python-3.9.4.2 (lumi-container-wrapper-0.2.2-cray-python-3.9.4.2.eb)

This software is archived in the LUMI-SoftwareStack GitHub repository as easybuild/easyconfigs/__archive__/l/lumi-container-wrapper/lumi-container-wrapper-0.2.2-cray-python-3.9.4.2.eb. The corresponding module would be lumi-container-wrapper/0.2.2-cray-python-3.9.4.2.

easyblock = 'Binary'

local_LUMI_version =        '21.12'
local_craypython_version =  '3.9.4.2'

name =          'lumi-container-wrapper'
version =       '0.2.2'
versionsuffix = '-cray-python-' + local_craypython_version

homepage = 'https://github.com/CSCfi/hpc-container-wrapper'

whatis = [
    'Description: Tool for wrapping a software environment in an Apptainer/Singularity containerm, also know as tykky.'
]

description = """
The lumni-container-wrapper module provides a tool to create Conda and
Python package installations using an existing container. The basic idea is to
nstall software through a container, convert this into a filesystem image and
mount this filesystem image when running the container.

The main goal is to reduce the number of files on disk, and reduce the IO load
when installations are started. If you are not running on a parallel filesystem
with a lot of users and load, these points might not be that relevant. Tykky
is developed and tested only on Lustre (the filesystem used on LUMI) so benefits
might be different on other parallel filesystems.

The tool originally started as a way to package conda installations using container,
as they cause a significant load on the filesystem. The idea being that using the
tool should be very simple and as similar as possible to an un-containerized
installation (drop in replacement for the majority of cases). This means that we
try to hide the container as much as possible from the end-user.

This version of the module will use cray-python/%(craypython_ver)s, the default version
for this LUMI/%(lumi_stack)s stack. This version of cray-python will be uninstalled when
the LUMI/%(lumi_stack)s stack and the corresponding Cray Programming Environment version
%(lumi_stack)s is removed, so if you use the wrapper with pip-containerize to build a
Python installation on top of the LUMI Python installations, you will have to 
rebuild the wrapper at that time. To that end the requirements.txt file is saved 
in the share subdirectory of the directory in which you created the wrapper.

The tool is developed by Henrik Nortamo at CSC and known on the Finnish national
systems as tykky.
""" % {
    'lumi_stack':     local_LUMI_version,
    'craypython_ver': local_craypython_version
}

usage = """
Initialize new conda environment:

  conda-containerize new --prefix /path/to_install conda_env.yaml

Update already existing environment:

  conda-containerize update --post-install post.sh /path/to_install

Initialize new python environment with pip requirements to install:

  pip-containerize new --prefix /path/to_install req.txt

To start your environment simply run the program from bin/ subdirectory of the installation directory.
"""

docurls = [
    'Web-based documentation on https://docs.lumi-supercomputer.eu/computing/containers/tykky/'
]

toolchain = SYSTEM

sources = [{
#    'download_filename': 'v%(version)s.tar.gz',
#    'source_urls':       ['https://github.com/CSCfi/hpc-container-wrapper/archive/refs/tags']
    'filename':          '%(namelower)s-%(version)s.tar.gz',
    'git_config': {
        'url':       'https://github.com/CSCfi',
        'repo_name': 'hpc-container-wrapper',
        'tag':       'v%(version)s'
    },
    'extract_cmd': 'tar --strip-components=1 -xf %s'
}]

dependencies = [
    ('cray-python/' + local_craypython_version, EXTERNAL_MODULE),
]

extract_sources = 'True'

buildininstalldir = 'True'

install_cmd = 'bash install.sh lumi'

sanity_check_paths = {
    'files': ['bin/conda-containerize', 'bin/pip-containerize'],
    'dirs':  ['bin', 'frontends'],
}

moduleclass = 'tools'

[lumi-container-wrapper] [package list]